Оболочка Linux: опрос состояния кнопки клавиатуры - PullRequest
1 голос
/ 03 февраля 2010

У меня есть скрипт, который периодически выполняется в фоновом режиме. Я хочу предотвратить его выполнение, если нажата клавиша Shift .

Идея состоит в том, чтобы опросить состояние кнопки Shift на клавиатуре, и, если она нажата, - немедленно завершить сценарий.

Есть идеи? X-серверу разрешено использовать: думаю, это поможет.

UPD: Я сейчас использую этот глупый хак:

[ $( sh -c 'cat /dev/input/by-id/usb-*kbd & sleep 0.5 ; kill $! 2>/dev/null' | wc -c ) -gt 1 ] && exit 

Скрипт просто обнаруживает текущие события клавиатуры, но не различает их. 0.5sec - период просмотра kbd-событий. Не очень красиво, но все еще работает :)

1 Ответ

1 голос
/ 03 февраля 2010

Во-первых, вы можете отслеживать события нажатия клавиш вверх / вниз, но, насколько я знаю, невозможно определить, нажата ли клавиша в данный момент . Если ты в порядке с этим, тогда ...

Это означает, что прослушивание ключевого события должно выполняться в другом потоке. Скрипт оболочки должен порождать программу в фоновом режиме, которая прослушивает ключевые события и отправляет сигнал родительскому скрипту при нажатии клавиши. Вы можете использовать trap , чтобы ответить на сигнал, выйдя изящно.

Выезд KeyPress . Это может дать вам хорошее начало.

Вы также можете контролировать / dev / input / eventN . Этот модуль Perl может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...