Я пытаюсь захватить ввод клавиатуры/мыши linux, и я читаю события, как /dev/input/event2
. Но кажется, что ввод иногда направляется на /dev/input/event2
, иногда на /dev/input/event3
. Интересно, есть ли место, где я могу узнать, какой из потоков имеет вход?
Как я могу узнать, какой из /dev/input/eventX (X = 0..7) имеет поток ввода Linux?
Ответ 1
Просто наткнулся на это - довольно поздно.
Вы можете узнать имена и другие атрибуты разных устройств, используя:
cat /proc/bus/input/devices
Ответ 2
Использование evtest очень полезно. Он может отображать все ваши устройства ввода по имени и позволяет отслеживать события каждого устройства.
Ответ 3
Чтобы узнать, перейдите к /dev/input/by-id
или /dev/input/by-path
и выполните
ls -l
, чтобы узнать, какая символьная ссылка указывает на event<*>
.
Кроме того, я думал, что было бы полезно всем, кто попадает на эту страницу, чтобы найти это полезное ссылка в некоторый код, который захватывает события клавиатуры.
Ответ 4
Запустите это в терминале, он будет работать нормально:
cat /proc/bus/input/devices | awk '/keyboard/{for(a=0;a>=0;a++){getline;{if(/kbd/==1){ print
$NF;exit 0;}}}}'
Ответ 5
Я знаю, что немного поздно ответить, но надеюсь, что это полезно для друзей.
"mice" содержит входные данные мыши, но чтобы найти файл, связанный с клавиатурой, нам нужно проверить файлы в папке "by-path", имена файлов клавиатуры заканчиваются на "event-kbd". Нам нужно найти ссылки на клавиатуры, а затем мы можем найти файл событий клавиатуры. Следующие команды могут сделать это автоматически для нас:
kbdEvents=($(ls /dev/input/by-path | grep "event-kbd"))
for forCounter in "${kbdEvents[@]}"
do
eventFile=$(readlink --canonicalize "/dev/input/by-path/${forCounter}")
# do anything ...
done
Этот код является частью кода для перерыва на моем личном сайте: mazKnez.com