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 20/10/2013, à 12:43

Hizoka

[Resolu] Rediriger des touches aux codes > 255 sans keymap ?

Bonjour à tous...

Cela fait plusieurs jours que je suis passé sous Saucy... tout marche bien sauf une chose qui m'est tres désagréable : /lib/udev/keymap n'existe plus !!

Il me permettait de rediriger des touches aux codes élevés en touches que je n'ai pas et qui sont reconnus par les logiciels car inferieur a 255.

Pour cela, j'identifiais mes touches :

sudo /lib/udev/keymap input/event3
> scan code: 0xC1021   key code: zoomreset => 100%
> scan code: 0xC101F   key code: zoomin => zoom -
> scan code: 0xC1020   key code: zoomout => zoom +

je recherchais des touches libres dans le fichier /usr/include/linux/input.h :

define KEY_PHONE       169
define KEY_SHOP        221
define KEY_WWW         150

et je redirigeais les touches :

sudo /lib/udev/keymap input/event3 0xC1021 phone
sudo /lib/udev/keymap input/event3 0xC101F www
sudo /lib/udev/keymap input/event3 0xC1020 shop

Mais maintenant, impossible de trouver comment faire...

Mes différents tests :
Mes retours evtest :

sudo evtest /dev/input/event3 
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc517 version 0x110
Input device name: "Logitech USB Receiver"
...
Testing ... (interrupt to exit)
> Event: time 1381940761.592647, type 1 (EV_KEY), code 140 (KEY_CALC), value 1 => calculator
> Event: time 1381940790.224658, type 1 (EV_KEY), code 420 (KEY_ZOOMRESET), value 1 => 100%
> Event: time 1381940810.928667, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1 => Zoom -
> Event: time 1381940836.216678, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1 => Zoom +

xmodmap ne fonctionne pas avec les touches > 255, donc inutile dans le cas présent...


J'ai voulu tester également : http://www.thenautilus.net/SW/xf86-input-evdev/
mais il faut modifier le fichier xorg, qui n'existe plus depuis un moment aussi...
j'ai essayé d'ajouter les infos à /usr/share/X11/xorg.conf.d/10-evdev.conf mais ce n'est pas passé non plus...


J'ai ajouté ceci à mon fichier /lib/udev/hwdb.d/60-keyboard.hwdb

 # Cordless Desktop S520
keyboard:usb:v046DpC517*
 KEYBOARD_KEY_XXX=www
 KEYBOARD_KEY_XXX=phone
 KEYBOARD_KEY_XXX=sport
 KEYBOARD_KEY_XXX=shop

avec le remplacement de XXX par les codes keymap et evtest, un reboot mais rien de plus...


J'ai voulu tester ir-keytable  mais il ne fonctionne pas et me renvoie :

/sys/class/rc/: No such file or directory

J'ai trouvé une page de launchpad remontant le problème de limite des touches depuis 2007... ça fait 7 ans et toujours rien, j'ai compris que c'était un travail énorme... mais bon ça me semble faire partie du coté essentiel user-friendly...


Alors merci de m'avoir lu et j’espère que vous aurez des idées...

Dernière modification par Hizoka (Le 20/10/2013, à 16:17)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 20/10/2013, à 16:16

Hizoka

Re : [Resolu] Rediriger des touches aux codes > 255 sans keymap ?

Bon après encore quelques heures de recherche, je suis tombé sur un vieux how-to qui fonctionne encore très bien !

Pour commencer, merci à Daniel Klaffenbach et au logiciel evrouter

Voila donc les quelques étapes à réaliser de façon le plus détaillée possible.

1) Installer evrouter


2) Ajouter une règle pour permettre à l'user de lire /dev/input/event*

echo 'KERNEL=="event*", NAME="input/%k", GROUP="input"' | sudo tee /etc/udev/rules.d/80-evrouter.rules

Creation d'un nouveau groupe

sudo addgroup input

Ajout de l'user à ce groupe :

sudo usermod -aG input ${USER}

3) Redémarrer le pc

sudo reboot

4) Identifications des touches qui seront à remapper

evtest
> Available devices:
> /dev/input/event0:      Power Button
> /dev/input/event1:      Power Button
> /dev/input/event2:      Logitech USB Receiver
> /dev/input/event3:      Logitech USB Receiver
> /dev/input/event4:      Sony PLAYSTATION(R)3 Controller
> /dev/input/event5:      STV06xx
> /dev/input/event6:      HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-6]: 3

Presser les touches à remapper :

> Event: time 1381940761.592647, type 1 (EV_KEY), code 140 (KEY_CALC), value 1 => calulatrice
> Event: time 1381940790.224658, type 1 (EV_KEY), code 420 (KEY_ZOOMRESET), value 1 => 100%
> Event: time 1381940810.928667, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1 => Zoom -
> Event: time 1381940836.216678, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1 => Zoom +

5) Création d'un fichier de config pour evrouterrc (${HOME}/.evrouterrc) :
"Nom de l'envent" "adresse de l'event" none key/Numero_de_la_touche "XKey/Nom_de_la_touche"

exemple avec mon fichier :

#Zoom +
"Logitech USB Receiver" "/dev/input/event3" none key/418 "XKey/XF86ZoomIn"

#Zoom -
"Logitech USB Receiver" "/dev/input/event3" none key/419 "XKey/XF86ZoomOut"

# Zoom Rest => XF86ZoomReset est inconnu, alors j'en utilise une autre
"Logitech USB Receiver" "/dev/input/event3" none key/420 "XKey/XF86Phone"

Voici une liste des noms :

XF86AddFavoriteXF86ApplicationLeft
XF86ApplicationRight
XF86AudioMedia
XF86AudioMute
XF86AudioNext
XF86AudioPause
XF86AudioPlay
XF86AudioPrev
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86AudioRecord
XF86AudioRewind
XF86AudioStop
XF86Away
XF86Back
XF86Book
XF86BrightnessAdjust
XF86CD
XF86Calculator
XF86Calendar
XF86Clear
XF86ClearGrab
XF86Close
XF86Community
XF86ContrastAdjust
XF86Copy
XF86Cut
XF86DOS
XF86Display
XF86Documents
XF86Eject
XF86Excel
XF86Explorer
XF86Favorites
XF86Finance
XF86Forward
XF86Game
XF86Go
XF86History
XF86HomePage
XF86HotLinks
XF86Launch0
XF86Launch1
XF86Launch2
XF86Launch3
XF86Launch4
XF86Launch5
XF86Launch6
XF86Launch7
XF86Launch8
XF86Launch9
XF86LaunchA
XF86LaunchB
XF86LaunchC
XF86LaunchD
XF86LaunchE
XF86LaunchF
XF86LightBulb
XF86LogOff
XF86Mail
XF86MailForward
XF86Market
XF86Meeting
XF86Memo
XF86MenuKB
XF86MenuPB
XF86Messenger
XF86Music
XF86MyComputer
XF86MySites
XF86New
XF86News
XF86Next_VMode
XF86Prev_VMode
XF86OfficeHome
XF86Open
XF86OpenURL
XF86Option
XF86Paste
XF86Phone
XF86Pictures
XF86PowerDown
XF86PowerOff
XF86Next_VMode
XF86Prev_VMode
XF86Q
XF86Refresh
XF86Reload
XF86Reply
XF86RockerDown
XF86RockerEnter
XF86RockerUp
XF86RotateWindows
XF86RotationKB
XF86RotationPB
XF86Save
XF86ScreenSaver
XF86ScrollClick
XF86ScrollDown
XF86ScrollUp
XF86Search
XF86Send
XF86Shop
XF86Sleep
XF86Spell
XF86SplitScreen
XF86Standby
XF86Start
XF86Stop
XF86Support
XF86Switch_VT_1
XF86Switch_VT_10
XF86Switch_VT_11
XF86Switch_VT_12
XF86Switch_VT_2
XF86Switch_VT_3
XF86Switch_VT_4
XF86Switch_VT_5
XF86Switch_VT_6
XF86Switch_VT_7
XF86Switch_VT_8
XF86Switch_VT_9
XF86TaskPane
XF86Terminal
XF86ToDoList
XF86Tools
XF86Travel
XF86Ungrab
XF86User1KB
XF86User2KB
XF86UserPB
XF86VendorHome
XF86Video
XF86WWW
XF86WakeUp
XF86WebCam
XF86WheelButton
XF86Word
XF86XF86BackForward
XF86Xfer
XF86ZoomIn
XF86ZoomOut
XF86iTouch

6) Recherche des touches libres avec xmodmap :

xmodmap -pke | egrep "=$"
> keycode 250 =
> keycode 251 =
> keycode 252 =

7) Création d'un fichier de configuration pour xmodmap (${HOME}/.xmodmap) :

keycode Numero_de_la_touche = _Nom_de_la_touche

exemple avec mon fichier :

# Calculatrice ne marche pas cherz moi, alors je l'ai remapper aussi
keycode 148 = XF86WWW

#Zoom -
keycode 251 = XF86ZoomOut

#Zoom +
keycode 250 = XF86ZoomIn

# Zoom Rest
keycode 252 = XF86Phone

8) Executions des logiciels :

xmodmap ~/.xmodmap
evrouter /dev/input/event3

9) Verification du bon changement des touches avec xev :

xev

=> Ex, quand je clique que la touche ZoomReset
> KeyRelease event, serial 43, synthetic NO, window 0x5c00001,
>    root 0x2c3, subw 0x0, time 2637741, (-472,493), root:(476,516),
>    state 0x10, keycode 177 (keysym 0x1008ff6e, XF86Phone), same_screen YES,
>    XLookupString gives 0 bytes: 
>    XFilterEvent returns: False

10) Si tout est ok, il suffit d'ajouter ces lignes dans un fichier de démarrage, par ex avec Kubuntu (${HOME}/.kde/Autostart/keys) :

#!/bin/sh
xmodmap ~/.xmodmap
evrouter /dev/input/event3

Et voilou tout fonctionne enfin !!!

Cela m'aura pris des 10enes d'heures à lire des topics posant ces questions et ayant des réponses plus ou moins intéressantes...
Je vous fais donc partager mes retours smile

Dernière modification par Hizoka (Le 20/10/2013, à 23:33)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 16/01/2014, à 02:32

dexter74

Re : [Resolu] Rediriger des touches aux codes > 255 sans keymap ?

Merci à toi , pourrais tu détailler 4 et 5.

J'ai un petit Soucis de keysum qui me fait des accent , tu serai pas pourquoi ?


HID Clavier: /dev/input/event4
Touche à Binder: F12
Mot A Binder: LULULULU
Keysym F12: 0xffc9
keysym L: 0x004c
keysym U: 0x0055
0x004c:0x0055:0x004c:0x0055:0x004c:0x0055:0x004c:0x0055

"AT Translated Set 2 keyboard" "/dev/input/event4" none key/88 "Xkey/0x004c:0x0055:0x004c:0x0055:0x004c:0x0055:0x004c:0x0055"

Résultat: LU

Dernière modification par dexter74 (Le 16/01/2014, à 04:21)

Hors ligne

#4 Le 16/01/2014, à 20:16

Hizoka

Re : [Resolu] Rediriger des touches aux codes > 255 sans keymap ?

désolé mais je ne sais pas...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 20/05/2020, à 19:16

Hizoka

Re : [Resolu] Rediriger des touches aux codes > 255 sans keymap ?

7 ans après, toujours les mêmes problèmes...

Ça craint grave !

PS : Désolé pour l'extraction des profondeurs du forum de ce topic...

PS2 : Logitech a plutôt une bonne durée de vie smile

Dernière modification par Hizoka (Le 20/05/2020, à 19:17)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne