Questions sur l'installation et la configuration de Manjaro Linux.
Répondre

Xkb, fn keys et touches additionnelles

#1Messageil y a 4 ans

Bonjour tout le monde :)

Suite à une nouvelle config hardware (et donc une fresh install manjaro :pompom: ), j'ai entrepris de recoder une bonne partie du clavier (thinkpad, laptop+pavé numérique) en passant par une creation d'une nouvelle langue et de trois variantes avec xkb.

Les parties classiques fonctionnent comme sur des roulettes, mais certaines touches additionelles au dessus du pavé numérique n'ont pas de keycode attribués (du moins j'ai pas réussi à trouver une doc explicite).
En particulier, j'aimerais bien décaler la touche ver_num sur la touche "calculatrice" et mettre un point "." à la place du vernum actuel, mais je n'arrive pas à trouver le petit nom de cette dernière....

evtest me renvoie ça:

Input device name: "ThinkPad Extra Buttons"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 120 (KEY_SCALE)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 144 (KEY_FILE)
    Event code 148 (KEY_PROG1)
    Event code 152 (KEY_SCREENLOCK)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 171 (KEY_CONFIG)
    Event code 173 (KEY_REFRESH)
    Event code 190 (KEY_F20)
    Event code 191 (KEY_F21)
    Event code 194 (KEY_F24)
    Event code 205 (KEY_SUSPEND)
    Event code 212 (KEY_CAMERA)
    Event code 217 (KEY_SEARCH)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 227 (KEY_SWITCHVIDEOMODE)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 236 (KEY_BATTERY)
    Event code 237 (KEY_BLUETOOTH)
    Event code 238 (KEY_WLAN)
    Event code 240 (KEY_UNKNOWN)
    Event code 372 (KEY_ZOOM)
    Event code 374 (KEY_KEYBOARD)
    Event code 466 (KEY_FN_F1)
    Event code 475 (KEY_FN_F10)
    Event code 476 (KEY_FN_F11)
    Event code 582 (KEY_VOICECOMMAND)
    Event code 592 (KEY_BRIGHTNESS_MIN)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 5 (EV_SW)
    Event code 3 (SW_RFKILL_ALL) state 1
Pour la partie classique ça donne ça (c'est très générique mais je n'arrive pas à supposer le nom qui irait...)

Input device name: "AT Translated Set 2 keyboard"
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)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 12 (KEY_MINUS)
    Event code 13 (KEY_EQUAL)
    Event code 14 (KEY_BACKSPACE)
    Event code 15 (KEY_TAB)
    Event code 16 (KEY_Q)
    Event code 17 (KEY_W)
    Event code 18 (KEY_E)
    Event code 19 (KEY_R)
    Event code 20 (KEY_T)
    Event code 21 (KEY_Y)
    Event code 22 (KEY_U)
    Event code 23 (KEY_I)
    Event code 24 (KEY_O)
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 30 (KEY_A)
    Event code 31 (KEY_S)
    Event code 32 (KEY_D)
    Event code 33 (KEY_F)
    Event code 34 (KEY_G)
    Event code 35 (KEY_H)
    Event code 36 (KEY_J)
    Event code 37 (KEY_K)
    Event code 38 (KEY_L)
    Event code 39 (KEY_SEMICOLON)
    Event code 40 (KEY_APOSTROPHE)
    Event code 41 (KEY_GRAVE)
    Event code 42 (KEY_LEFTSHIFT)
    Event code 43 (KEY_BACKSLASH)
    Event code 44 (KEY_Z)
    Event code 45 (KEY_X)
    Event code 46 (KEY_C)
    Event code 47 (KEY_V)
    Event code 48 (KEY_B)
    Event code 49 (KEY_N)
    Event code 50 (KEY_M)
    Event code 51 (KEY_COMMA)
    Event code 52 (KEY_DOT)
    Event code 53 (KEY_SLASH)
    Event code 54 (KEY_RIGHTSHIFT)
    Event code 55 (KEY_KPASTERISK)
    Event code 56 (KEY_LEFTALT)
    Event code 57 (KEY_SPACE)
    Event code 58 (KEY_CAPSLOCK)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 65 (KEY_F7)
    Event code 66 (KEY_F8)
    Event code 67 (KEY_F9)
    Event code 68 (KEY_F10)
    Event code 69 (KEY_NUMLOCK)
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 112 (KEY_MACRO)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 118 (KEY_KPPLUSMINUS)
    Event code 119 (KEY_PAUSE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 157 (KEY_COMPUTER)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 217 (KEY_SEARCH)
    Event code 226 (KEY_MEDIA)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 1
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Les scripts de capture d'événements me renvoient un "shift+À" qui ne correspond à rien....


À défaut, j'avais aussi pensé à changer la touche directe num_lock en fn+numlock mais je me suis perdue dans les niveaux de claviers. Le niveau de base et le second sont activés en même temps, et écraser le niveau de base avec "." désactive totalement le second niveau. Tourner autour de ce qui est ci-dessous n a rien donné...

key <NMLK>  { [ period] };
modifier_map Mod2 { Num_Lock };
key <NMLK> { type="THREE_LEVEL", [ Num_Lock] };
Est-ce qu'il y a un moyen de récupérer le code des touches quelque part?

Par ailleurs, ibus ne "voit" qu'une partie des langues et variantes qui sont presentes and evdev.... :saispas:

Merci d'avance et désolée du pavé,
Yiwoan

Xkb, fn keys et touches additionnelles

#2Messageil y a 4 ans

Salut,

Tu peux utiliser xev, mais il peut arriver que certaines touches ne soient pas identifiables.
Pour cela :

sudo pacman -S xorg-xev
ensuite lancer xev dans un terminal, le curseur de souris doit être sur la petite fenêtre de test. Pour une touche appuyée, des lignes devraient s'afficher, lire la valeur à droite de "keycode" sur la troisième ligne.
Pour sortir de l'appli, il suffit de fermer la fenêtre de test.

Xkb, fn keys et touches additionnelles

#3Messageil y a 4 ans

Merci du tuyau :)

Alors ça c'est étrange...
Qu'importe la touche le comportement rendu est identique.

Ici en appuyant sur la touche "calculatrice"

KeyPress event, serial 42, synthetic NO, window 0x6000001,
    root 0x1c6, subw 0x0, time 19041525, (-359,318), root:(295,395),
    state 0x11, keycode 19 (keysym 0xe0, agrave), same_screen YES,
    XLookupString gives 2 bytes: (c3 a0) "à"
    XmbLookupString gives 2 bytes: (c3 a0) "à"
    XFilterEvent returns: False

Là en appuyant sur la touche "19", qui ici est effectivement codée en tant que "à". Les deux pointent au même endroit sans s'occuper du serial 40/42 on dirait.

KeyPress event, serial 40, synthetic NO, window 0x5400001,
    root 0x1c6, subw 0x0, time 19353387, (-358,278), root:(296,355),
    state 0x10, keycode 19 (keysym 0xe0, agrave), same_screen YES,
    XLookupString gives 2 bytes: (c3 a0) "à"
    XmbLookupString gives 2 bytes: (c3 a0) "à"
    XFilterEvent returns: False
Le numloc est est ecrasé dans le fichier de langue, donc peut-être que ça a embrouillé à ce niveau là, autrement je vois pas.

Xkb, fn keys et touches additionnelles

#4Messageil y a 4 ans

Je viens de me rappeler que les touches avec des fonctions définies sont détectées par Xorg en tant que telles, je ne crois pas qu'elles puissent être reprogrammées.
La touche "Calculatrice" n'est sans doute pas gérée avec le keycode, mais avec le symbole, XF86Calculator normalement.

http://wiki.linuxquestions.org/wiki/XF8 ... rd_symbols

Xkb, fn keys et touches additionnelles

#5Messageil y a 4 ans

Ah!!! Effectivement ç'est sans doute une touche multimédia... j'y avais pas pensé.
Je vais regarder de ce côté, merci :)
Répondre