Вместо запуска программы от имени пользователя root вы также можете выполнить
sudo chmod a+r /dev/input/event5
(или какое бы устройство ни указывало на вашу клавиатуру). Однако вам решать, какой из них более безопасен для ваших целей.Я думаю, но не уверен, что разрешения будут восстановлены после перезапуска.
Мне так и не удалось заставить работать адаптер клавиатуры JInput в Ubuntu, не запустив приложение от имени пользователя root и не выполнив вышеуказанное.Возможно, это не тот ответ, который вам нужен, но он по крайней мере скажет вам, что вы не одиноки.
Очевидная причина, по которой устройство не может быть прочитано кем-либо, заключается в том, что непривилегированная программа (то есть кейлоггер)) не может просто прослушать весь ввод с клавиатуры в любой момент времени.Я думаю, что различные оконные системы работают в привилегированном режиме и затем контролируют доступ к данным клавиатуры для пользовательских программ.Если бы JInput прошел через этот слой, вам, вероятно, не потребовались бы специальные привилегии.
Редактировать
Поскольку это, казалось, работает для OP, я включу примечание barti_ddu здесь,В качестве альтернативы ручному изменению разрешений на устройстве клавиатуры, как я уже отмечал выше, вы также можете установить правило udev, чтобы эти разрешения устанавливались автоматически.Примечательно, что вы можете использовать его, чтобы установить группу для устройства (скажем, «input»), а затем запустить программу соответствующим образом.
Для этого потребуется добавить что-то вроде этого в /etc/udev/rules.d/99-evdev.rules
:
KERNEL=="event*", NAME="input/%k", MODE="640", GROUP="input"
Предупреждение: не проверено.