Temat: Czytanie z klawiatury USB za pomocą skryptu Python'owego

Hej

Mam klawiaturę bankomatową "Chesen Electronics Corp. PS/2 Keyboard+Mouse Adapter". Z tego co zdążyłem zauważyć to montuje się ona jako "/dev/input/event0".

root@OpenWrt:~# cat /proc/bus/input/devices
I: Bus=0003 Vendor=0a81 Product=0205 Version=0110
N: Name="CHESEN PS2 to USB Converter"
P: Phys=usb-1c1d400.usb-1/input0
S: Sysfs=/devices/platform/soc/1c1d400.usb/usb6/6-1/6-1:1.0/0003:0A81:0205.0003/input/input2
U: Uniq=
H: Handlers=sysrq kbd event0 
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff980000 7ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7

Jak w prosty sposób ograć czytanie z tej klawiatury za pomocą skryptu napisanego w Python 3? System jakiego używam to OpenWrt 19.07. Przy wyświetlaniu tego pliku za pomocą "cat" w terminalu dostaję krzaczki.

2

Odp: Czytanie z klawiatury USB za pomocą skryptu Python'owego

To jest klawiatura. W jaki sposób chcesz niby czytać ja w pythonie3? To nie od pythona zależy czy coś jest naciśnięte czy nie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Czytanie z klawiatury USB za pomocą skryptu Python'owego

Chodzi mi o to żebym mógł z poziomu skryptu zapuścić jakiegoś loopa/watchera żeby dowiedzieć się że ktoś naciska jakąś np. sekwencje i wykonać coś w skrypcie zależnie od sekwencji. Czyli pytanie czy jest jakiś prosty moduł pythonowy który wejdzie mi na OpenWrt 19.07 i ogarnie mi takie monitorowanie inputu z klawiatury?

4

Odp: Czytanie z klawiatury USB za pomocą skryptu Python'owego

Myślę że moduł keyboard po prostu zrobi to co chciałeś: https://stackoverflow.com/questions/240 … ey-presses

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Czytanie z klawiatury USB za pomocą skryptu Python'owego

Okazuje się że nie uda mi się wykorzystać tego modułu na OpenWrt 19.07.

/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py:110: UserWarning: Failed to create a device file using `uinput` module. Sending of events may be limited or unavailable depending on plugged-in devices.
  device = aggregate_devices('kbd')
Traceback (most recent call last):
  File "keyboard_reader.py", line 25, in <module>
    keyboard.hook(on_key_event)
  File "/usr/lib/python3.7/site-packages/keyboard/__init__.py", line 461, in hook
    append(callback)
  File "/usr/lib/python3.7/site-packages/keyboard/_generic.py", line 67, in add_handler
    self.start_if_necessary()
  File "/usr/lib/python3.7/site-packages/keyboard/_generic.py", line 35, in start_if_necessary
    self.init()
  File "/usr/lib/python3.7/site-packages/keyboard/__init__.py", line 196, in init
    _os_keyboard.init()
  File "/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py", line 114, in init
    build_tables()
  File "/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py", line 73, in build_tables
    dump = check_output(['dumpkeys', '--keys-only'], universal_newlines=True)
  File "/usr/lib/python3.7/subprocess.py", line 411, in check_output
  File "/usr/lib/python3.7/subprocess.py", line 488, in run
  File "/usr/lib/python3.7/subprocess.py", line 800, in __init__
  File "/usr/lib/python3.7/subprocess.py", line 1551, in _execute_child
FileNotFoundError: [Errno 2] No such file or directory: 'dumpkeys': 'dumpkeys'

Brakuje mu narzędzia "dumpkeys", zawierać go powinien moduł "kbd", ale nie znajduje mi go w repozytorium dla mojej wersji OpenWrt. Nie wiem czy próbować to jakoś obejść czy jest jeszcze jakaś sprawdzona alternatywa?

6

Odp: Czytanie z klawiatury USB za pomocą skryptu Python'owego

Szukaj, może coś znajdziesz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.