Похоже, вы пытаетесь получить информацию из более чем одного источника:
Вы указали x11 (который будет вашим экраном )а также указали /dev/video0 (который будет веб-камерой или другим устройством, таким как ТВ-тюнер)
Избавьтесь от -f v4l2 /dev/video0 в конце и добавьте имя файла с расширением, например, capture.mkv
Если вы планируете делать это на регулярной основе, я бы порекомендовал OBS
sudo add -apt -репозиторий ppa :obsproject/obs -студия sudo apt -получить обновление sudo apt -получить установку obs -студию
или см. ссылку здесь, если это не работает
https://www.ubuntupit.com/how-to-install-obs-screen-recorder-in-ubuntu-linux/
Клавиатуры должны в конечном итоге распознаваться как стандартные устройства HID (с интерфейсом пользователя )и отображаться как устройство в разделе /dev/input/
. Вы можете читать события с устройства с помощью evtest
, или с Python через библиотеку python -evdev . Могут быть и другие подобные библиотеки. Я не знаю о пакете для raspian, но для Fedora точно был пакет с именем python-evdev
.
evtest
без параметров отобразит список устройств и попросит вас выбрать одно из них для отслеживания событий. Вам, вероятно, потребуется использовать что-то вроде inotifywait
для поиска новых устройств, появляющихся в /dev/input/
. Библиотека Python также может перечислять и отслеживать устройства, но я не думаю, что она может обнаруживать новые устройства без опроса. Если вы запросите grab
устройство, никто другой не получит события.
Типичный вывод evtest
при нажатииenter
:
Event: time 1509452892.590022, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452892.590022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1509452892.590022, -------------- SYN_REPORT ------------
Event: time 1509452894.005980, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452894.005980, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1509452894.005980, -------------- SYN_REPORT ------------