web-dev-qa-db-fra.com

Modification du contrôle à distance (LIRC dans le noyau)

J'ai récemment reconstruit ma boîte MythTV avec Mythbuntu 12.04 pour tirer parti des nouveaux matériels (Ivy Bridge).

Sur ma version précédente, j’utilisais lirc pour gérer la télécommande, c’est-à-dire le mappage des codes de clé -> des touches du clavier -> des clés d’application; tout cela a été un sacré voyage et je me suis retrouvé assez à l'aise avec la façon dont tout cela fonctionnait.

Ce que j'ai:

Comment c'est maintenant
Lorsque je branche ceci, cela "fonctionne". Ce qui est génial, sauf qu'Ubuntu l'utilise en mode natif et empêche certains du bouton d'appuyer sur arriver au mythe. Par exemple, je peux envoyer un bouton de la télécommande qui équivaut à Ctrl-Alt-A (ce qui, je suppose, n’intéresse pas Ubuntu), puis piège cela dans Mythfrontend, mais la télécommande Play Le bouton est capturé par Ubuntu (qui affiche un grand cercle avec une ligne bien qu’aucun lecteur multimédia ne soit chargé).
Je comprends que c’est parce que lirc est maintenant intégré au noyau, et j’aime ça.

Ce que j'ai fait jusqu'à présent:

Trouvé le périphérique en utilisant lsusb:

$ lsusb  
Bus 001 Device 004: ID 073a:2230 Chaplet Systems, Inc. infrared dongle for remote

Trouvé le numéro de périphérique de l'événement:

$ cat /proc/bus/input/devices  
I: Bus=0003 Vendor=073a Product=2230 Version=0110
N: Name="HID 073a:2230"
P: Phys=usb-0000:00:1a.0-1.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input5
U: Uniq=
H: Handlers=sysrq kbd mouse1 event5 js0 
B: PROP=0
B: EV=10001f
B: KEY=4c37fff072ff32d bf54445600000000 ffffffffff 30c100b17c007 ffa67bfad951dfff febeffdfffefffff fffffffffffffffe
B: REL=343
B: ABS=100030000
B: MSC=10

Tester l’entrée avec evtest (j’ai appuyé sur Play):

$ Sudo evtest /dev/input/event5  
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x73a product 0x2230 version 0x110
Input device name: "HID 073a:2230"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
<------------snipped lots of 'Event code' lines------------>
Testing ... (interrupt to exit)
Event: time 1336435683.230656, -------------- SYN_REPORT ------------
Event: time 1336435683.246648, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1336435683.246652, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1336435683.246655, -------------- SYN_REPORT ------------

Testé showkey, encore une fois pour la Play clé:

$ Sudo showkey -s
kb mode was RAW
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
0xe0 0x22 0xe0 0xa2 

Ce que je veux:

  • Je voudrais un moyen de numériser les pressions sur les boutons entrants, si la méthode ci-dessus n'est pas correcte.
  • J'aimerais soit remapper chaque pression de bouton sur quelque chose qu'Ubuntu/Unity ignorera, ou encore mieux passer le clavier directement à Myth (je suppose que cela n'est possible que plus tard avec lirc, mais je peux me tromper).
  • Je voudrais vraiment faire cela avec les pilotes dans le noyau, c'est-à-dire sans charger explicitement lirc; Si c'est ainsi que le monde évolue, je préférerais trouver un moyen de mapper le comportement actuel sur ce que je veux plutôt que de forcer le "vieil" arrangement de chargement de lirc en dehors du noyau. Apprendre quelque chose de nouveau vaut également la peine!

À mon avis:
Je suppose que cela nécessitera l'utilisation de setkeycodes , mais j'ai eu du mal à trouver suffisamment d'informations pour le configurer.

Toute aide grandement appréciée!

3
Geoff

Je viens de suivre un chemin similaire pour découvrir le nouveau lirc dans le noyau, pour moi le moment ah ah était quand j'ai réalisé qu'une télécommande ir est maintenant juste un autre clavier.

Au lieu de showkey/evtest, vous pouvez exécuter Sudo ir-keytable -t pour détecter les appuis sur un bouton distant. Bien que je ne pense pas que cela offre trop de nouvelles informations.

Pour ajuster le mappage des scancodes distants sur les clés, vous devez créer votre propre fichier de configuration à partir de/lib/udev/rc_keymaps /.

En utilisant la sortie evtest, vous pouvez utiliser les champs KEY_X et pour identifier quel fichier rc_keymaps est utilisé. Copiez le fichier correspondant et modifiez-le pour remapper les clés à votre guise. Vous pouvez charger votre configuration modifiée avec Sudo ir-keytable -c -w newfile . Vous pouvez maintenant tester votre nouvelle configuration avec evtest.

Si vous ne disposez pas de suffisamment de souplesse pour modifier les keymaps, vous pouvez toujours utiliser le démon lirc de l'espace utilisateur. Vous pouvez configurer lircd pour extraire le pilote intégré au noyau, puis configurez lircd normalement.

Ces deux liens, http://forum.xbmc.org/showthread.php?tid=104541 et http://ubuntuforums.org/showthread.php?t=1754719 =, contient de nombreuses informations sur la configuration et le débogage de l’installation.

1
Marc

Le bouton Lecture de Remote est utilisé par le plug-in media-keys de gnome-settings-daemon. Pour le désactiver et permettre à MythTV de recevoir l'événement, procédez comme suit:

$ gsettings set org.gnome.settings-daemon.plugins.media-keys active false

Vous voudrez également désactiver/désinstaller xfce4-volumed pour l'empêcher de piéger XF86AudioLowerVolume, XF86AudioRaiseVolume et XF86AudioMute.

Vous voudrez peut-être aussi remapper certaines clés du gestionnaire de fenêtres (par exemple, dans mon cas, Ctrl + Alt + D est utilisé pour démarrer Live TV, alors que xfwm4 l'utilise pour les actions show_desktop). Cela peut être fait dans "Paramètres> Gestionnaire de fenêtres", onglet "Clavier".

De plus, vous pouvez activer le contrôle "Souris" pour envoyer des événements de clavier à l'aide du script mythtv-mouse2kbd.py décrit dans mon blog .

2
Roman