xkbcommon / libxkbcommon

keymap handling library for toolkits and window systems
https://xkbcommon.org
Other
283 stars 125 forks source link

[regression] FK20 override stopped working, always gets set to XF86AudioMicMute #378

Closed haasn closed 1 year ago

haasn commented 1 year ago

I don't know where to file this bug report in the sea of interconnected projects, so please point me in the correct direction.

Summary

I use the following xkb keymap (see below). It contains this section:

    override key <FK20> {
        symbols[Group1]= [      Cyrillic_e,      Cyrillic_E ],
        symbols[Group2]= [   guillemotleft,   guillemotleft ]
    };

In the past, pressing FK20 gave me a Cyrillic_e (э) letter. Since some time ago, however, pressing FK20 always gets mapped to XF86AudioMicMute.

Demonstration

For example in xev:

Before (good):

KeyPress event, serial 31, synthetic NO, window 0x1900001,
    root 0x860, subw 0x0, time 25254195, (1987,781), root:(3364,799),
    state 0x0, keycode 198 (keysym 0x6dc, Cyrillic_e), same_screen YES,
    XLookupString gives 2 bytes: (d1 8d) "э"
    XmbLookupString gives 2 bytes: (d1 8d) "э"
    XFilterEvent returns: False

After (bad):

KeyPress event, serial 34, synthetic NO, window 0x1900001,
    root 0x860, subw 0x0, time 25282804, (908,1106), root:(2285,1124),
    state 0x0, keycode 198 (keysym 0x1008ffb2, XF86AudioMicMute), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

From evtest:

Event: time 1695232664.281441, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006f
Event: time 1695232664.281441, type 1 (EV_KEY), code 190 (KEY_F20), value 1

So the key code is being sent correctly (as KEY_F20), it just gets incorrectly translated to XF86AudioMicMute instead of FK20, ignoring my XKB keymap.

Affected areas

This appears to affect both Wayland (testing with sway) and X11 (testing on bare WM without DE) equally.

Workaround

I can work around the issue by using xmodmap -e 'keycode 198 = Cyrillic_e Cyrillic_E guillemotleft guillemotleft', however this is not portable nor a permanent fix as it does not work on Wayland. (Is there a Wayland replacement for xmodmap by now?)

The keymap in use

Click to show ``` xkb_symbols "ergodox" { name[group1]="ErgoDox (custom)"; include "pc+us(intl)+inet(evdev)+terminate(ctrl_alt_bksp)" override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ exclam, 1, exclam, 1 ], symbols[Group2]= [ U2603, onesubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ at, 2, at, 2 ], symbols[Group2]= [ twosuperior, twosubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ numbersign, 3, numbersign, 3 ], symbols[Group2]= [ threesuperior, threesubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ dollar, 4, dollar, 4 ], symbols[Group2]= [ foursuperior, foursubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ percent, 5, percent, 5 ], symbols[Group2]= [ fivesuperior, fivesubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ asciicircum, 6, asciicircum, 6 ], symbols[Group2]= [ sixsuperior, sixsubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ ampersand, 7, ampersand, 7 ], symbols[Group2]= [ sevensuperior, sevensubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ asterisk, 8, asterisk, 8 ], symbols[Group2]= [ Greek_lamda, eightsubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ parenleft, 9, parenleft, 9 ], symbols[Group2]= [ leftsinglequotemark, ninesubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ parenright, 0, parenright, 0 ], symbols[Group2]= [ rightsinglequotemark, zerosubscript ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ minus, quotedbl, minus, quotedbl ], symbols[Group2]= [ rightdoublequotemark, U207A ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ equal, plus, equal, plus ], symbols[Group2]= [ multiply, division ] }; override key { type[group1]= "CTRL+ALT", symbols[Group1]= [ BackSpace, BackSpace, BackSpace, BackSpace, NoSymbol ], symbols[Group2]= [ BackSpace, BackSpace ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ q, Q, Cyrillic_ya, Cyrillic_YA ], symbols[Group2]= [ adiaeresis, Adiaeresis ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ w, W, Cyrillic_sha, Cyrillic_SHA ], symbols[Group2]= [ Cyrillic_shcha, Cyrillic_SHCHA ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ e, E, Cyrillic_ie, Cyrillic_IE ], symbols[Group2]= [ eacute, Eacute ] }; override key { type[group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ r, R, Cyrillic_er, Cyrillic_ER ], symbols[Group2]= [ U211A, U211D ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ t, T, Cyrillic_te, Cyrillic_TE ], symbols[Group2]= [ Greek_theta, U22A4 ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ y, Y, Cyrillic_yeru, Cyrillic_YERU ], symbols[Group2]= [ udiaeresis, Udiaeresis ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ u, U, Cyrillic_u, Cyrillic_U ], symbols[Group2]= [ uacute, Uacute ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ i, I, Cyrillic_i, Cyrillic_I ], symbols[Group2]= [ iacute, Iacute ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ o, O, Cyrillic_o, Cyrillic_O ], symbols[Group2]= [ oslash, Oslash ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ p, P, Cyrillic_pe, Cyrillic_PE ], symbols[Group2]= [ odiaeresis, Odiaeresis ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ bracketleft, braceleft, Cyrillic_softsign, Cyrillic_SOFTSIGN ], symbols[Group2]= [ guillemotleft, U27E8 ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ bracketright, braceright, Cyrillic_hardsign, Cyrillic_HARDSIGN ], symbols[Group2]= [ guillemotright, U27E9 ] }; key { [ Return ] }; key { [ Control_L ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ a, A, Cyrillic_a, Cyrillic_A ], symbols[Group2]= [ aring, Aring ] }; override key { type[group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ s, S, Cyrillic_es, Cyrillic_ES ], symbols[Group2]= [ ssharp, U1E9E ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ d, D, Cyrillic_de, Cyrillic_DE ], symbols[Group2]= [ eth, ETH ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ f, F, Cyrillic_ef, Cyrillic_EF ], symbols[Group2]= [ thorn, THORN ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ g, G, Cyrillic_ghe, Cyrillic_GHE ], symbols[Group2]= [ Greek_gamma, Greek_GAMMA ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ h, H, Cyrillic_che, Cyrillic_CHE ], symbols[Group2]= [ U2192, U21D2 ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ j, J, Cyrillic_shorti, Cyrillic_SHORTI ], symbols[Group2]= [ Cyrillic_zhe, Cyrillic_ZHE ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ k, K, Cyrillic_ka, Cyrillic_KA ], symbols[Group2]= [ omacron, umacron ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ l, L, Cyrillic_el, Cyrillic_EL ], symbols[Group2]= [ oacute, Oacute ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ semicolon, colon, semicolon, colon ], symbols[Group2]= [ leftdoublequotemark, degree ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ underscore, apostrophe, underscore, apostrophe ], symbols[Group2]= [ plusminus, approxeq ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ grave, asciitilde, Cyrillic_yu, Cyrillic_YU ], symbols[Group2]= [ U2200, U2245 ] }; key { [ Shift_L ] }; key { type= "FOUR_LEVEL", symbols[Group1]= [ backslash, bar, notsign, brokenbar ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ z, Z, Cyrillic_ze, Cyrillic_ZE ], symbols[Group2]= [ yacute, Yacute ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ x, X, Cyrillic_ha, Cyrillic_HA ], symbols[Group2]= [ Cyrillic_io, Cyrillic_IO ] }; override key { type[group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ c, C, Cyrillic_tse, Cyrillic_TSE ], symbols[Group2]= [ U2124, U2102 ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ v, V, Cyrillic_ve, Cyrillic_VE ], symbols[Group2]= [ ae, AE ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ b, B, Cyrillic_be, Cyrillic_BE ], symbols[Group2]= [ U21D4, U22A5 ] }; override key { type[group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ n, N, Cyrillic_en, Cyrillic_EN ], symbols[Group2]= [ U2115, U2135 ] }; override key { type[group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ m, M, Cyrillic_em, Cyrillic_EM ], symbols[Group2]= [ Greek_mu, Greek_epsilon ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ comma, less, comma, less ], symbols[Group2]= [ notequal, lessthanequal ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ period, period, NoSymbol, NoSymbol ], symbols[Group2]= [ guillemotright, guillemotright ] }; override key { type[group1]= "FOUR_LEVEL", symbols[Group1]= [ slash, question, slash, question ], symbols[Group2]= [ emptyset, U2218 ] }; key { [ Shift_R ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] }; key { [ Alt_L, Meta_L ] }; key { [ space ] }; key { [ Caps_Lock ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] }; key { [ Num_Lock ] }; key { [ Scroll_Lock ] }; key { [ KP_Home, KP_7 ] }; key { [ KP_Up, KP_8 ] }; key { [ KP_Prior, KP_9 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] }; key { [ KP_Left, KP_4 ] }; key { [ KP_Begin, KP_5 ] }; key { [ KP_Right, KP_6 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] }; key { [ KP_End, KP_1 ] }; key { [ KP_Down, KP_2 ] }; key { [ KP_Next, KP_3 ] }; key { [ KP_Insert, KP_0 ] }; key { [ KP_Delete, KP_Decimal ] }; key { [ ISO_Level3_Shift ] }; key { type= "FOUR_LEVEL", symbols[Group1]= [ backslash, bar, backslash, bar ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] }; key { [ Katakana ] }; key { [ Hiragana ] }; key { [ Henkan_Mode ] }; key { [ Hiragana_Katakana ] }; key { [ Muhenkan ] }; key { [ KP_Enter ] }; key { [ ISO_Level3_Shift, ISO_Level3_Shift ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] }; key { type= "PC_ALT_LEVEL2", symbols[Group1]= [ Print, Sys_Req ] }; key { type= "ONE_LEVEL", symbols[Group1]= [ Mode_switch ] }; key { [ Linefeed ] }; key { [ Home ] }; key { [ Up ] }; key { [ Prior ] }; key { [ Left ] }; key { [ Right ] }; key { [ End ] }; key { [ Down ] }; key { [ Next ] }; key { [ Insert ] }; key { [ Delete ] }; key { [ XF86AudioMute ] }; key { [ XF86AudioLowerVolume ] }; key { [ XF86AudioRaiseVolume ] }; key { [ XF86PowerOff ] }; key { [ KP_Equal ] }; key { [ plusminus ] }; key { type= "PC_CONTROL_LEVEL2", symbols[Group1]= [ Pause, Break ] }; key { [ XF86LaunchA ] }; key { [ KP_Decimal, KP_Decimal ] }; key { [ Hangul ] }; key { [ Hangul_Hanja ] }; key { [ Super_L ] }; key { [ Super_R ] }; key { [ Menu ] }; key { [ Cancel ] }; key { [ Redo ] }; key { [ SunProps ] }; key { [ Undo ] }; key { [ SunFront ] }; key { [ XF86Copy ] }; key { [ XF86Open ] }; key { [ XF86Paste ] }; key { [ Find ] }; key { [ XF86Cut ] }; key { [ Help ] }; key { [ XF86MenuKB ] }; key { [ XF86Calculator ] }; key { [ XF86Sleep ] }; key { [ XF86WakeUp ] }; key { [ XF86Explorer ] }; key { [ XF86Send ] }; key { [ XF86Xfer ] }; key { [ XF86Launch1 ] }; key { [ XF86Launch2 ] }; key { [ XF86WWW ] }; key { [ XF86DOS ] }; key { [ XF86ScreenSaver ] }; key { [ XF86RotateWindows ] }; key { [ XF86TaskPane ] }; key { [ XF86Mail ] }; key { [ XF86Favorites ] }; key { [ XF86MyComputer ] }; key { [ XF86Back ] }; key { [ XF86Forward ] }; key { [ XF86Eject ] }; key { [ XF86Eject ] }; key { [ XF86AudioNext ] }; key { [ XF86AudioPlay, XF86AudioPause ] }; key { [ XF86AudioPrev ] }; key { [ XF86AudioStop, XF86Eject ] }; key { [ XF86AudioRecord ] }; key { [ XF86AudioRewind ] }; key { [ XF86Phone ] }; key { [ XF86Tools ] }; key { [ XF86HomePage ] }; key { [ XF86Reload ] }; key { [ XF86Close ] }; key { [ XF86ScrollUp ] }; key { [ XF86ScrollDown ] }; key { [ parenleft ] }; key { [ parenright ] }; key { [ XF86New ] }; key { [ Redo ] }; override key { [ F13, F13 ] }; override key { [ F14, F14 ] }; override key { [ F15, F15 ] }; override key { [ F16, F16 ] }; override key { [ F17, F17 ] }; override key { [ F18, F18 ] }; override key { [ F19, F19 ] }; override key { symbols[Group1]= [ Cyrillic_e, Cyrillic_E ], symbols[Group2]= [ guillemotleft, guillemotleft ] }; override key { symbols[Group1]= [ period, greater ], symbols[Group2]= [ periodcentered, greaterthanequal ], symbols[Group3]= [ period, greater ] }; key { [ XF86TouchpadOn ] }; key { [ XF86TouchpadOff ] }; key { [ ISO_Level5_Shift ] }; key { [ NoSymbol, Alt_L ] }; key { [ NoSymbol, Meta_L ] }; key { [ NoSymbol, Super_L ] }; key { [ NoSymbol, Hyper_L ] }; key { [ XF86AudioPlay ] }; key { [ XF86AudioPause ] }; key { [ XF86Launch3 ] }; key { [ XF86Launch4 ] }; key { [ XF86LaunchB ] }; key { [ XF86Suspend ] }; key { [ XF86Close ] }; key { [ XF86AudioPlay ] }; key { [ XF86AudioForward ] }; key { [ Print ] }; key { [ XF86WebCam ] }; key { [ XF86AudioPreset ] }; key { [ XF86Mail ] }; key { [ XF86Messenger ] }; key { [ XF86Search ] }; key { [ XF86Go ] }; key { [ XF86Finance ] }; key { [ XF86Game ] }; key { [ XF86Shop ] }; key { [ Cancel ] }; key { [ XF86MonBrightnessDown ] }; key { [ XF86MonBrightnessUp ] }; key { [ XF86AudioMedia ] }; key { [ XF86Display ] }; key { [ XF86KbdLightOnOff ] }; key { [ XF86KbdBrightnessDown ] }; key { [ XF86KbdBrightnessUp ] }; key { [ XF86Send ] }; key { [ XF86Reply ] }; key { [ XF86MailForward ] }; key { [ XF86Save ] }; key { [ XF86Documents ] }; key { [ XF86Battery ] }; key { [ XF86Bluetooth ] }; key { [ XF86WLAN ] }; key { [ XF86UWB ] }; key { [ XF86Next_VMode ] }; key { [ XF86Prev_VMode ] }; key { [ XF86MonBrightnessCycle ] }; key { [ XF86BrightnessAuto ] }; key { [ XF86DisplayOff ] }; key { [ XF86WWAN ] }; key { [ XF86RFKill ] }; modifier_map Control { }; modifier_map Shift { }; modifier_map Shift { }; modifier_map Mod1 { }; modifier_map Lock { }; modifier_map Mod2 { }; modifier_map Mod5 { }; modifier_map Mod4 { }; modifier_map Mod3 { }; modifier_map Mod3 { }; modifier_map Mod1 { }; modifier_map Mod1 { }; modifier_map Mod4 { }; }; ```
wismill commented 1 year ago

Thank you for reporting this issue. I think this should be filed to xkeyboard-config project, but let’s investigate a bit:

I think that it is probably due to inet being included again right after your layout file, overwriting your changes.

Please copy the output of the following command (replacing the relevant values):

xkbcli compile-keymap --include <YOUR_CUSTOM_XKB_DIR> --include-defaults --layout <YOUR_LAYOUT_FILE> --verbose`
wismill commented 1 year ago

@haasn you could have linked the issue you filed xkeyboard-config.

Relevant info:

I still do not know how you tested with xkbcommon in Wayland, nor with X11. xkbcommon is most probably not involved in X11 case, which leads me to think it is an issue with xkeyboard-config.

haasn commented 1 year ago

What is your configuration: OS, DE, versions?

As of writing:

How do you load your custom layout? You are using Wayland, so I suspect you are using user configuration.

On X.org, using setxkbmap ergodox. On Wayland, using input type:keyboard { xkb_layout "ergodox" } in sway config.

Do you use custom rules file?

I am not sure what this means, so probably not.

What version of xkeyboard-config are you using? Did you try to use an older one?

Tried 2.39, 2.38 and 2.36. None worked, even though 2.36 is older than the version I had the last time it worked. (I don't remember when, exactly, but it definitely worked no more than a year ago)

Does works as you intended, or do you get XF86TouchpadToggle?

I get XF86TouchpadToggle.

Please copy the output of the following command (replacing the relevant values):

Click to view output ``` xkbcommon: DEBUG: Include path failed: /home/nand/.config/xkb (No such file or directory) xkbcommon: DEBUG: Include path failed: /home/nand/.xkb (No such file or directory) xkbcommon: DEBUG: Include path failed: /etc/xkb (No such file or directory) xkbcommon: DEBUG: Include path added: /usr/share/X11/xkb xkbcommon: DEBUG: Compiling from RMLVO: rules 'evdev', model 'pc105', layout 'ergodox', variant '(null)', options '(null)' xkbcommon: DEBUG: Compiling from KcCGST: keycodes 'evdev+aliases(qwerty)', types 'complete', compat 'complete', symbols 'pc+ergodox+inet(evdev)' xkbcommon: DEBUG: Compiling xkb_keycodes "(unnamed)" xkbcommon: DEBUG: Compiling xkb_types "(unnamed)" xkbcommon: DEBUG: Compiling xkb_compatibility "(unnamed)" xkbcommon: DEBUG: The "group" statement in compat is unsupported; Ignored xkbcommon: DEBUG: The "group" statement in compat is unsupported; Ignored xkbcommon: DEBUG: The "group" statement in compat is unsupported; Ignored xkbcommon: DEBUG: The "allowExplicit" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: The "allowExplicit" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: The "allowExplicit" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: The "allowExplicit" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: The "indicatorDrivesKeyboard" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: The "allowExplicit" field in indicator statements is unsupported; Ignored xkbcommon: DEBUG: Indicator name "Shift Lock" was not declared in the keycodes section; Adding new indicator xkbcommon: DEBUG: Indicator name "Group 2" was not declared in the keycodes section; Adding new indicator xkbcommon: DEBUG: Indicator name "Mouse Keys" was not declared in the keycodes section; Adding new indicator xkbcommon: DEBUG: Compiling xkb_symbols "(unnamed)" xkbcommon: WARNING: No map in include statement, but "ergodox" contains several; Using first defined map, "ergodox" xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: inet:323:58: unrecognized keysym "XF86EmojiPicker" xkbcommon: WARNING: inet:324:58: unrecognized keysym "XF86Dictate" xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 2/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 3/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 4/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: Symbol map for key redefined; Using first definition for conflicting fields xkbcommon: WARNING: inet:323:58: unrecognized keysym "XF86EmojiPicker" xkbcommon: WARNING: inet:324:58: unrecognized keysym "XF86Dictate" xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to xkbcommon: WARNING: Type "ONE_LEVEL" has 1 levels, but has 2 levels; Ignoring extra symbols xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: INFO: No symbols defined for xkbcommon: WARNING: Key "Control_R" not found in symbol map; Modifier map entry for Control not updated xkbcommon: WARNING: Key "Alt_R" not found in symbol map; Modifier map entry for Mod1 not updated xkbcommon: WARNING: Key "Meta_R" not found in symbol map; Modifier map entry for Mod1 not updated xkb_keymap { xkb_keycodes "(unnamed)" { minimum = 8; maximum = 708; = 9; = 10; = 11; = 12; = 13; = 14; = 15; = 16; = 17; = 18; = 19; = 20; = 21; = 22; = 23; = 24; = 25; = 26; = 27; = 28; = 29; = 30; = 31; = 32; = 33; = 34; = 35; = 36; = 37; = 38; = 39; = 40; = 41; = 42; = 43; = 44; = 45; = 46; = 47; = 48; = 49; = 50; = 51; = 52; = 53; = 54; = 55; = 56; = 57; = 58; = 59; = 60; = 61; = 62; = 63; = 64; = 65; = 66; = 67; = 68; = 69; = 70; = 71; = 72; = 73; = 74; = 75; = 76; = 77; = 78; = 79; = 80; = 81; = 82; = 83; = 84; = 85; = 86; = 87; = 88; = 89; = 90; = 91; = 92; = 94; = 95; = 96; = 97; = 98; = 99; = 100; = 101; = 102; = 103; = 104; = 105; = 106; = 107; = 108; = 109; = 110; = 111; = 112; = 113; = 114; = 115; = 116; = 117; = 118; = 119; = 120; = 121; = 122; = 123; = 124; = 125; = 126; = 127; = 128; = 129; = 130; = 131; = 132; = 133; = 134; = 135; = 136; = 137; = 138; = 139; = 140; = 141; = 142; = 143; = 144; = 145; = 146; = 147; = 148; = 149; = 150; = 151; = 152; = 153; = 154; = 155; = 156; = 157; = 158; = 159; = 160; = 161; = 162; = 163; = 164; = 165; = 166; = 167; = 168; = 169; = 170; = 171; = 172; = 173; = 174; = 175; = 176; = 177; = 178; = 179; = 180; = 181; = 182; = 183; = 184; = 185; = 186; = 187; = 188; = 189; = 190; = 191; = 192; = 193; = 194; = 195; = 196; = 197; = 198; = 199; = 200; = 201; = 202; = 203; = 204; = 205; = 206; = 207; = 208; = 209; = 210; = 211; = 212; = 213; = 214; = 215; = 216; = 217; = 218; = 219; = 220; = 221; = 222; = 223; = 224; = 225; = 226; = 227; = 228; = 229; = 230; = 231; = 232; = 233; = 234; = 235; = 236; = 237; = 238; = 239; = 240; = 241; = 242; = 243; = 244; = 245; = 246; = 247; = 248; = 249; = 250; = 251; = 252; = 253; = 254; = 255; = 256; = 360; = 361; = 362; = 363; = 364; = 365; = 366; = 367; = 368; = 369; = 370; = 371; = 372; = 373; = 374; = 375; = 376; = 377; = 378; = 379; = 380; = 381; = 382; = 383; = 384; = 385; = 386; = 387; = 388; = 389; = 390; = 391; = 392; = 393; = 394; = 395; = 396; = 397; = 398; = 399; = 400; = 401; = 402; = 403; = 404; = 405; = 406; = 407; = 408; = 409; = 410; = 411; = 412; = 413; = 414; = 415; = 416; = 417; = 418; = 419; = 420; = 421; = 422; = 423; = 424; = 425; = 426; = 427; = 428; = 429; = 430; = 431; = 432; = 433; = 434; = 435; = 436; = 437; = 438; = 439; = 440; = 441; = 442; = 443; = 444; = 445; = 446; = 447; = 448; = 449; = 450; = 452; = 453; = 454; = 456; = 457; = 458; = 459; = 472; = 473; = 474; = 475; = 476; = 477; = 478; = 479; = 480; = 481; = 482; = 483; = 484; = 485; = 486; = 487; = 488; = 489; = 490; = 491; = 492; = 493; = 505; = 506; = 507; = 508; = 509; = 510; = 511; = 512; = 513; = 514; = 520; = 521; = 522; = 523; = 524; = 525; = 526; = 527; = 528; = 529; = 530; = 531; = 532; = 533; = 534; = 535; = 536; = 537; = 538; = 539; = 540; = 541; = 542; = 543; = 544; = 545; = 546; = 547; = 548; = 549; = 550; = 568; = 569; = 584; = 585; = 586; = 587; = 588; = 589; = 590; = 591; = 592; = 593; = 594; = 600; = 601; = 616; = 617; = 618; = 619; = 620; = 621; = 622; = 623; = 624; = 625; = 626; = 627; = 628; = 629; = 630; = 631; = 632; = 633; = 634; = 635; = 636; = 637; = 638; = 639; = 640; = 641; = 642; = 664; = 665; = 666; = 667; = 668; = 669; = 670; = 671; = 672; = 673; = 674; = 675; = 676; = 677; = 678; = 679; = 680; = 681; = 682; = 683; = 684; = 685; = 686; = 687; = 688; = 689; = 690; = 691; = 692; = 693; = 696; = 697; = 698; = 699; = 700; = 701; = 704; = 705; = 706; = 707; = 708; indicator 1 = "Caps Lock"; indicator 2 = "Num Lock"; indicator 3 = "Scroll Lock"; indicator 4 = "Compose"; indicator 5 = "Kana"; indicator 6 = "Sleep"; indicator 7 = "Suspend"; indicator 8 = "Mute"; indicator 9 = "Misc"; indicator 10 = "Mail"; indicator 11 = "Charging"; indicator 12 = "Shift Lock"; indicator 13 = "Group 2"; indicator 14 = "Mouse Keys"; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; alias = ; }; xkb_types "(unnamed)" { virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock; type "ONE_LEVEL" { modifiers= none; level_name[1]= "Any"; }; type "TWO_LEVEL" { modifiers= Shift; map[Shift]= 2; level_name[1]= "Base"; level_name[2]= "Shift"; }; type "ALPHABETIC" { modifiers= Shift+Lock; map[Shift]= 2; map[Lock]= 2; level_name[1]= "Base"; level_name[2]= "Caps"; }; type "PC_ALT_LEVEL2" { modifiers= Alt; map[Alt]= 2; level_name[1]= "Base"; level_name[2]= "Alt"; }; type "PC_SUPER_LEVEL2" { modifiers= Mod4; map[Mod4]= 2; level_name[1]= "Base"; level_name[2]= "Super"; }; type "PC_CONTROL_LEVEL2" { modifiers= Control; map[Control]= 2; level_name[1]= "Base"; level_name[2]= "Control"; }; type "CTRL+ALT" { modifiers= Shift+Control+Alt+LevelThree; map[Shift]= 2; preserve[Shift]= Shift; map[LevelThree]= 3; map[Shift+LevelThree]= 4; preserve[Shift+LevelThree]= Shift; map[Control+Alt]= 5; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "Ctrl+Alt"; }; type "THREE_LEVEL" { modifiers= Shift+LevelThree; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 3; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "Level3"; }; type "FOUR_LEVEL" { modifiers= Shift+LevelThree; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; type "FOUR_LEVEL_ALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 4; map[Shift+Lock+LevelThree]= 3; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; type "FOUR_LEVEL_SEMIALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 3; preserve[Lock+LevelThree]= Lock; map[Shift+Lock+LevelThree]= 4; preserve[Shift+Lock+LevelThree]= Lock; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; type "FOUR_LEVEL_KEYPAD" { modifiers= Shift+NumLock+LevelThree; map[Shift]= 2; map[NumLock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[NumLock+LevelThree]= 4; map[Shift+NumLock+LevelThree]= 3; level_name[1]= "Base"; level_name[2]= "Shift/Numlock"; level_name[3]= "AltGr"; level_name[4]= "Shift/Numlock AltGr"; }; type "FOUR_LEVEL_MIXED_KEYPAD" { modifiers= Shift+NumLock+LevelThree; map[Shift]= 2; map[NumLock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[NumLock+LevelThree]= 3; map[Shift+NumLock+LevelThree]= 4; level_name[1]= "Base"; level_name[2]= "Number"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; type "FOUR_LEVEL_X" { modifiers= Shift+Control+Alt+LevelThree; map[LevelThree]= 2; map[Shift+LevelThree]= 3; map[Control+Alt]= 4; level_name[1]= "Base"; level_name[2]= "AltGr"; level_name[3]= "Shift AltGr"; level_name[4]= "Ctrl+Alt"; }; type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= 2; map[Lock]= 4; preserve[Lock]= Lock; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 3; preserve[Lock+LevelThree]= Lock; map[Shift+Lock+LevelThree]= 3; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Caps / Shift AltGr"; }; type "FOUR_LEVEL_PLUS_LOCK" { modifiers= Shift+Lock+LevelThree; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock]= 5; map[Shift+Lock]= 2; map[Lock+LevelThree]= 3; map[Shift+Lock+LevelThree]= 4; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "Lock"; }; type "EIGHT_LEVEL" { modifiers= Shift+LevelThree+LevelFive; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[LevelFive]= 5; map[Shift+LevelFive]= 6; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X AltGr"; level_name[8]= "X Shift AltGr"; }; type "EIGHT_LEVEL_ALPHABETIC" { modifiers= Shift+Lock+LevelThree+LevelFive; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 4; map[Shift+Lock+LevelThree]= 3; map[LevelFive]= 5; map[Shift+LevelFive]= 6; map[Lock+LevelFive]= 6; map[Shift+Lock+LevelFive]= 5; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; map[Lock+LevelThree+LevelFive]= 8; map[Shift+Lock+LevelThree+LevelFive]= 7; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X AltGr"; level_name[8]= "X Shift AltGr"; }; type "EIGHT_LEVEL_SEMIALPHABETIC" { modifiers= Shift+Lock+LevelThree+LevelFive; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 3; preserve[Lock+LevelThree]= Lock; map[Shift+Lock+LevelThree]= 4; preserve[Shift+Lock+LevelThree]= Lock; map[LevelFive]= 5; map[Shift+LevelFive]= 6; map[Lock+LevelFive]= 6; map[Shift+Lock+LevelFive]= 5; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; map[Lock+LevelThree+LevelFive]= 7; preserve[Lock+LevelThree+LevelFive]= Lock; map[Shift+Lock+LevelThree+LevelFive]= 8; preserve[Shift+Lock+LevelThree+LevelFive]= Lock; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X AltGr"; level_name[8]= "X Shift AltGr"; }; type "EIGHT_LEVEL_WITH_LEVEL5_LOCK" { modifiers= Shift+NumLock+LevelThree+LevelFive; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[LevelFive]= 5; map[Shift+LevelFive]= 6; preserve[Shift+LevelFive]= Shift; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; map[NumLock]= 5; map[Shift+NumLock]= 6; preserve[Shift+NumLock]= Shift; map[NumLock+LevelThree]= 7; map[Shift+NumLock+LevelThree]= 8; map[Shift+NumLock+LevelFive]= 2; map[NumLock+LevelThree+LevelFive]= 3; map[Shift+NumLock+LevelThree+LevelFive]= 4; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X AltGr"; level_name[8]= "X Shift AltGr"; }; type "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK" { modifiers= Shift+Lock+NumLock+LevelThree+LevelFive; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[LevelFive]= 5; map[Shift+LevelFive]= 6; preserve[Shift+LevelFive]= Shift; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; map[NumLock]= 5; map[Shift+NumLock]= 6; preserve[Shift+NumLock]= Shift; map[NumLock+LevelThree]= 7; map[Shift+NumLock+LevelThree]= 8; map[Shift+NumLock+LevelFive]= 2; map[NumLock+LevelThree+LevelFive]= 3; map[Shift+NumLock+LevelThree+LevelFive]= 4; map[Lock]= 2; map[Lock+LevelThree]= 3; map[Shift+Lock+LevelThree]= 4; map[Lock+LevelFive]= 5; map[Shift+Lock+LevelFive]= 6; map[Lock+LevelThree+LevelFive]= 7; map[Shift+Lock+LevelThree+LevelFive]= 8; map[Lock+NumLock]= 5; map[Shift+Lock+NumLock]= 6; map[Lock+NumLock+LevelThree]= 7; map[Shift+Lock+NumLock+LevelThree]= 8; map[Lock+NumLock+LevelFive]= 2; map[Lock+NumLock+LevelThree+LevelFive]= 3; map[Shift+Lock+NumLock+LevelThree+LevelFive]= 4; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X AltGr"; level_name[8]= "X Shift AltGr"; }; type "EIGHT_LEVEL_BY_CTRL" { modifiers= Shift+Lock+Control+LevelThree; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 4; map[Shift+Lock+LevelThree]= 3; map[Control]= 5; map[Shift+Control]= 6; map[Lock+Control]= 6; map[Shift+Lock+Control]= 5; map[Control+LevelThree]= 7; map[Shift+Control+LevelThree]= 8; map[Lock+Control+LevelThree]= 8; map[Shift+Lock+Control+LevelThree]= 7; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "Level3"; level_name[4]= "Shift Level3"; level_name[5]= "Ctrl"; level_name[6]= "Shift Ctrl"; level_name[7]= "Level3 Ctrl"; level_name[8]= "Shift Level3 Ctrl"; }; type "KEYPAD" { modifiers= Shift+NumLock; map[NumLock]= 2; level_name[1]= "Base"; level_name[2]= "Number"; }; type "SHIFT+ALT" { modifiers= Shift+Alt; map[Shift+Alt]= 2; level_name[1]= "Base"; level_name[2]= "Shift+Alt"; }; }; xkb_compatibility "(unnamed)" { virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock; interpret.useModMapMods= AnyLevel; interpret.repeat= False; interpret ISO_Level2_Latch+Exactly(Shift) { useModMapMods=level1; action= LatchMods(modifiers=Shift,clearLocks,latchToLock); }; interpret Shift_Lock+AnyOf(Shift+Lock) { action= LockMods(modifiers=Shift); }; interpret Num_Lock+AnyOf(all) { virtualModifier= NumLock; action= LockMods(modifiers=NumLock); }; interpret ISO_Level3_Shift+AnyOf(all) { virtualModifier= LevelThree; useModMapMods=level1; action= SetMods(modifiers=LevelThree,clearLocks); }; interpret ISO_Level3_Latch+AnyOf(all) { virtualModifier= LevelThree; useModMapMods=level1; action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); }; interpret ISO_Level3_Lock+AnyOf(all) { virtualModifier= LevelThree; useModMapMods=level1; action= LockMods(modifiers=LevelThree); }; interpret Alt_L+AnyOf(all) { virtualModifier= Alt; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Alt_R+AnyOf(all) { virtualModifier= Alt; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Meta_L+AnyOf(all) { virtualModifier= Meta; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Meta_R+AnyOf(all) { virtualModifier= Meta; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Super_L+AnyOf(all) { virtualModifier= Super; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Super_R+AnyOf(all) { virtualModifier= Super; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Hyper_L+AnyOf(all) { virtualModifier= Hyper; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Hyper_R+AnyOf(all) { virtualModifier= Hyper; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Scroll_Lock+AnyOf(all) { virtualModifier= ScrollLock; action= LockMods(modifiers=modMapMods); }; interpret ISO_Level5_Shift+AnyOf(all) { virtualModifier= LevelFive; useModMapMods=level1; action= SetMods(modifiers=LevelFive,clearLocks); }; interpret ISO_Level5_Latch+AnyOf(all) { virtualModifier= LevelFive; useModMapMods=level1; action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); }; interpret ISO_Level5_Lock+AnyOf(all) { virtualModifier= LevelFive; useModMapMods=level1; action= LockMods(modifiers=LevelFive); }; interpret Mode_switch+AnyOfOrNone(all) { action= SetGroup(group=+1); }; interpret ISO_Level3_Shift+AnyOfOrNone(all) { action= SetMods(modifiers=LevelThree,clearLocks); }; interpret ISO_Level3_Latch+AnyOfOrNone(all) { action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); }; interpret ISO_Level3_Lock+AnyOfOrNone(all) { action= LockMods(modifiers=LevelThree); }; interpret ISO_Group_Latch+AnyOfOrNone(all) { action= LatchGroup(group=2); }; interpret ISO_Next_Group+AnyOfOrNone(all) { action= LockGroup(group=+1); }; interpret ISO_Prev_Group+AnyOfOrNone(all) { action= LockGroup(group=-1); }; interpret ISO_First_Group+AnyOfOrNone(all) { action= LockGroup(group=1); }; interpret ISO_Last_Group+AnyOfOrNone(all) { action= LockGroup(group=2); }; interpret KP_1+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=+1); }; interpret KP_End+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=+1); }; interpret KP_2+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+0,y=+1); }; interpret KP_Down+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+0,y=+1); }; interpret KP_3+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=+1); }; interpret KP_Next+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=+1); }; interpret KP_4+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=+0); }; interpret KP_Left+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=+0); }; interpret KP_6+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=+0); }; interpret KP_Right+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=+0); }; interpret KP_7+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=-1); }; interpret KP_Home+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=-1); }; interpret KP_8+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+0,y=-1); }; interpret KP_Up+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+0,y=-1); }; interpret KP_9+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=-1); }; interpret KP_Prior+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=-1); }; interpret KP_5+AnyOfOrNone(all) { repeat= True; action= PtrBtn(button=default); }; interpret KP_Begin+AnyOfOrNone(all) { repeat= True; action= PtrBtn(button=default); }; interpret KP_F2+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=1); }; interpret KP_Divide+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=1); }; interpret KP_F3+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=2); }; interpret KP_Multiply+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=2); }; interpret KP_F4+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=3); }; interpret KP_Subtract+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=3); }; interpret KP_Separator+AnyOfOrNone(all) { repeat= True; action= PtrBtn(button=default,count=2); }; interpret KP_Add+AnyOfOrNone(all) { repeat= True; action= PtrBtn(button=default,count=2); }; interpret KP_0+AnyOfOrNone(all) { repeat= True; action= LockPtrBtn(button=default,affect=lock); }; interpret KP_Insert+AnyOfOrNone(all) { repeat= True; action= LockPtrBtn(button=default,affect=lock); }; interpret KP_Decimal+AnyOfOrNone(all) { repeat= True; action= LockPtrBtn(button=default,affect=unlock); }; interpret KP_Delete+AnyOfOrNone(all) { repeat= True; action= LockPtrBtn(button=default,affect=unlock); }; interpret F25+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=1); }; interpret F26+AnyOfOrNone(all) { repeat= True; action= SetPtrDflt(affect=button,button=2); }; interpret F27+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=-1); }; interpret F29+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=-1); }; interpret F31+AnyOfOrNone(all) { repeat= True; action= PtrBtn(button=default); }; interpret F33+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=-1,y=+1); }; interpret F35+AnyOfOrNone(all) { repeat= True; action= MovePtr(x=+1,y=+1); }; interpret Pointer_Button_Dflt+AnyOfOrNone(all) { action= PtrBtn(button=default); }; interpret Pointer_Button1+AnyOfOrNone(all) { action= PtrBtn(button=1); }; interpret Pointer_Button2+AnyOfOrNone(all) { action= PtrBtn(button=2); }; interpret Pointer_Button3+AnyOfOrNone(all) { action= PtrBtn(button=3); }; interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { action= PtrBtn(button=default,count=2); }; interpret Pointer_DblClick1+AnyOfOrNone(all) { action= PtrBtn(button=1,count=2); }; interpret Pointer_DblClick2+AnyOfOrNone(all) { action= PtrBtn(button=2,count=2); }; interpret Pointer_DblClick3+AnyOfOrNone(all) { action= PtrBtn(button=3,count=2); }; interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { action= LockPtrBtn(button=default,affect=both); }; interpret Pointer_Drag1+AnyOfOrNone(all) { action= LockPtrBtn(button=1,affect=both); }; interpret Pointer_Drag2+AnyOfOrNone(all) { action= LockPtrBtn(button=2,affect=both); }; interpret Pointer_Drag3+AnyOfOrNone(all) { action= LockPtrBtn(button=3,affect=both); }; interpret Pointer_EnableKeys+AnyOfOrNone(all) { action= LockControls(controls=MouseKeys); }; interpret Pointer_Accelerate+AnyOfOrNone(all) { action= LockControls(controls=MouseKeysAccel); }; interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { action= SetPtrDflt(affect=button,button=+1); }; interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { action= SetPtrDflt(affect=button,button=-1); }; interpret AccessX_Enable+AnyOfOrNone(all) { action= LockControls(controls=AccessXKeys); }; interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { action= LockControls(controls=AccessXFeedback); }; interpret RepeatKeys_Enable+AnyOfOrNone(all) { action= LockControls(controls=RepeatKeys); }; interpret SlowKeys_Enable+AnyOfOrNone(all) { action= LockControls(controls=SlowKeys); }; interpret BounceKeys_Enable+AnyOfOrNone(all) { action= LockControls(controls=BounceKeys); }; interpret StickyKeys_Enable+AnyOfOrNone(all) { action= LockControls(controls=StickyKeys); }; interpret MouseKeys_Enable+AnyOfOrNone(all) { action= LockControls(controls=MouseKeys); }; interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { action= LockControls(controls=MouseKeysAccel); }; interpret Overlay1_Enable+AnyOfOrNone(all) { action= LockControls(controls=none); }; interpret Overlay2_Enable+AnyOfOrNone(all) { action= LockControls(controls=none); }; interpret AudibleBell_Enable+AnyOfOrNone(all) { action= LockControls(controls=AudibleBell); }; interpret Terminate_Server+AnyOfOrNone(all) { action= Terminate(); }; interpret Alt_L+AnyOfOrNone(all) { action= SetMods(modifiers=Alt,clearLocks); }; interpret Alt_R+AnyOfOrNone(all) { action= SetMods(modifiers=Alt,clearLocks); }; interpret Meta_L+AnyOfOrNone(all) { action= SetMods(modifiers=Meta,clearLocks); }; interpret Meta_R+AnyOfOrNone(all) { action= SetMods(modifiers=Meta,clearLocks); }; interpret Super_L+AnyOfOrNone(all) { action= SetMods(modifiers=Super,clearLocks); }; interpret Super_R+AnyOfOrNone(all) { action= SetMods(modifiers=Super,clearLocks); }; interpret Hyper_L+AnyOfOrNone(all) { action= SetMods(modifiers=Hyper,clearLocks); }; interpret Hyper_R+AnyOfOrNone(all) { action= SetMods(modifiers=Hyper,clearLocks); }; interpret Shift_L+AnyOfOrNone(all) { action= SetMods(modifiers=Shift,clearLocks); }; interpret XF86Switch_VT_1+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=1,!same); }; interpret XF86Switch_VT_2+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=2,!same); }; interpret XF86Switch_VT_3+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=3,!same); }; interpret XF86Switch_VT_4+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=4,!same); }; interpret XF86Switch_VT_5+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=5,!same); }; interpret XF86Switch_VT_6+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=6,!same); }; interpret XF86Switch_VT_7+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=7,!same); }; interpret XF86Switch_VT_8+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=8,!same); }; interpret XF86Switch_VT_9+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=9,!same); }; interpret XF86Switch_VT_10+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=10,!same); }; interpret XF86Switch_VT_11+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=11,!same); }; interpret XF86Switch_VT_12+AnyOfOrNone(all) { repeat= True; action= SwitchScreen(screen=12,!same); }; interpret XF86LogGrabInfo+AnyOfOrNone(all) { repeat= True; action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); }; interpret XF86LogWindowTree+AnyOfOrNone(all) { repeat= True; action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); }; interpret XF86Next_VMode+AnyOfOrNone(all) { repeat= True; action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); }; interpret XF86Prev_VMode+AnyOfOrNone(all) { repeat= True; action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); }; interpret ISO_Level5_Shift+AnyOfOrNone(all) { action= SetMods(modifiers=LevelFive,clearLocks); }; interpret ISO_Level5_Latch+AnyOfOrNone(all) { action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); }; interpret ISO_Level5_Lock+AnyOfOrNone(all) { action= LockMods(modifiers=LevelFive); }; interpret Caps_Lock+AnyOfOrNone(all) { action= LockMods(modifiers=Lock); }; interpret Any+Exactly(Lock) { action= LockMods(modifiers=Lock); }; interpret Any+AnyOf(all) { action= SetMods(modifiers=modMapMods,clearLocks); }; indicator "Caps Lock" { whichModState= locked; modifiers= Lock; }; indicator "Num Lock" { whichModState= locked; modifiers= NumLock; }; indicator "Scroll Lock" { whichModState= locked; modifiers= ScrollLock; }; indicator "Shift Lock" { whichModState= locked; modifiers= Shift; }; indicator "Group 2" { groups= 0xfe; }; indicator "Mouse Keys" { controls= MouseKeys; }; }; xkb_symbols "(unnamed)" { name[Group1]="English (US, intl., with dead keys)"; key { [ Escape ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ exclam, 1, exclam, 1 ], symbols[Group2]= [ U2603, onesubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ at, 2, at, 2 ], symbols[Group2]= [ twosuperior, twosubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ numbersign, 3, numbersign, 3 ], symbols[Group2]= [ threesuperior, threesubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ dollar, 4, dollar, 4 ], symbols[Group2]= [ foursuperior, foursubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ percent, 5, percent, 5 ], symbols[Group2]= [ fivesuperior, fivesubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ asciicircum, 6, asciicircum, 6 ], symbols[Group2]= [ sixsuperior, sixsubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ ampersand, 7, ampersand, 7 ], symbols[Group2]= [ sevensuperior, sevensubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ asterisk, 8, asterisk, 8 ], symbols[Group2]= [ Greek_lamda, eightsubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ parenleft, 9, parenleft, 9 ], symbols[Group2]= [ leftsinglequotemark, ninesubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ parenright, 0, parenright, 0 ], symbols[Group2]= [ rightsinglequotemark, zerosubscript ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ minus, quotedbl, minus, quotedbl ], symbols[Group2]= [ rightdoublequotemark, U207A ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ equal, plus, equal, plus ], symbols[Group2]= [ multiply, division ] }; key { type= "CTRL+ALT", symbols[Group1]= [ BackSpace, BackSpace, BackSpace, BackSpace, Terminate_Server ], symbols[Group2]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, NoSymbol ] }; key { [ Tab, ISO_Left_Tab ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ q, Q, Cyrillic_ya, Cyrillic_YA ], symbols[Group2]= [ adiaeresis, Adiaeresis ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ w, W, Cyrillic_sha, Cyrillic_SHA ], symbols[Group2]= [ Cyrillic_shcha, Cyrillic_SHCHA ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ e, E, Cyrillic_ie, Cyrillic_IE ], symbols[Group2]= [ eacute, Eacute ] }; key { type[Group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ r, R, Cyrillic_er, Cyrillic_ER ], symbols[Group2]= [ U211A, U211D ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ t, T, Cyrillic_te, Cyrillic_TE ], symbols[Group2]= [ Greek_theta, U22A4 ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ y, Y, Cyrillic_yeru, Cyrillic_YERU ], symbols[Group2]= [ udiaeresis, Udiaeresis ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ u, U, Cyrillic_u, Cyrillic_U ], symbols[Group2]= [ uacute, Uacute ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ i, I, Cyrillic_i, Cyrillic_I ], symbols[Group2]= [ iacute, Iacute ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ o, O, Cyrillic_o, Cyrillic_O ], symbols[Group2]= [ oslash, Oslash ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ p, P, Cyrillic_pe, Cyrillic_PE ], symbols[Group2]= [ odiaeresis, Odiaeresis ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ bracketleft, braceleft, Cyrillic_softsign, Cyrillic_SOFTSIGN ], symbols[Group2]= [ guillemotleft, U27E8 ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ bracketright, braceright, Cyrillic_hardsign, Cyrillic_HARDSIGN ], symbols[Group2]= [ guillemotright, U27E9 ] }; key { [ Return ] }; key { [ Control_L ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ a, A, Cyrillic_a, Cyrillic_A ], symbols[Group2]= [ aring, Aring ] }; key { type[Group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ s, S, Cyrillic_es, Cyrillic_ES ], symbols[Group2]= [ ssharp, U1E9E ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ d, D, Cyrillic_de, Cyrillic_DE ], symbols[Group2]= [ eth, ETH ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ f, F, Cyrillic_ef, Cyrillic_EF ], symbols[Group2]= [ thorn, THORN ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ g, G, Cyrillic_ghe, Cyrillic_GHE ], symbols[Group2]= [ Greek_gamma, Greek_GAMMA ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ h, H, Cyrillic_che, Cyrillic_CHE ], symbols[Group2]= [ U2192, U21D2 ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ j, J, Cyrillic_shorti, Cyrillic_SHORTI ], symbols[Group2]= [ Cyrillic_zhe, Cyrillic_ZHE ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ k, K, Cyrillic_ka, Cyrillic_KA ], symbols[Group2]= [ omacron, umacron ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ l, L, Cyrillic_el, Cyrillic_EL ], symbols[Group2]= [ oacute, Oacute ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ semicolon, colon, semicolon, colon ], symbols[Group2]= [ leftdoublequotemark, degree ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ underscore, apostrophe, underscore, apostrophe ], symbols[Group2]= [ plusminus, approxeq ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ grave, asciitilde, Cyrillic_yu, Cyrillic_YU ], symbols[Group2]= [ U2200, U2245 ] }; key { [ Shift_L ] }; key { type= "FOUR_LEVEL", symbols[Group1]= [ backslash, bar, notsign, brokenbar ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ z, Z, Cyrillic_ze, Cyrillic_ZE ], symbols[Group2]= [ yacute, Yacute ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ x, X, Cyrillic_ha, Cyrillic_HA ], symbols[Group2]= [ Cyrillic_io, Cyrillic_IO ] }; key { type[Group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ c, C, Cyrillic_tse, Cyrillic_TSE ], symbols[Group2]= [ U2124, U2102 ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ v, V, Cyrillic_ve, Cyrillic_VE ], symbols[Group2]= [ ae, AE ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ b, B, Cyrillic_be, Cyrillic_BE ], symbols[Group2]= [ U21D4, U22A5 ] }; key { type[Group1]= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ n, N, Cyrillic_en, Cyrillic_EN ], symbols[Group2]= [ U2115, U2135 ] }; key { type[Group1]= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ m, M, Cyrillic_em, Cyrillic_EM ], symbols[Group2]= [ Greek_mu, Greek_epsilon ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ comma, less, comma, less ], symbols[Group2]= [ notequal, lessthanequal ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ period, period, dead_abovedot, dead_caron ], symbols[Group2]= [ guillemotright, guillemotright ] }; key { type[Group1]= "FOUR_LEVEL", symbols[Group1]= [ slash, question, slash, question ], symbols[Group2]= [ emptyset, U2218 ] }; key { [ Shift_R ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] }; key { [ Alt_L, Meta_L ] }; key { [ space ] }; key { [ Caps_Lock ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] }; key { [ Num_Lock ] }; key { [ Scroll_Lock ] }; key { [ KP_Home, KP_7 ] }; key { [ KP_Up, KP_8 ] }; key { [ KP_Prior, KP_9 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] }; key { [ KP_Left, KP_4 ] }; key { [ KP_Begin, KP_5 ] }; key { [ KP_Right, KP_6 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] }; key { [ KP_End, KP_1 ] }; key { [ KP_Down, KP_2 ] }; key { [ KP_Next, KP_3 ] }; key { [ KP_Insert, KP_0 ] }; key { [ KP_Delete, KP_Decimal ] }; key { [ ISO_Level3_Shift ] }; key { type= "FOUR_LEVEL", symbols[Group1]= [ backslash, bar, backslash, bar ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] }; key { type= "CTRL+ALT", symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] }; key { [ Katakana ] }; key { [ Hiragana ] }; key { [ Henkan_Mode ] }; key { [ Hiragana_Katakana ] }; key { [ Muhenkan ] }; key { [ KP_Enter ] }; key { [ ISO_Level3_Shift, ISO_Level3_Shift ] }; key { type= "CTRL+ALT", symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] }; key { type= "PC_ALT_LEVEL2", symbols[Group1]= [ Print, Sys_Req ] }; key { type= "ONE_LEVEL", symbols[Group1]= [ Mode_switch ] }; key { [ Linefeed ] }; key { [ Home ] }; key { [ Up ] }; key { [ Prior ] }; key { [ Left ] }; key { [ Right ] }; key { [ End ] }; key { [ Down ] }; key { [ Next ] }; key { [ Insert ] }; key { [ Delete ] }; key { [ XF86AudioMute ] }; key { [ XF86AudioLowerVolume ] }; key { [ XF86AudioRaiseVolume ] }; key { [ XF86PowerOff ] }; key { [ KP_Equal ] }; key { [ plusminus ] }; key { type= "PC_CONTROL_LEVEL2", symbols[Group1]= [ Pause, Break ] }; key { [ XF86LaunchA ] }; key { [ KP_Decimal, KP_Decimal ] }; key { [ Hangul ] }; key { [ Hangul_Hanja ] }; key { [ Super_L ] }; key { [ Super_R ] }; key { [ Menu ] }; key { [ Cancel ] }; key { [ Redo ] }; key { [ SunProps ] }; key { [ Undo ] }; key { [ SunFront ] }; key { [ XF86Copy ] }; key { [ XF86Open ] }; key { [ XF86Paste ] }; key { [ Find ] }; key { [ XF86Cut ] }; key { [ Help ] }; key { [ XF86MenuKB ] }; key { [ XF86Calculator ] }; key { [ XF86Sleep ] }; key { [ XF86WakeUp ] }; key { [ XF86Explorer ] }; key { [ XF86Send ] }; key { [ XF86Xfer ] }; key { [ XF86Launch1 ] }; key { [ XF86Launch2 ] }; key { [ XF86WWW ] }; key { [ XF86DOS ] }; key { [ XF86ScreenSaver ] }; key { [ XF86RotateWindows ] }; key { [ XF86TaskPane ] }; key { [ XF86Mail ] }; key { [ XF86Favorites ] }; key { [ XF86MyComputer ] }; key { [ XF86Back ] }; key { [ XF86Forward ] }; key { [ XF86Eject ] }; key { [ XF86Eject ] }; key { [ XF86AudioNext ] }; key { [ XF86AudioPlay, XF86AudioPause ] }; key { [ XF86AudioPrev ] }; key { [ XF86AudioStop, XF86Eject ] }; key { [ XF86AudioRecord ] }; key { [ XF86AudioRewind ] }; key { [ XF86Phone ] }; key { [ XF86Tools ] }; key { [ XF86HomePage ] }; key { [ XF86Reload ] }; key { [ XF86Close ] }; key { [ XF86ScrollUp ] }; key { [ XF86ScrollDown ] }; key { [ parenleft ] }; key { [ parenright ] }; key { [ XF86New ] }; key { [ Redo ] }; key { [ XF86Tools, F13 ] }; key { [ XF86Launch5, F14 ] }; key { [ XF86Launch6, F15 ] }; key { [ XF86Launch7, F16 ] }; key { [ XF86Launch8, F17 ] }; key { [ XF86Launch9, F18 ] }; key { [ F19, F19 ] }; key { symbols[Group1]= [ XF86AudioMicMute, Cyrillic_E ], symbols[Group2]= [ guillemotleft, guillemotleft ] }; key { symbols[Group1]= [ XF86TouchpadToggle, greater ], symbols[Group2]= [ periodcentered, greaterthanequal ], symbols[Group3]= [ period, greater ] }; key { [ XF86TouchpadOn ] }; key { [ XF86TouchpadOff ] }; key { [ ISO_Level5_Shift ] }; key { [ NoSymbol, Alt_L ] }; key { [ NoSymbol, Meta_L ] }; key { [ NoSymbol, Super_L ] }; key { [ NoSymbol, Hyper_L ] }; key { [ XF86AudioPlay ] }; key { [ XF86AudioPause ] }; key { [ XF86Launch3 ] }; key { [ XF86Launch4 ] }; key { [ XF86LaunchB ] }; key { [ XF86Suspend ] }; key { [ XF86Close ] }; key { [ XF86AudioPlay ] }; key { [ XF86AudioForward ] }; key { [ Print ] }; key { [ XF86WebCam ] }; key { [ XF86AudioPreset ] }; key { [ XF86Mail ] }; key { [ XF86Messenger ] }; key { [ XF86Search ] }; key { [ XF86Go ] }; key { [ XF86Finance ] }; key { [ XF86Game ] }; key { [ XF86Shop ] }; key { [ Cancel ] }; key { [ XF86MonBrightnessDown ] }; key { [ XF86MonBrightnessUp ] }; key { [ XF86AudioMedia ] }; key { [ XF86Display ] }; key { [ XF86KbdLightOnOff ] }; key { [ XF86KbdBrightnessDown ] }; key { [ XF86KbdBrightnessUp ] }; key { [ XF86Send ] }; key { [ XF86Reply ] }; key { [ XF86MailForward ] }; key { [ XF86Save ] }; key { [ XF86Documents ] }; key { [ XF86Battery ] }; key { [ XF86Bluetooth ] }; key { [ XF86WLAN ] }; key { [ XF86UWB ] }; key { [ XF86Next_VMode ] }; key { [ XF86Prev_VMode ] }; key { [ XF86MonBrightnessCycle ] }; key { [ XF86BrightnessAuto ] }; key { [ XF86DisplayOff ] }; key { [ XF86WWAN ] }; key { [ XF86RFKill ] }; key { [ XF86AudioMicMute ] }; key { [ XF86Info ] }; key { [ XF86Favorites ] }; key { [ XF86CycleAngle ] }; key { [ XF86FullScreen ] }; key { [ XF86Keyboard ] }; key { [ XF86AspectRatio ] }; key { [ XF86DVD ] }; key { [ XF86Audio ] }; key { [ XF86Video ] }; key { [ XF86Calendar ] }; key { [ XF86ChannelUp ] }; key { [ XF86ChannelDown ] }; key { [ XF86AudioRandomPlay ] }; key { [ XF86Break ] }; key { [ XF86VideoPhone ] }; key { [ XF86Game ] }; key { [ XF86ZoomIn ] }; key { [ XF86ZoomOut ] }; key { [ XF86ZoomReset ] }; key { [ XF86Word ] }; key { [ XF86Editor ] }; key { [ XF86Excel ] }; key { [ XF86GraphicsEditor ] }; key { [ XF86Presentation ] }; key { [ XF86Database ] }; key { [ XF86News ] }; key { [ XF86Voicemail ] }; key { [ XF86Addressbook ] }; key { [ XF86Messenger ] }; key { [ XF86DisplayToggle ] }; key { [ XF86SpellCheck ] }; key { [ XF86LogOff ] }; key { [ dollar ] }; key { [ EuroSign ] }; key { [ XF86FrameBack ] }; key { [ XF86FrameForward ] }; key { [ XF86ContextMenu ] }; key { [ XF86MediaRepeat ] }; key { [ XF8610ChannelsUp ] }; key { [ XF8610ChannelsDown ] }; key { [ XF86Images ] }; key { [ XF86NotificationCenter ] }; key { [ XF86PickupPhone ] }; key { [ XF86HangupPhone ] }; key { [ XF86Fn ] }; key { [ XF86Fn_Esc ] }; key { [ XF86FnRightShift ] }; key { [ braille_dot_1 ] }; key { [ braille_dot_2 ] }; key { [ braille_dot_3 ] }; key { [ braille_dot_4 ] }; key { [ braille_dot_5 ] }; key { [ braille_dot_6 ] }; key { [ braille_dot_7 ] }; key { [ braille_dot_8 ] }; key { [ braille_dot_9 ] }; key { [ braille_dot_1 ] }; key { [ XF86Numeric0 ] }; key { [ XF86Numeric1 ] }; key { [ XF86Numeric2 ] }; key { [ XF86Numeric3 ] }; key { [ XF86Numeric4 ] }; key { [ XF86Numeric5 ] }; key { [ XF86Numeric6 ] }; key { [ XF86Numeric7 ] }; key { [ XF86Numeric8 ] }; key { [ XF86Numeric9 ] }; key { [ XF86NumericStar ] }; key { [ XF86NumericPound ] }; key { [ XF86NumericA ] }; key { [ XF86NumericB ] }; key { [ XF86NumericC ] }; key { [ XF86NumericD ] }; key { [ XF86CameraFocus ] }; key { [ XF86WPSButton ] }; key { [ XF86TouchpadToggle ] }; key { [ XF86TouchpadOn ] }; key { [ XF86TouchpadOff ] }; key { [ XF86CameraZoomIn ] }; key { [ XF86CameraZoomOut ] }; key { [ XF86CameraUp ] }; key { [ XF86CameraDown ] }; key { [ XF86CameraLeft ] }; key { [ XF86CameraRight ] }; key { [ XF86AttendantOn ] }; key { [ XF86AttendantOff ] }; key { [ XF86AttendantToggle ] }; key { [ XF86LightsToggle ] }; key { [ XF86ALSToggle ] }; key { [ XF86RotationLockToggle ] }; key { [ XF86Buttonconfig ] }; key { [ XF86Taskmanager ] }; key { [ XF86Journal ] }; key { [ XF86ControlPanel ] }; key { [ XF86AppSelect ] }; key { [ XF86Screensaver ] }; key { [ XF86VoiceCommand ] }; key { [ XF86Assistant ] }; key { [ ISO_Next_Group ] }; key { [ NoSymbol ] }; key { [ NoSymbol ] }; key { [ XF86BrightnessMin ] }; key { [ XF86BrightnessMax ] }; key { [ XF86KbdInputAssistPrev ] }; key { [ XF86KbdInputAssistNext ] }; key { [ XF86KbdInputAssistPrevgroup ] }; key { [ XF86KbdInputAssistNextgroup ] }; key { [ XF86KbdInputAssistAccept ] }; key { [ XF86KbdInputAssistCancel ] }; key { [ XF86RightUp ] }; key { [ XF86RightDown ] }; key { [ XF86LeftUp ] }; key { [ XF86LeftDown ] }; key { [ XF86RootMenu ] }; key { [ XF86MediaTopMenu ] }; key { [ XF86Numeric11 ] }; key { [ XF86Numeric12 ] }; key { [ XF86AudioDesc ] }; key { [ XF863DMode ] }; key { [ XF86NextFavorite ] }; key { [ XF86StopRecord ] }; key { [ XF86PauseRecord ] }; key { [ XF86VOD ] }; key { [ XF86Unmute ] }; key { [ XF86FastReverse ] }; key { [ XF86SlowReverse ] }; key { [ XF86Data ] }; key { [ XF86OnScreenKeyboard ] }; key { [ XF86PrivacyScreenToggle ] }; key { [ XF86SelectiveScreenshot ] }; key { [ XF86Macro1 ] }; key { [ XF86Macro2 ] }; key { [ XF86Macro3 ] }; key { [ XF86Macro4 ] }; key { [ XF86Macro5 ] }; key { [ XF86Macro6 ] }; key { [ XF86Macro7 ] }; key { [ XF86Macro8 ] }; key { [ XF86Macro9 ] }; key { [ XF86Macro10 ] }; key { [ XF86Macro11 ] }; key { [ XF86Macro12 ] }; key { [ XF86Macro13 ] }; key { [ XF86Macro14 ] }; key { [ XF86Macro15 ] }; key { [ XF86Macro16 ] }; key { [ XF86Macro17 ] }; key { [ XF86Macro18 ] }; key { [ XF86Macro19 ] }; key { [ XF86Macro20 ] }; key { [ XF86Macro21 ] }; key { [ XF86Macro22 ] }; key { [ XF86Macro23 ] }; key { [ XF86Macro24 ] }; key { [ XF86Macro25 ] }; key { [ XF86Macro26 ] }; key { [ XF86Macro27 ] }; key { [ XF86Macro28 ] }; key { [ XF86Macro29 ] }; key { [ XF86Macro30 ] }; key { [ XF86MacroRecordStart ] }; key { [ XF86MacroRecordStop ] }; key { [ XF86MacroPresetCycle ] }; key { [ XF86MacroPreset1 ] }; key { [ XF86MacroPreset2 ] }; key { [ XF86MacroPreset3 ] }; key { [ XF86KbdLcdMenu1 ] }; key { [ XF86KbdLcdMenu2 ] }; key { [ XF86KbdLcdMenu3 ] }; key { [ XF86KbdLcdMenu4 ] }; key { [ XF86KbdLcdMenu5 ] }; modifier_map Shift { , }; modifier_map Lock { }; modifier_map Control { }; modifier_map Mod1 { , , }; modifier_map Mod2 { }; modifier_map Mod3 { , }; modifier_map Mod4 { , , , }; modifier_map Mod5 { }; }; }; ```
haasn commented 1 year ago

I suspect this is the issue:

xkbcommon: WARNING: Multiple symbols for level 1/group 1 on key ; Using from, ignoring to

But I don't understand why the one with override doesn't get a higher priority.

wismill commented 1 year ago

xmobar

I think you mean xmonad, isn't it?

The issue is identified with this line:

xkbcommon: DEBUG: Compiling from KcCGST: keycodes 'evdev+aliases(qwerty)', types 'complete', compat 'complete', symbols 'pc+ergodox+inet(evdev)'

Note that inet is added automatically (via the rules) after your layout. Therefore the keys are overriden twice: once by your layout, then by inet.

I think you have a issue similar to this one.

haasn commented 1 year ago

I think you have a issue similar to this one.

Quite possibly. Maybe I should just find some other "free" key to map my custom bindings to. I used FK13-FK20 because they seemed to work fine in the past. But if they're now being cannibalized by inet, I could maybe find something else?

Edit: From a quick glance, <AB11> and <AE13> seem to be free, whatever they are. And also, <FK19> is unused, ironically enough.

wismill commented 1 year ago

We still have not identified what is the root cause of this:

In the past, pressing FK20 gave me a Cyrillic_e (э) letter. Since some time ago, however, pressing FK20 always gets mapped to XF86AudioMicMute.

In the past, did you use the same settings in both Sway & X11? Did you load the layout in the same way? It seems from your tests that the version of xkeyboard-config has no impact. Could the version of xkbcommon change something?

Something did change, we just have to figure out what.

haasn commented 1 year ago

Sorry, I'm quite busy at the moment. It will be some time before I can look into this again.

wismill commented 1 year ago

Since it does not seem an issue with this xkbcommon and there is no feedback for a while, I am closing the issue. Feel free to re-open, I am happy to help.