Если вы все равно читаете из /dev/input/eventX
, просто выполните EVIOCGRAB
ioctl для него. Вы можете легко выполнять ioctl в Perl . Не забудьте отпустить захват, когда ваша программа завершит работу.
Захват не позволит всем другим устройствам, включая X, считывать события с этого устройства.
Это чище, чем xinput
, потому что вы также исключаете другие приложения, которые могут захотеть читать напрямую с устройства, и вы также можете контролировать продолжительность исключения (, пока работает ваше приложение ).
Судя по комментариям, есть
pcie_aspm=off
Строка в одном из файлов, который читает sysctl -p
. Это приводит к тому, чтоsysctl
пытается записать в/proc/sys/pcie_aspm
; если этого не существует (и не будет, это недопустимаяsysctl
запись , это параметр загрузки ядра ), вы получите сообщение об ошибке, указанное в вашем вопросе.
Параметр может не поддерживаться ядром из-за отсутствия подсистемы PciExpress.
Или также может быть отключен aspm pcie _.