Je suis en train d'écrire un programme qui doit interroger les touches du clavier à des moments précis, et plutôt que de passer par l'effort d'écrire mon propre cours de vote par clavier, je pensais utiliser Classe de clavier intégrée de JInput.Utilisation de claviers dans JInput sans privilèges root
Cela fonctionne parfaitement quand j'exécute mon programme en tant que root (je cours sous Ubuntu 10.10) mais il ne détecte même pas le fait que le clavier existe lorsqu'il est exécuté en tant qu'utilisateur normal. Je reçois la sortie d'erreur suivant:
Nov 29, 2010 2:08:50 PM net.java.games.input.DefaultControllerEnvironment getControllers
INFO: Loading: net.java.games.input.LinuxEnvironmentPlugin
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event11): Failed to open device /dev/input/event11 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event10): Failed to open device /dev/input/event10 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event9): Failed to open device /dev/input/event9 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event8): Failed to open device /dev/input/event8 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event7): Failed to open device /dev/input/event7 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event6): Failed to open device /dev/input/event6 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event5): Failed to open device /dev/input/event5 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event4): Failed to open device /dev/input/event4 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event3): Failed to open device /dev/input/event3 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event2): Failed to open device /dev/input/event2 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event1): Failed to open device /dev/input/event1 (13)
Nov 29, 2010 2:08:50 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event0): Failed to open device /dev/input/event0 (13)
Quelqu'un at-il une expérience en utilisant des claviers à JInput ou des idées sur la façon de contourner ce donc je n'ai pas courir en tant que root? Merci!
La règle udev simple persisterait/dev/input/event * permissions. Je préfère créer un groupe spécial (par exemple, "entrée") et ensuite mettre quelque chose comme 'KERNEL ==" événement * ", NAME =" entrée /% k ", MODE =" 640 ", GROUP =" entrée "'/etc/udev/rules.d/99-evdev.rules –
@barti: Ahh, je voulais dire que les autorisations revenaient comme une bonne chose :-). Mais l'idée de mettre en sandbox les appareils dans un groupe est une bonne idée. Malheureusement, il semble que toutes ces solutions sont assez dégoûtantes pour quelqu'un qui veut juste jouer le jeu (je serais prudent d'installer quelque chose qui dit qu'il a besoin d'un accès sans entrave à mon clavier pendant que le programme fonctionne, qu'il soit ou non au premier plan ou non). –
@Mark: Ok, je vois Votre point maintenant (et je suis heureux, j'ai provoqué Votre commentaire, de toute façon) :) Tout se résume à type d'application: Je ne vois pas pourquoi le jeu devrait avoir accès à événements de clavier à l'échelle du système. D'un autre côté, le réglage des privilèges d'accès aux entrées est moins dangereux que le réglage du bit setuid ou de l'exécution du programme en tant que super utilisateur. Mais encore une fois, je peux manquer quelque chose :) –