#1 Le 02/10/2013, à 20:02
- BrunoL
identifier la touche appuyée
Bonjour,
J'ai un thinkpad qui dispose de touches au niveau de l'écran qui permettent par ex. d'activer la rotation de l'écran, ...
Comment identifier l'indicateur que génère l'appui de ces touches ?
xbindkeys renvoie l'interprétation de cet indicateur par exemple une de ces touches "écran" génère un [Entrée] comme la touche éponyme. Ce qui fait que dans les deux cas d'appuis (touche [entrée] et touche [Ecran_entrée] j'obtiens :
$ xbindkeys -k
"(Scheme function)"
m:0x10 + c:36
Mod2 + Return
Or je voudrais que l'appuie sur la touche [Ecran_entrée] lance un script et qu'évidemment la touche [Entrée] génère toujours un CR.
Quelle est la démarche à suivre ?
Merci.
Dernière modification par BrunoL (Le 02/10/2013, à 20:33)
Hors ligne
#2 Le 02/10/2013, à 20:15
- pingouinux
Re : identifier la touche appuyée
Bonsoir,
Tu peux déjà essayer xev, pour voir si les touches Entrée du clavier et de l'écran génèrent quelque chose de différent.
Tu lances xev dans un terminal
Tu places le curseur dans la petite fenêtre qui s'ouvre
Tu appuies sur les touches à tester, et tu vois ce qui s'affiche dans la fenêtre de lancement
Pour arrêter xev, Ctrl+C dans la fenêtre de lancement
Hors ligne
#3 Le 02/10/2013, à 20:32
- BrunoL
Re : identifier la touche appuyée
Les sorties sont identiques comme avec xbindkeys. En pratique :
La touche entrée :
KeyPress event, serial 36, synthetic NO, window 0x4000001,
root 0xac, subw 0x0, time 2349681, (474,-40), root:(475,519),
state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
" XLookupString gives 1 bytes: (0d) "
" XmbLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4000001,
root 0xac, subw 0x0, time 2349784, (474,-40), root:(475,519),
state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
" XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
La touche "écran-entrée":
KeyPress event, serial 36, synthetic NO, window 0x4000001,
root 0xac, subw 0x0, time 2355536, (474,-40), root:(475,519),
state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
" XLookupString gives 1 bytes: (0d) "
" XmbLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4000001,
root 0xac, subw 0x0, time 2355832, (474,-40), root:(475,519),
state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
" XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
Hors ligne
#4 Le 04/10/2013, à 08:11
- BrunoL
Re : identifier la touche appuyée
Bon, un petit retour sur mes recherches.
Ce ne sont ni les xbindkeys et autres xinput qui éclairent le débat, il semble que tout commence dans udev. En particulier pour ce qui me concerne dans /lib/udev/keymaps/lenovo-thinkpad_x6_tablet (merci à canonical de nommer intelligemment ses fichiers ;-)
J'y trouve donc :
0x6C f21 # rotate
0x68 screenlock # screenlock
0x6B esc # escape
0x6D right # right on d-pad
0x6E left # left on d-pad
0x71 up # up on d-pad
0x6F down # down on d-pad
0x69 enter # enter on d-pad
Ça sent bon. Si j'interprète bien figure la transcription des scancode en keycode.
Est-ce cela ?
Si oui qu'en fait-il ? dans les rules d'udev je ne trouve pas où c'est appelé ...
Merci de votre aide ...
A+
Dernière modification par BrunoL (Le 04/10/2013, à 08:13)
Hors ligne