14.4.2023, 11:09
(Tento příspěvek byl naposledy změněn: 14.4.2023, 11:11 uživatelem JiRo.
Důvod úpravy: Překlep
)
Máte někdo zkušenosti s definicí mapováním akcí vstupních zařízení v Linux?
Jsem Linux laik, a i když jsem si tuto problematiku nějak zběžně nastudoval, stále v tom hlavním tápu. O co mi jde. Rád bych si namapoval či přemapoval tlačítka bluetooth dálkového ovladače na úrovni systému. Aby bylo jasno hned na začátku, nejde mi tedy o mapování v Kodi!
Mám BT dálkový ovladač, kde mi některá tlačítka v Kodi vrací buď nesmyslné kódy (např. řada 4 barevných tlačítek vrací stejný kód) nebo kódy, které neodpovídají funkci tlačítka. V prvním případě tedy nemohu tlačítka vůbec používat, ve druhém případě by jejich přemapování v Kodi znamenalo poměrně velké množství dílčích mapování, do kterého se mi moc nechce. Myslím si tedy, že pokud bych přemapoval talčítka přímo na úrovni systému a přiřadil jim správné kódy hned tam, nemusel bych to řešit mapováním v Kodi. A pokud by se mi podařilo správně namapovat i ta 4 barevná tlačítka, získal bych další možnosti při jejich využití.
Pochopil jsem, že celé se to dá provést v definičním souboru typu hwdb, ale nebyl jsme si jist, jaký formát identifikace daného dálkového ovladače bych měl použít. Používám CoreELEC a tam jsem např. v souboru hwdb našel následující definici pro poměrně populární BT dálkový ovladač BuzzTV BT300/400, který je tomu mému, což je GT Combo od GT MEDIA (viz můj post), docela podobný:
V tomto případě mi jde hlavně o tuto část ve 2. řádku:
a to, jak ji definovat pro potřebu mapování mého dálkového ovladače.
Mezitím jsem si načetl, že vstupní zařízení dostupná v systému lze zjistit pomocí příkazu evtest. Použil jsem ho a skutečně v seznamu uviděl i mé, tedy GTMEDIA:
Pokud si tedy vyberu volbu 8, dostanu poměrně bohatý výpis, ve kterém jsou vidět pro Event typ 1 EV_KEY všechna potenciálně dostupná tlačítka. Co je zajímavé, že tam jsou i ta, která se v Kodi identifikují jedním stejným kódem. Ty bych tedy potřeboval přemapovat především. Když jsme procházel výpis, zaujal mě jeho začátek:
a napadlo mne, zda náhodou ona identifikace v hwdb souboru není odvozená právě od parametů v řádku Input device ID:
tedy:
Je tu někdo, kdo by mé úvahy mohl z vlastní zkušenosti potvrdit? Samozřejmě to vyzkouším, ale rád bych, abych v této části měl jasno a hlavně neudělal nějakou zásadní chybu. Je jasné, že by to asi žádné fatální následky mít nemělo, ale přeci jen, rád vím co dělám...
Jsem Linux laik, a i když jsem si tuto problematiku nějak zběžně nastudoval, stále v tom hlavním tápu. O co mi jde. Rád bych si namapoval či přemapoval tlačítka bluetooth dálkového ovladače na úrovni systému. Aby bylo jasno hned na začátku, nejde mi tedy o mapování v Kodi!
Mám BT dálkový ovladač, kde mi některá tlačítka v Kodi vrací buď nesmyslné kódy (např. řada 4 barevných tlačítek vrací stejný kód) nebo kódy, které neodpovídají funkci tlačítka. V prvním případě tedy nemohu tlačítka vůbec používat, ve druhém případě by jejich přemapování v Kodi znamenalo poměrně velké množství dílčích mapování, do kterého se mi moc nechce. Myslím si tedy, že pokud bych přemapoval talčítka přímo na úrovni systému a přiřadil jim správné kódy hned tam, nemusel bych to řešit mapováním v Kodi. A pokud by se mi podařilo správně namapovat i ta 4 barevná tlačítka, získal bych další možnosti při jejich využití.
Pochopil jsem, že celé se to dá provést v definičním souboru typu hwdb, ale nebyl jsme si jist, jaký formát identifikace daného dálkového ovladače bych měl použít. Používám CoreELEC a tam jsem např. v souboru hwdb našel následující definici pro poměrně populární BT dálkový ovladač BuzzTV BT300/400, který je tomu mému, což je GT Combo od GT MEDIA (viz můj post), docela podobný:
Kód:
# buzztv bt-300/bt-400 smart remote
evdev:input:b0005v0957p1001*
KEYBOARD_KEY_c0041=enter
KEYBOARD_KEY_c0040=c
KEYBOARD_KEY_70040=z
KEYBOARD_KEY_70041=esc
KEYBOARD_KEY_70042=t
KEYBOARD_KEY_70043=e
KEYBOARD_KEY_70044=o
KEYBOARD_KEY_70045=volumeup
KEYBOARD_KEY_70069=volumedown
Kód:
b0005v0957p1001
Mezitím jsem si načetl, že vstupní zařízení dostupná v systému lze zjistit pomocí příkazu evtest. Použil jsem ho a skutečně v seznamu uviděl i mé, tedy GTMEDIA:
Kód:
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: gpio_keypad
/dev/input/event1: cec_input
/dev/input/event2: input_btrcu
/dev/input/event3: adc_keypad
/dev/input/event4: ZY.Ltd ZY Control Mic
/dev/input/event5: ZY.Ltd ZY Control Mic
/dev/input/event6: meson-ir
/dev/input/event7: VNCServer SimKey
/dev/input/event8: GTMEDIA
Select the device event number [0-8]: 8
Kód:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x508 product 0x110 version 0x110
Input device name: "GTMEDIA"
Kód:
bus 0x5 vendor 0x508 product 0x110 version 0x110
Kód:
b05v0508p0110e0110
Je tu někdo, kdo by mé úvahy mohl z vlastní zkušenosti potvrdit? Samozřejmě to vyzkouším, ale rád bych, abych v této části měl jasno a hlavně neudělal nějakou zásadní chybu. Je jasné, že by to asi žádné fatální následky mít nemělo, ale přeci jen, rád vím co dělám...