Skip to content

xdotool produces additional Tab if emulating Right, Left, Up or Down arrow key. #484

Description

@Daresch

The command xdotool key Right produces an additional Tab before sending the Right arrow.

You can see if in xev. The first block shows keysym Tab and after that comes keysym Right.

KeyPress event, serial 38, synthetic NO, window 0x5600001,
    root 0x6aa, subw 0x5600002, time 4377053, (48,41), root:(80,105),
    state 0x2000, keycode 77 (keysym 0xff09, Tab), same_screen YES,
    XKeysymToKeycode returns keycode: 23
    XLookupString gives 1 bytes: (09) "	"
    XmbLookupString gives 1 bytes: (09) "	"
    XFilterEvent returns: False

KeyPress event, serial 39, synthetic NO, window 0x5600001,
    root 0x6aa, subw 0x5600002, time 4377058, (48,41), root:(80,105),
    state 0x2010, keycode 41 (keysym 0xff53, Right), same_screen YES,
    XKeysymToKeycode returns keycode: 114
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 39, synthetic NO, window 0x5600001,
    root 0x6aa, subw 0x5600002, time 4377065, (48,41), root:(80,105),
    state 0x2010, keycode 77 (keysym 0x8bd, notequal), same_screen YES,
    XLookupString gives 3 bytes: (e2 89 a0) "≠"
    XFilterEvent returns: False

KeyRelease event, serial 39, synthetic NO, window 0x5600001,
    root 0x6aa, subw 0x5600002, time 4377066, (48,41), root:(80,105),
    state 0x2000, keycode 41 (keysym 0x65, e), same_screen YES,
    XKeysymToKeycode returns keycode: 26
    XLookupString gives 1 bytes: (65) "e"
    XFilterEvent returns: False

I can observe the same behavior with Left, Up and Down arrow keys.

xdotool version: 3.20160805.1
System: Linux Mint 21.3 Cinnamon, Kernel 6.8.0-51-generic

Activity

  1. Daresch commented on Jan 26, 2025

    @Daresch
    Author

    Can also confirm this in version 3.20211022.1

  2. jordansissel commented on Jan 29, 2025

    @jordansissel
    Owner

    @Daresch I tried this on XQuartz (macOS) and couldn't reproduce it. Still, I believe this is a bug. I have some ideas.

    Based on the output, xev shows that the key state changes from 0x2000 to 0x2010 when Tab is pressed. The 'state' is basically a bitmask of active modifier keys, like Shift, Control, Meta, etc, and the fact that it changes when Tab is pressed tells me that Tab is a modifier key, specifically Mod2, or at least xdotool believes this.

    Clipped from your xev output:

    # 'press tab'
        state 0x2000, keycode 77 (keysym 0xff09, Tab), same_screen YES,
    
    # 'press Right'
        state 0x2010, keycode 41 (keysym 0xff53, Right), same_screen YES,
    

    Notice how state changes, adding 0x0010 which is the bitmask for Mod2. On my system (XQuartz), Mod2 is the Meta key. I can see this with xmodmap and looking at the mod2 line.

    Back to xdotool.

    On startup, xdotool tries to figure out what modifier keys are needed in order to send anything in the current keymap. This is needed for keymaps where certain characters may require holding modifier keys like AltGr or Shift. For example, : (colon) on my keyboard requires holding shift while pressing ; (semicolon).

    (The above paragraph copied from a comment I made in #481)

    Given the order of events in your xev output (press tab, press right, release tab, release right), I wonder if xdotool is thinking that in order to send the Right arrow key, one must hold Tab (as a modifier key) in order to successfully send Right.

    I don't have a solution for this, but if we can confirm how xdotool is misbehaving, it'll get one step closer to fixing this bug. Let me know your thoughts.

    If you're familiar with patching C code, I have a small patch that might help us see what xdotool knows about the keyboad mapping:

    diff --git a/xdo.c b/xdo.c
    index 44595d1..74dfbbf 100644
    --- a/xdo.c
    +++ b/xdo.c
    @@ -1336,6 +1336,7 @@ static void _xdo_populate_charcode_map(xdo_t *xdo) {
             xdo->charcodes[idx].code = keycode;
             xdo->charcodes[idx].group = group;
             xdo->charcodes[idx].modmask = modmask | _xdo_query_keycode_to_modifier(modmap, keycode);
    +        printf("Sym %s needs mods %x\n", XKeysymToString(keysym), xdo->charcodes[idx].modmask);
             xdo->charcodes[idx].symbol = keysym;
    
             idx++;

    The above will print Sym ... needs mods ... for each entry in the keyboard mapping. If you're able, try this patch with xdotool key Right and let show the line output matching Sym Right needs mods [some number]

    Also, could you send xev -event keyboard output for when you press the arrow keys yourself (left, up, etc)?

  3. Daresch commented on Jan 29, 2025

    @Daresch
    Author

    Hey @jordansissel

    If you're familiar with patching C code, I have a small patch that might help us see what xdotool knows about the keyboad mapping:

    diff --git a/xdo.c b/xdo.c
    index 44595d1..74dfbbf 100644
    --- a/xdo.c
    +++ b/xdo.c
    @@ -1336,6 +1336,7 @@ static void _xdo_populate_charcode_map(xdo_t *xdo) {
    xdo->charcodes[idx].code = keycode;
    xdo->charcodes[idx].group = group;
    xdo->charcodes[idx].modmask = modmask | _xdo_query_keycode_to_modifier(modmap, keycode);

    •    printf("Sym %s needs mods %x\n", XKeysymToString(keysym), xdo->charcodes[idx].modmask);
         xdo->charcodes[idx].symbol = keysym;
      
         idx++;
      

    The above will print Sym ... needs mods ... for each entry in the keyboard mapping. If you're able, try this patch with xdotool key Right and let show the line output matching Sym Right needs mods [some number]

    I tried some and got it, I think.

    $ xdotool key Right
    ...
    Sym Right needs mods 10
    Sym Right needs mods 11
    ...
    Sym Right needs mods 0
    ...
    

    As a workaround, I use xdotool key KP_Right. I don't know, what this is, but this is usable for my use case at the moment.
    The output for Sym ... needs mods ... looks equivalent

    $ xdotool key KP_Right
    ...
    Sym KP_Right needs mods 0
    ...
    Sym KP_Right needs mods 10
    Sym KP_Right needs mods 11
    ...
    

    Also, could you send xev -event keyboard output for when you press the arrow keys yourself (left, up, etc)?

    The output for all arrow keys (down and up):

    KeyPress event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1928497, (916,414), root:(948,478),
        state 0x2000, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1928660, (916,414), root:(948,478),
        state 0x2000, keycode 113 (keysym 0xff51, Left), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyPress event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1930227, (916,414), root:(948,478),
        state 0x2000, keycode 111 (keysym 0xff52, Up), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1930415, (916,414), root:(948,478),
        state 0x2000, keycode 111 (keysym 0xff52, Up), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyPress event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1931115, (916,414), root:(948,478),
        state 0x2000, keycode 114 (keysym 0xff53, Right), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1931270, (916,414), root:(948,478),
        state 0x2000, keycode 114 (keysym 0xff53, Right), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyPress event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1931799, (916,414), root:(948,478),
        state 0x2000, keycode 116 (keysym 0xff54, Down), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 28, synthetic NO, window 0x5600001,
        root 0x6aa, subw 0x0, time 1931945, (916,414), root:(948,478),
        state 0x2000, keycode 116 (keysym 0xff54, Down), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
  4. jordansissel commented on Jan 31, 2025

    @jordansissel
    Owner

    As a workaround, I use xdotool key KP_Right. I don't know, what this is, but this is usable for my use case at the moment.

    Nice! I'm glad you have a workaround. KP_Right is the right arrow key on a number pad. Most laptops and small keyboards don't actually have a number pad, but these things will still appear in the keymap anyway.

    I have an idea for a possible solution. With the output you provided, I see multiple entries that send Right and the last entry has no modifiers (0). Your KP_Right also has multiple entries, but the first entry has no modifiers. I am thinking that if xdotool chooses the key with the least modifier keys (preferring zero), instead of the first one, then it'll work.

    I believe there's some other bug that causes xdotool use the wrong modifiers, but "prefer zero modifiers" might be a simpler solution (and also less keystrokes to send).

    While I think about things, can you attach the output of xmodmap -pm and xmodmap -pke - these commands will show the modifier map and keycode mapping and might help me test this further.

  5. Daresch commented on Feb 2, 2025

    @Daresch
    Author

    Output of xmodmap -pm

    xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):
    
    shift       Shift_L (0x32),  Shift_R (0x3e)
    lock        Caps_Lock (0x42)
    control     Control_L (0x25),  Control_R (0x69)
    mod1        Alt_L (0x40),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d),  Hyper_L (0xcf)
    mod3        Mode_switch (0xcb)
    mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
    mod5        ISO_Level3_Shift (0x5c)
    

    and output of xmodmap -pke

    keycode   8 =
    keycode   9 = Escape NoSymbol Escape
    keycode  10 = 1 exclam 1 degree onesuperior exclamdown onesuperior onesubscript ordfeminine NoSymbol notsign
    keycode  11 = 2 quotedbl 2 section twosuperior oneeighth twosuperior twosubscript masculine NoSymbol logicalor
    keycode  12 = 3 section 3 U2113 threesuperior sterling threesuperior threesubscript numerosign NoSymbol logicaland
    keycode  13 = 4 dollar 4 guillemotright onequarter currency U203A femalesymbol NoSymbol NoSymbol U22A5
    keycode  14 = 5 percent 5 guillemotleft onehalf threeeighths U2039 malesymbol periodcentered NoSymbol U2221
    keycode  15 = 6 ampersand 6 dollar notsign fiveeighths cent U26A5 sterling NoSymbol U2225
    keycode  16 = 7 slash 7 EuroSign braceleft seveneighths yen U03F0 currency NoSymbol rightarrow
    keycode  17 = 8 parenleft 8 doublelowquotemark bracketleft trademark singlelowquotemark U27E8 Tab ISO_Left_Tab U221E
    keycode  18 = 9 parenright 9 leftdoublequotemark bracketright plusminus leftsinglequotemark U27E9 KP_Divide KP_Divide variation
    keycode  19 = 0 equal 0 rightdoublequotemark braceright degree rightsinglequotemark zerosubscript KP_Multiply KP_Multiply emptyset
    keycode  20 = ssharp question minus emdash backslash questiondown U1E9E NoSymbol U2011 KP_Subtract KP_Subtract hyphen
    keycode  21 = dead_acute dead_grave dead_grave dead_cedilla dead_cedilla dead_ogonek dead_abovering dead_abovereversedcomma dead_diaeresis NoSymbol dead_macron
    keycode  22 = BackSpace BackSpace BackSpace BackSpace NoSymbol NoSymbol Terminate_Server NoSymbol NoSymbol Terminate_Server
    keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab Multi_key ISO_Level5_Lock NoSymbol NoSymbol NoSymbol ISO_Level5_Lock
    keycode  24 = q Q x X at Greek_OMEGA ellipsis Greek_xi Prior Prior Greek_XI
    keycode  25 = w W v V lstroke Lstroke underscore NoSymbol BackSpace BackSpace radical
    keycode  26 = e E l L EuroSign EuroSign bracketleft Greek_lamda Up Up Greek_LAMDA
    keycode  27 = r R c C paragraph registered bracketright Greek_chi Delete Delete U2102
    keycode  28 = t T w W tslash Tslash asciicircum Greek_omega Next Next Greek_OMEGA
    keycode  29 = z Z k K leftarrow yen exclam Greek_kappa exclamdown NoSymbol multiply
    keycode  30 = u U h H downarrow uparrow less Greek_psi KP_7 KP_7 Greek_PSI
    keycode  31 = i I g G rightarrow idotless greater Greek_gamma KP_8 KP_8 Greek_GAMMA
    keycode  32 = o O f F oslash Oslash equal Greek_phi KP_9 KP_9 Greek_PHI
    keycode  33 = p P q Q thorn THORN ampersand U03D5 KP_Add KP_Add U211A
    keycode  34 = udiaeresis Udiaeresis ssharp U1E9E dead_diaeresis dead_abovering U017F Greek_finalsmallsigma U2212 NoSymbol jot
    keycode  35 = plus asterisk dead_acute dead_tilde asciitilde macron dead_stroke dead_abovecomma dead_doubleacute NoSymbol dead_breve
    keycode  36 = Return NoSymbol Return
    keycode  37 = Control_L NoSymbol Control_L
    keycode  38 = a A u U ae AE backslash NoSymbol Home Home includedin
    keycode  39 = s S i I U017F U1E9E slash Greek_iota Left Left integral
    keycode  40 = d D a A eth ETH braceleft Greek_alpha Down Down U2200
    keycode  41 = f F e E dstroke ordfeminine braceright Greek_epsilon Right Right U2203
    keycode  42 = g G o O eng ENG asterisk Greek_omicron End End elementof
    keycode  43 = h H s S hstroke Hstroke question Greek_sigma questiondown NoSymbol Greek_SIGMA
    keycode  44 = j J n N dead_belowdot dead_abovedot parenleft Greek_nu KP_4 KP_4 U2115
    keycode  45 = k K r R kra ampersand parenright Greek_rho KP_5 KP_5 U211D
    keycode  46 = l L t T lstroke Lstroke minus Greek_tau KP_6 KP_6 partialderivative
    keycode  47 = odiaeresis Odiaeresis d D dead_doubleacute dead_belowdot colon Greek_delta KP_Separator comma Greek_DELTA
    keycode  48 = adiaeresis Adiaeresis y Y dead_circumflex dead_caron at Greek_upsilon period KP_Decimal nabla
    keycode  49 = dead_circumflex degree dead_circumflex dead_caron U2032 U2033 U21BB U02DE dead_abovedot Pointer_EnableKeys dead_belowdot
    keycode  50 = Shift_L NoSymbol Shift_L Caps_Lock
    keycode  51 = numbersign apostrophe ISO_Level3_Shift NoSymbol rightsinglequotemark dead_breve
    keycode  52 = y Y udiaeresis Udiaeresis guillemotright U203A numbersign NoSymbol Escape Escape union
    keycode  53 = x X odiaeresis Odiaeresis guillemotleft U2039 dollar U03F5 Tab Tab intersection
    keycode  54 = c C adiaeresis Adiaeresis cent copyright bar Greek_eta Insert Insert U2135
    keycode  55 = v V p P doublelowquotemark singlelowquotemark asciitilde Greek_pi Return Return Greek_PI
    keycode  56 = b B z Z leftdoublequotemark leftsinglequotemark grave Greek_zeta Undo Redo U2124
    keycode  57 = n N b B rightdoublequotemark rightsinglequotemark plus Greek_beta colon NoSymbol U21D0
    keycode  58 = m M m M mu masculine percent Greek_mu KP_1 KP_1 ifonlyif
    keycode  59 = comma semicolon comma endash periodcentered multiply quotedbl U03F1 KP_2 KP_2 U21D2
    keycode  60 = period colon period enfilledcircbullet U2026 division apostrophe U03D1 KP_3 KP_3 U21A6
    keycode  61 = minus underscore j J endash emdash semicolon Greek_theta semicolon NoSymbol Greek_THETA
    keycode  62 = Shift_R NoSymbol Shift_R Caps_Lock
    keycode  63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab U22C5 U2299 multiply NoSymbol U2297
    keycode  64 = Alt_L Meta_L Alt_L Meta_L
    keycode  65 = space NoSymbol space space space nobreakspace KP_0 KP_0 U202F
    keycode  66 = Caps_Lock ISO_Next_Group ISO_Level3_Shift
    keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1 F1 F1 XF86Switch_VT_1
    keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2 F2 F2 XF86Switch_VT_2
    keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3 F3 F3 XF86Switch_VT_3
    keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4 F4 F4 XF86Switch_VT_4
    keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5 F5 F5 XF86Switch_VT_5
    keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6 F6 F6 XF86Switch_VT_6
    keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7 F7 F7 XF86Switch_VT_7
    keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8 F8 F8 XF86Switch_VT_8
    keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9 F9 F9 XF86Switch_VT_9
    keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10 F10 F10 XF86Switch_VT_10
    keycode  77 = Num_Lock NoSymbol Tab ISO_Left_Tab equal approxeq notequal Pointer_EnableKeys identical
    keycode  78 = Scroll_Lock NoSymbol Scroll_Lock
    keycode  79 = KP_Home KP_7 KP_7 U2714 U2195 U226A KP_Home KP_Home upstile
    keycode  80 = KP_Up KP_8 KP_8 U2718 uparrow intersection KP_Up KP_Up U22C2
    keycode  81 = KP_Prior KP_9 KP_9 dagger U20D7 U226B KP_Prior KP_Prior U2309
    keycode  82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode U2212 U2296 U2216 NoSymbol U2238
    keycode  83 = KP_Left KP_4 KP_4 club leftarrow includedin KP_Left KP_Left U2286
    keycode  84 = KP_Begin KP_5 KP_5 EuroSign colon U22B6 KP_Begin KP_Begin U22B7
    keycode  85 = KP_Right KP_6 KP_6 U2023 rightarrow includes KP_Right KP_Right U2287
    keycode  86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode plusminus U2295 U2213 NoSymbol U2214
    keycode  87 = KP_End KP_1 KP_1 diamond U2194 lessthanequal KP_End KP_End downstile
    keycode  88 = KP_Down KP_2 KP_2 heart downarrow union KP_Down KP_Down U22C3
    keycode  89 = KP_Next KP_3 KP_3 U2660 U21CC greaterthanequal KP_Next KP_Next U230B
    keycode  90 = KP_Insert KP_0 KP_0 U2423 percent U2030 KP_Insert KP_Insert U25A1
    keycode  91 = KP_Delete KP_Separator KP_Separator period comma minutes KP_Delete KP_Delete seconds
    keycode  92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
    keycode  93 =
    keycode  94 = less greater ISO_Level5_Shift ISO_Level5_Shift bar dead_belowmacron ISO_Level5_Shift ISO_Level5_Shift ISO_Level5_Lock ISO_Level5_Lock ISO_Level5_Lock ISO_Level5_Lock
    keycode  95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 F11 F11 XF86Switch_VT_11
    keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12 F12 F12 XF86Switch_VT_12
    keycode  97 =
    keycode  98 = Katakana NoSymbol Katakana
    keycode  99 = Hiragana NoSymbol Hiragana
    keycode 100 = Henkan_Mode NoSymbol Henkan_Mode
    keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana
    keycode 102 = Muhenkan NoSymbol Muhenkan
    keycode 103 =
    keycode 104 = KP_Enter NoSymbol KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter
    keycode 105 = Control_R NoSymbol Control_R
    keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab division U2300 U2044 NoSymbol U2223
    keycode 107 = Print Sys_Req Print Sys_Req
    keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level5_Shift ISO_Level5_Shift ISO_Level5_Shift ISO_Level5_Shift ISO_Level5_Lock ISO_Level5_Lock ISO_Level5_Lock ISO_Level5_Lock
    keycode 109 = Linefeed NoSymbol Linefeed
    keycode 110 = Home NoSymbol Home
    keycode 111 = Up NoSymbol Up
    keycode 112 = Prior NoSymbol Prior
    keycode 113 = Left NoSymbol Left
    keycode 114 = Right NoSymbol Right
    keycode 115 = End NoSymbol End
    keycode 116 = Down NoSymbol Down
    keycode 117 = Next NoSymbol Next
    keycode 118 = Insert NoSymbol Insert
    keycode 119 = Delete NoSymbol Delete
    keycode 120 =
    keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
    keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
    keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
    keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
    keycode 125 = KP_Equal NoSymbol KP_Equal
    keycode 126 = plusminus NoSymbol plusminus
    keycode 127 = Pause Break Pause Break
    keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
    keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal
    keycode 130 = Hangul NoSymbol Hangul
    keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja
    keycode 132 =
    keycode 133 = Super_L NoSymbol Super_L
    keycode 134 = Super_R NoSymbol Super_R
    keycode 135 = Menu NoSymbol Menu
    keycode 136 = Cancel NoSymbol Cancel
    keycode 137 = Redo NoSymbol Redo
    keycode 138 = SunProps NoSymbol SunProps
    keycode 139 = Undo NoSymbol Undo
    keycode 140 = SunFront NoSymbol SunFront
    keycode 141 = XF86Copy NoSymbol XF86Copy
    keycode 142 = XF86Open NoSymbol XF86Open
    keycode 143 = XF86Paste NoSymbol XF86Paste
    keycode 144 = Find NoSymbol Find
    keycode 145 = XF86Cut NoSymbol XF86Cut
    keycode 146 = Help NoSymbol Help
    keycode 147 = XF86MenuKB NoSymbol XF86MenuKB
    keycode 148 = XF86Calculator NoSymbol XF86Calculator
    keycode 149 =
    keycode 150 = XF86Sleep NoSymbol XF86Sleep
    keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
    keycode 152 = XF86Explorer NoSymbol XF86Explorer
    keycode 153 = XF86Send NoSymbol XF86Send
    keycode 154 =
    keycode 155 = XF86Xfer NoSymbol XF86Xfer
    keycode 156 = XF86Launch1 NoSymbol XF86Launch1
    keycode 157 = XF86Launch2 NoSymbol XF86Launch2
    keycode 158 = XF86WWW NoSymbol XF86WWW
    keycode 159 = XF86DOS NoSymbol XF86DOS
    keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
    keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows
    keycode 162 = XF86TaskPane NoSymbol XF86TaskPane
    keycode 163 = XF86Mail NoSymbol XF86Mail
    keycode 164 = XF86Favorites NoSymbol XF86Favorites
    keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
    keycode 166 = XF86Back NoSymbol XF86Back
    keycode 167 = XF86Forward NoSymbol XF86Forward
    keycode 168 =
    keycode 169 = XF86Eject NoSymbol XF86Eject
    keycode 170 = XF86Eject NoSymbol XF86Eject
    keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
    keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
    keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
    keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
    keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
    keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
    keycode 177 = XF86Phone NoSymbol XF86Phone
    keycode 178 =
    keycode 179 = XF86Tools NoSymbol XF86Tools
    keycode 180 = XF86HomePage NoSymbol XF86HomePage
    keycode 181 = XF86Reload NoSymbol XF86Reload
    keycode 182 = XF86Close NoSymbol XF86Close
    keycode 183 =
    keycode 184 =
    keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
    keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
    keycode 187 = parenleft NoSymbol parenleft
    keycode 188 = parenright NoSymbol parenright
    keycode 189 = XF86New NoSymbol XF86New
    keycode 190 = Redo NoSymbol Redo
    keycode 191 = XF86Tools NoSymbol XF86Tools
    keycode 192 = XF86Launch5 NoSymbol XF86Launch5
    keycode 193 = XF86Launch6 NoSymbol XF86Launch6
    keycode 194 = XF86Launch7 NoSymbol XF86Launch7
    keycode 195 = XF86Launch8 NoSymbol XF86Launch8
    keycode 196 = XF86Launch9 NoSymbol XF86Launch9
    keycode 197 =
    keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
    keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
    keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
    keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
    keycode 202 =
    keycode 203 = Mode_switch NoSymbol ISO_Level5_Shift
    keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
    keycode 205 = NoSymbol Meta_L NoSymbol Meta_L
    keycode 206 = NoSymbol Super_L NoSymbol Super_L
    keycode 207 = NoSymbol Hyper_L
    keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
    keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
    keycode 210 = XF86Launch3 NoSymbol XF86Launch3
    keycode 211 = XF86Launch4 NoSymbol XF86Launch4
    keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
    keycode 213 = XF86Suspend NoSymbol XF86Suspend
    keycode 214 = XF86Close NoSymbol XF86Close
    keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
    keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
    keycode 217 =
    keycode 218 = Print NoSymbol Print
    keycode 219 =
    keycode 220 = XF86WebCam NoSymbol XF86WebCam
    keycode 221 = XF86AudioPreset NoSymbol XF86AudioPreset
    keycode 222 =
    keycode 223 = XF86Mail NoSymbol XF86Mail
    keycode 224 = XF86Messenger NoSymbol XF86Messenger
    keycode 225 = XF86Search NoSymbol XF86Search
    keycode 226 = XF86Go NoSymbol XF86Go
    keycode 227 = XF86Finance NoSymbol XF86Finance
    keycode 228 = XF86Game NoSymbol XF86Game
    keycode 229 = XF86Shop NoSymbol XF86Shop
    keycode 230 =
    keycode 231 = Cancel NoSymbol Cancel
    keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
    keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
    keycode 235 = XF86Display NoSymbol XF86Display
    keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
    keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
    keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
    keycode 239 = XF86Send NoSymbol XF86Send
    keycode 240 = XF86Reply NoSymbol XF86Reply
    keycode 241 = XF86MailForward NoSymbol XF86MailForward
    keycode 242 = XF86Save NoSymbol XF86Save
    keycode 243 = XF86Documents NoSymbol XF86Documents
    keycode 244 = XF86Battery NoSymbol XF86Battery
    keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
    keycode 246 = XF86WLAN NoSymbol XF86WLAN
    keycode 247 = XF86UWB NoSymbol XF86UWB
    keycode 248 =
    keycode 249 = XF86Next_VMode NoSymbol XF86Next_VMode
    keycode 250 = XF86Prev_VMode NoSymbol XF86Prev_VMode
    keycode 251 = XF86MonBrightnessCycle NoSymbol XF86MonBrightnessCycle
    keycode 252 = XF86BrightnessAuto NoSymbol XF86BrightnessAuto
    keycode 253 = XF86DisplayOff NoSymbol XF86DisplayOff
    keycode 254 = XF86WWAN NoSymbol XF86WWAN
    keycode 255 = XF86RFKill NoSymbol XF86RFKill
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions