Сожалею, что сообщаю вам, что это как раз наоборот. Оболочке необходимо сначала открыть свой ввод-вывод, а затем передать управление программе.
tee
может оказаться полезным в этом случае: ./ write_file.py | tee -a ~ root / log> / dev / null
Если вы все равно читаете из /dev/input/eventX
, просто выполните EVIOCGRAB
ioctl для него. Вы можете легко выполнять ioctl в Perl . Не забудьте отпустить захват, когда ваша программа завершит работу.
Захват не позволит всем другим устройствам, включая X, считывать события с этого устройства.
Это чище, чем xinput
, потому что вы также исключаете другие приложения, которые могут захотеть читать напрямую с устройства, и вы также можете контролировать продолжительность исключения (, пока работает ваше приложение ).
Вы можете отключить устройства ввода под X с помощью команды xinput
. Запустите xinput list
, чтобы получить список доступных устройств, затем xinput disable …
, чтобы отключить устройство по имени или номеру.
Udev, вероятно, лучший способ, но X11 — это то, что я знаю навскидку.