1 (edytowany przez mesmariusz 2023-02-20 00:13:51)

Temat: Obsługa klawiatury numerycznej USB

Cześć.

Ostatnio bawiłem się w obsługę skanera wpiętego kablem do jednego z portów USB routera na OpenWRT i przyznam, że działa to rewelacyjnie. Super fajny skaner sieciowy zrobiony ze starego skanera dla którego nie było już sterownika dla Windowsów nowszych niż Vista. Teraz z użyciem sterownika Wiasane,  który jest klientem dla saned działa nawet na Windows 11 :-)

Teraz chciałbym sobie to oskryptować, i zrobić parę guzików, typu skanuj fakturę za gaz, skanuj fakturę za prąd i tak dalej, zupełnie z pominięciem jakiegokolwiek komputera.

Chcę, by każda faktura została zapisana do pliku z bieżącą datą i wylądowała w innej lokalizacji smb w zależności od przyciśniętego guzika.

Problem w tym, że routery tyle guzików nie mają i stąd pomysł, by podłączyć i jakoś magicznie obsłużyć taką klawiaturę w skrypcie, a dokładniej, powiązać naciśnięcie odpowiedniego klawisza na klawiaturze z uruchomieniem przypisanego mu skryptu .sh

Ktoś ma pomysł, jak to ogarnąć? Czy klawiatura będzie natywnie wspierana przez OpenWRT ?

Generalnie myślę o klawiaturze numerycznej, ale to pewnie bez znaczenia.

2

Odp: Obsługa klawiatury numerycznej USB

Klawiatura jest natywnie wspierania np. w x86. Ale np. triggerhappy: https://openrouter.info/forum/viewtopic … &t=813 może się nadać.

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

3

Odp: Obsługa klawiatury numerycznej USB

Cezary napisał/a:

Klawiatura jest natywnie wspierania np. w x86. Ale np. triggerhappy: https://openrouter.info/forum/viewtopic … &t=813 może się nadać.

Klawiatura numeryczna (wpięta do routera po USB) powinna być w jakikolwiek sposób widoczna w odpowiedzi na lsusb?

Dopytuję, bo OpenWrt wydaje się zupełnie tego urządzenia nie widzieć.

Przed wpięciem i po wpięciu jest to samo:

# lsusb
Bus 001 Device 004: ID 04a9:220e Canon CanoScan
Bus 002 Device 001: ID 1d6b:0003 Linux 5.10.146 xhci-hcd xHCI Host Controller
Bus 001 Device 001: ID 1d6b:0002 Linux 5.10.146 xhci-hcd xHCI Host Controller

4

Odp: Obsługa klawiatury numerycznej USB

cat /sys/kernel/debug/usb/devices

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=046d ProdID=c31c Rev=64.00
S:  Manufacturer=Logitech
S:  Product=USB Keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=82(I) Atr=03(Int.) MxPS=   4 Ivl=255ms

Podłączyłem K120. Jest widczona.

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

5

Odp: Obsługa klawiatury numerycznej USB

Dzięki.

No dobra, moją niby też widzi.

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=c0f4 ProdID=05e0 Rev= 1.10
S:  Manufacturer=SZH
S:  Product=usb keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=10ms

Teraz musze jakkolwiek połączyć akcję naciśnięcia wybranego klawisza z wykonaniem odpowiedniego skryptu sh.

6 (edytowany przez mesmariusz 2023-09-02 11:23:26)

Odp: Obsługa klawiatury numerycznej USB

Cezary, podpowiesz w jaki sposób zrestartować triggerhappy by zaczytał /etc/triggerhappy/triggers.d/example.conf ponownie?

Dodałem w tym konfigu akcję:

# This is an example configuration for the triggerhappy daemon (thd)
# please note that every file to be processed must end in ".conf"
#
# To view a list of supported event codes, use "thd --listevents" or
# "thd --dump /dev/input/event*"
#
# Format:
# <eventcode> <value> <command>
#
# values for key events are 1 (pressed), 0 (released) or 2 (held)
#
## control an mpd instance
# KEY_NEXTSONG          1       /usr/bin/mpc next
# KEY_PREVSONG          1       /usr/bin/mpc prev

KEY_KP1         1       /scripts/test.sh

Innymi słowy, chcę, by wykonała się akcja uruchomienia skryptu drukującego "test" do konsoli. Sam skrypt istnieje i działa:

# /scripts/test.sh
test

Natomiast naciskanie przycisku "1" na klawiaturze nie uruchamia tego skryptu.

Dodam, że sam mechanizm działa:

# thd --dump /dev/input/event*
EV_KEY  KEY_KP1 1       /dev/input/event0
# KEY_KP1       1       command
EV_KEY  KEY_KP1 0       /dev/input/event0
# KEY_KP1       0       command

Ale zdaje się, coś config nie może się zaczytać...

Chyba, że akcja drukowanie tekstu test po naciśnięciu przycisku na klawiaturze idzie w jakąś inną konsolę niż ta, do której jestm podpięty po SSH ?

7

Odp: Obsługa klawiatury numerycznej USB

No tak, nie widzisz tego. zamiast echo w skrypcie zrób "logger aaaa"  i przez logread patrz czy masz napis.

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

8

Odp: Obsługa klawiatury numerycznej USB

lepiej w test.sh daj coś w stylu: date >> /tmp/test.log