Configuration d'un clavier multimédia avec lineak

Cas du clavier LDLC MCK-800

Un bon clavier multimédia et pas cher ! Acheté en ligne chez ldlc, voici la page le concernant.

Installation de lineak

Vous devez avoir installer sur votre pc:

utilisez pour cela les paquets de votre distribution, regardez aussi sur la page de téléchargement de lineak.

Détection des touches

Nous allons voir quelles touches sont reconnues, et lesquelles ne le sont pas directement. Pour cela nous allons utiliser xev.Ouvrez une console et tapez:

xev

Vous obtenez à l'écran une fenêtre, et quand vous tapez sur une touche vous obtenez des informations, par exemple:

Ctrl

Vous donne (touche control left):

KeyPress event, serial 28, synthetic NO, window 0x3e00001, root 0xd6, subw 0x0, time 26912540, (-726,717), root:(117,742), state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES, XLookupString gives 0 bytes: ""

L'information qui nous interesse ici est le keycode (keycode 37) qui est le numéro par lequel votre système reconnait la touche.Vous pouvez donc avec cette méthode tester les touches multimédias de votre clavier, et vous obtenez avec ce clavier:

C'est déja pas mal 12 sur 19 de reconnues ! Mais on peut surement faire mieux !

Certaines touches n'ont effectivement rien affiché avec xev, mais nous allons voir si elles sont tout de même reconnues. Fermez xev et tapez:

tail -f /var/log/syslog

Si cela ne marche pas en user, soit vous vous rajoutez au groupe adm, soit vous passez en root (je préfère être dans adm). Vous allez ainsi pouvoir suivre en direct les évènements sur votre système.

Appuyez de nouveau sur les touches qui n'ont pas été reconnues et vous allez avoir un affichage de ce style:

Jul 10 12:49:26 navi kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x9e on isa0060/serio0). Jul 10 12:49:26 navi kernel: atkbd.c: Use 'setkeycodes e01e 'keycode' to make it known.

C'est barbare mais la touche est reconnue mais non définie. Remarquez qu'il vous dit: Use 'setkeycodes e01e 'keycode' to make it known" . par cette comande barbare il vous demande de paramètrer manuellement les codes correspondants aux touches non définies.

Il vous faut attribuer vous même un code aux diffèrentes touches non reconnues, pour cela il faut utiliser la table, présente sur ce site. Attention, il y'a une diffèrence entre ce que vous allez définir et ce que xev va afficher, par exemple si vous voulez que la touche soit reconnue en 158 vous devrez utiliser setkeycode avec 139 ! (regardez les correspondances dans le tableau).

tableau des correspondances

Voici la table des correspondances découverte par Rob Brown.

Colonnes de gauche : codes à saisir dans setkeycodes ;

Colonnes de droite : codes à obtenir (ceux utilisés dans le /etc/lineakkb.def)

xxx  xev  	 |  xxx  xev   |  xxx  xev   |  xxx  xev  |  xxx  xev
 ------------------------------------------------------------
 128  232   |  151  110* |  174  121  |  196  150  |  218  194
 129  133   |  152  146   |  175  122  |  197  154  |  219  195
 130  134   |  153  115* |  176  136  |  198  155  |  220  196
 131  135   |  154  166   |  177  125  |  199  167  |  221  197
 132  140   |  155  236   |  178  143  |  200  168  |  222  148
 133  248   |  156  230   |  179  246  |  201  169  |  223  202
 134  108* |  157  235   |  180  251  |  202  171  |  224  101
 135  109* |  158  234   |  181  137  |  203  172  |  225  212
 136  122   |  159  233   |  182  138  |  204  173  |  226  237
 137  188   |  160  163   |  183  101  |  205  165  |  227  214
 138  245   |  161  116* |  184  102  |  206  175  |  228  215
 139  158   |  162  253   |  185  103  |  207  179  |  229  216
 140  161* |  163  153   |  186  93    |  208  180  |  230  217
 141  110* |  164  162* |  187  131  |  209  ---    |  231  218
 142  223   |  165  144   |  188  247  |  210  185  |  232  228
 143  227   |  166  164* |  189  132  |  211  186  |  233  142
 144  111* |  167  177   |  190  98    |  212  187  |  234  213
 145  112* |  168  152   |  191  124  |  213  118  |  235  240
 146  113* |  169  107* |  192  249  |  214  119  |  236  241
 147  147   |  170  120   |  193  117*|  215  120  |  237  242
 148  159   |  171  129   |  194  119  |  216  121  |  238  243
 149  151   |  172  130   |  195  149  |  217  229  |  239  244
 150  178   |  173  231   |

Configuration des touches

Nous savons que notre clavier a pour réfèrence LDLC MCK-800, et coup de pot il y'a dans les claviers connus de lineak un MCK-800, pour connaitre toute la liste de claviers connus (vous pouvez définir le votre en respectant la syntaxe), tapez:

lineakd -l

Effectivement nous avons:

MCK-800

La définition des claviers se trouve dans /etc/lineakb.def. Regardons les codes des touches et comparons avec la notre

#### Oretec Keyboards ####

[MCK-800]
  brandname = "Oretec"
  modelname = "MCK-800 MM/Internet keyboard"
  [KEYS]
    Internet    = 161
    Mute        = 158
    VolumeDown  = 232
    VolumeUp    = 176
    ScrollDown  = 152
    ScrollUp    = 144
    Previous    = 151
    Play        = 146
    Next        = 174
    Stop        = 163
    Zoom Out    = 153
    Zoom In     = 178
    Calculator  = 164
     Xfer        = 165
    Menu        = 162
    Mail        = 166
    Power       = 222
    Suspend     = 223
    Wake        = 227
  [END KEYS]
[END MCK-800]

#### END Oretec Keyboards ####
    

Comparons avec les touches déja reconnues, chez moi cela correspond. Nous voyons que des codes sont déja affectés aux touches non reconnues directement par xev, qu'a cela ne tienne nous allons leur affecter le code correspondant avec setkeycodes !

Dans mon cas (sur debian) j'ai modifié le fichier /etc/init.d/bootmisc.sh et ajouter à la fin l'affectation des touches. A vous de trouver le fichier qui permet de passer des paramètres supplémentaires au noyau (dans notre cas pour modifier la table de caractères). vous pouvez aussi crééer un script de démarrage à placer par exemple dans /etc/init.d ou /etc/rc.d ... Pour gentoo vous inscrirez ces commandes dans /etc/conf.d/local.start

Pour correspondre au fichier de conf de lineak, j'utilise la table de correspondance citée plus haut, et j'affecte les code de la manière suivante:

setkeycodes réfèrence lecodeéquivalentacequejeveux

Par exemple pour affecter 158 à la touche reconnue par e01e je lui donne 139 (en utilisant la table citée plus haut) soit:

setkeycodes e01e 139

Et en testant une fois la configuration appliquée, xev me donnera keycode 158 pour cette touche

Dans mon /etc/init.d/bootmisc.sh (ou /etc/conf.d/local.start) j'ajoute à la fin pour toutes les touches non affectées (avec en commentaire la correspondance de la touche):

setkeycodes e01e 139 # mute
setkeycodes e018 168 # scrolldown
setkeycodes e017 149 # previoussong
setkeycodes e012 152 # playpause
setkeycodes e023 160 # stopcd
setkeycodes e025 205 # x'fer
setkeycodes e026 154 # mail

Vous remarquerez le commentaire après le # pour savoir qui fait quoi, vous sauvez votre fichier et vous le relancer si c'est un script, au pire vous rebootez (vraiment au pire), pour moi je relance le script:

/etc/init.d/bootmisc.sh

Et je vérifie avec xev que tout est bon

Utilisation de lineak

Nous savons que notre clavier est le MCK-800, donc déja nous créons la configuration pour ce clavier.

lineakd -c MCK-800

La configuration est sauvée dans /home/votreuser/.lineak/. Vérifions que lui reconnait bien les touches:

lineakd -v

Nous lançons dans la console lineak en mode verbeux, tapez sur les touches multimedia il va vous afficher des informations (code et fonction notamment), une fois terminé, tapez pour arrêter lineakd:

ctrl C

Nous allons affectez des taches aux diffèrentes touches, en éditant ~/.lineak/lineakd.conf, voici le mien configuré, sachant que j'utilise le plugin pour KDE (notament pour kmix), à vous d'adapter en lisant le man de vos lecteurs multimedia

Exemple avec le plugin Amarok (KDE), des touches attribuées aussi à beep-media-player et la gestion générique du volume par le plugin lineak.

CdromDevice = /dev/cdrom
Display_align = center
Display_color = 0aff00
Display_font = -adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-*
Display_hoffset = 0
Display_plugin = xosd
Display_pos = bottom
Display_soffset = 1
Display_timeout = 3
Display_voffset = 50
KeyboardType = MCK-800
MixerDevice = /dev/mixer
RAWCommands =
Screensaver =
conffilename = /home/eric/.lineak/lineakd.conf
keystate_capslock =
keystate_numlock =
keystate_scrolllock =

Calculatrice = xcalc
Lecture|Pause = AMAROK_PLAYPAUSE
Menu = KMENU
Messagerie = /usr/bin/kontact
Mute = EAK_MUTE(1)
Navigateur = /usr/bin/mozilla-firefox
Power = EAK_EJECT
Precedent = AMAROK_BACK
ScrollDown = beep-media-player -s
ScrollUp = beep-media-player -t
Stop = AMAROK_STOP
Suivant = AMAROK_FORWARD
Suspend = 
VolumeDown = EAK_VOLDOWN(1)
VolumeUp = EAK_VOLUP(1)
Wake = 
Xfer = oofice
Zoom In = beep-media-player -r
Zoom Out = beep-media-player -f

Exemple avec le plugin KDE pour le volume et beep-media-player

[...]

Calculator = kcalc
Internet = /usr/bin/mozilla-firefox
Mail = /usr/bin/mozilla-thunderbird
Menu =
Mute = KMIX_MUTE
Next = beep-media-player -f
Play = beep-media-player -t
Power =
Previous = beep-media-player -r
ScrollDown =
ScrollUp =
Stop = beep-media-player -s
Suspend =
VolumeDown = KMIX_VOLDOWN
VolumeUp = KMIX_VOLUP
Wake =
Xfer =
Zoom In =
Zoom Out =

Une fois la configuration terminée, lancez le démon lineakd:

lineakd &

Et la en appuyant sur les touches configurée appréciez l'affichage à l'écran (osd).

Le paquet debian (fait avec checkinstall à partir des sources) pour configurer en graphique avec KDE

kilneakconfig

Sources pour élaborer ce document:

Le site de lineak
le wiki de Woku

D'autres informations:

Trustonme

version 2 par Eric Barons

Valid XHTML 1.0! Valid CSS!