Обнаружение удерживаемых клавиш с помощью xbindkeys

В общем, синтаксический анализ вывода lsне является хорошей идеей. Кроме того, вас, кажется, интересует только количество файлов, что делает ваш подход излишне сложным. Я бы предложил что-то в этом роде:

find -maxdepth 1 -printf "%TY-%Tm-%Td\n" | grep -c $(date -d "6 days ago" +'%Y-%m-%d')
2
30.10.2017, 23:06
1 ответ

Чтобы продолжить то, что вы в настоящее время разработали, вы можете использовать evemu пакет инструментов (s )для использования утилит evtestи evemu-event. Перечислите устройства ввода событий с помощью sudo evtestи найдите строку, соответствующую вашей клавиатуре. У меня есть специальная клавиатура, поэтому я получил:

/dev/input/event2:      HID 05f3:0007

Теперь выберите этот номер (2 в моем случае )и нажмите клавишу, которую вы хотите распознать (Alt для вас ). Я использовал сдвиг влево и получил

Event: time 15094562, -------------- SYN_REPORT ------------
Event: time 15094562, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time 15094562, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 1

Здесь мы видим, что я получил событие типа EV _KEY с кодом KEY _LEFTSHIFT, получающее значение 1 при нажатии клавиши Shift и аналогичное событие со значением 0 при ее отпускании.

Теперь вы можете просто запросить состояние этого ключа в любое время, например, после chvt. Используйте, в моем случае,

sudo evtest --query  /dev/input/event2 EV_KEY KEY_LEFTSHIFT

Код возврата этой команды — 0, если значение равно 0, и 10, если значение равно 1. Вы можете использовать echo $?, чтобы отобразить это значение.

Зная состояние ключа,теперь вы можете эмулировать событие нажатия клавиши, чтобы сервер X11 видел «текущее» состояние. В моем случае я бы сделал

sudo evemu-event /dev/input/event2 --type EV_KEY --code KEY_LEFTSHIFT --value 1

Как вы понимаете, возможно, существует более простое решение исходной проблемы. Вместо того, чтобы использовать xbindkeysи решить эту проблему здесь, вы можете найти другое решение, используя libevent. Примеры на C есть в Linux USB Input Subsystem и , часть 2 в Linux Journal. В вашей системе может быть библиотека Python evdev , чтобы упростить эту задачу.

1
27.01.2020, 22:18

Теги

Похожие вопросы