• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Mapování dálkového ovládání
#1
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ý:
 
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
V tomto případě mi jde hlavně o tuto část ve 2. řádku:
 
Kód:
b0005v0957p1001
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:
 
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
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:
 
Kód:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x508 product 0x110 version 0x110
Input device name: "GTMEDIA"
a napadlo mne, zda náhodou ona identifikace v hwdb souboru není odvozená právě od parametů v řádku Input device ID:
 
Kód:
bus 0x5 vendor 0x508 product 0x110 version 0x110
tedy:
 
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...
 
Citovat
#2
Pokročil jsem o krůček dále. Potvrdil se přepdoklad identifikace zařízení. Jen pozor, je tam jedna podmínka, pokud je v identifikaci číslice (hexa) >9, musí se psát velkými písmeny (tedy ABCDEF, ne abcdef). Je možné použít *, ? nebo[], dobře popsané je to v https://www.freedesktop.org/software/sys.../hwdb.html.

V *ELEC se uživatelsky definované definiční soubory *.hwdb umísťují do /storage/.config/hwdb.d. Uplatnění nové definice se provede sekvencí příkazů:
 
Kód:
udevadm hwdb --update
udevadm trigger -s input
reboot

Já jsem u dvou typů dálkových ovladaqčů (oba BT) dosáhl přemapování kláves tak, že evtest mi stiky přemapovaných tlačítek vrací nové kódy, ale pokud to zkouším v Kodi, tak tam k žádné změně nedochází. Takže víceméně neúspěch...

Čekám tedy, že se někdo znalý ozve a přispěje se svými zkušenostmi, zatímco já budu pátrat dál.

Takže jsem nakonec postoupil ještě dále a dostal se do stavu, kdy přemapované klávesy se v Kodi nakonec propagují. Měl jsem jednu chybu v  mapování, tu jsem opravil a rozjelo se to i v Kodi. V druhém případě, šlo o mapování KEY_MENU, se to ale stále nedařilo. Tak jsem se podíval, jak jsou mapované jiné DO (RF s USB dongel-em) a tam se tlačítko, které se nakonec v Kodi propaguje jako menu (tedy KEY_MENU), mapuje na compose (tedy KEY_COMPOSE). Zvláštní ale je, že nikde v Kodi nemohu najít definii relace že menu=compose. Ale tohle teď řešit nebudu.

Podobný problém ale mám stále s "barevnými tlačítky" (KEY_RED, KEY_GREEN, KEY_YELLOW, KEY_BLUE). Tam mi to zatím stále nefunguje a na rozdíl od předchozího porblému si to nemohu uvěřit u jiného DO, protože žádné takové s "barevnými tlačítky" nemám.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)