Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

  1. Tu lances xev dans un terminal

  2. Tu places le curseur dans la petite fenêtre qui s'ouvre

  3. Tu appuies sur les touches à tester, et tu vois ce qui s'affiche dans la fenêtre de lancement

  4. 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