diff --git a/xkb-data_xmod/README.md b/xkb-data_xmod/README.md index fad75ca..86f8b42 100644 --- a/xkb-data_xmod/README.md +++ b/xkb-data_xmod/README.md @@ -20,6 +20,8 @@ For more general info, see the [main repo README][BBREADME]. The [xkeyboard-config][XKBgitHb] files in this folder are updated to [XKB-data v2.23.1-1ubuntu1][XKB-Ub18], 2018. They work fine with other versions though, in nearly all cases. + +Note that the `base` and `evdev` rules are compiled slightly differently, so I provide both. Their `.lst` and `.xml` counterparts are identical/aliases.
@@ -33,9 +35,13 @@ TODO: - Commit bc927671 "symbols/latam: remove a hobbled Colemak variant" by Benno Schulenberg 2022-07-04 - https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/commit/bc927671 +* Add comments in evdev.xml? There are some now, typically like ``. + - Change my arrow format: Using `-->` arrows is confusing vis-a-vis html/xml. Use `»->`/`<-«`? That causes encoding trouble. So, `>>-->`/`<--<<`. + * Is `any` equivalent to `NoSymbol` in the definitions? If so, we could make symbols/extend tidier! - - Maybe? There are some compact forms of notation, like leaving out symbols entirely, but those are less clear. - - In the repo, I've seen `NoSymbol` been replaced with `any`, and `VoidSymbol` with `none`. This may be the new syntax. + - According to Benno Schulenberg, yes, but there's little documentation for it. + - There are some other compact forms of notation, like leaving out symbols entirely, but those are less clear. + - In the repo, I've seen `NoSymbol` been replaced with `any`, and `VoidSymbol` with `none`. - Is it implemented everywhere yet, though? Hard to find good docs on it, methinks. * Sym mod implementation diff --git a/xkb-data_xmod/xkb/symbols/extend b/xkb-data_xmod/xkb/symbols/extend index 22ec5de..806b260 100644 --- a/xkb-data_xmod/xkb/symbols/extend +++ b/xkb-data_xmod/xkb/symbols/extend @@ -40,21 +40,24 @@ // | Cust | Undo | Cut | Copy | Paste | *Bt1 | , | KP_0 | KP_0 | KP_. | KP_/ | Spc | K_Ent | // +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ // -// TODO: A lv7 modifier to reach the second Extend layer directly. -// Test out this: -// key { [ ISO_Level5_Shift ], actions[Group1] = [ SetMods(mods=LevelThree+LevelFive) ] }; +// TODO: +// - A lv7 modifier to reach the second Extend layer directly. +// - Test out this: +// key { [ ISO_Level5_Shift ], actions[Group1] = [ SetMods(mods=LevelThree+LevelFive) ] }; // -// NOTE: A lv7 (Level5+Level3) modifier might be necessary to use the KeyPad level sensibly +// NOTE: +// - A lv7 (Level5+Level3) modifier might be necessary to use the KeyPad level sensibly // - One idea is to use AltGr+Caps as a lv7_lock (Caps+AltGr is already lv7_switch) -// NOTE: If a hex pad is needed, the lv7(8?)+KBHDJG -> ABCDEF mappings are one solution -// NOTE: There's a KP key named KP_BEGIN; it seems like a hack? Ignored for now. -// NOTE: I've duplicated KP_0 to make it easy to hit. Useful for bigrams with 0. +// - If a hex pad is needed, the lv7(8?)+KBHDJG -> ABCDEF mappings are one possible solution +// - There's a KP key named KP_BEGIN; it seems like a hack? Ignored for now. +// - I've duplicated KP_0 to make it easy to hit. Useful for bigrams with 0. Physical NumPad often has a wide zero. // -// NOTE: The Big Bag image has the PointerEnable key on LSGT, but ANSI users don't have that key. Moved it to TLDE. -// NOTE: Autorepeat is lost for keys with actions set. This is probably an XKB bug? +// - The Big Bag image has the PointerEnable key on LSGT, but ANSI users don't have that key. Moved it to TLDE. +// - Autorepeat is lost for keys with actions set. This is probably an XKB bug? // - One fix is to run xset afterwards: 'seq -s " r " 8 255 | xargs xset r' supposedly does the trick. // - Added the following to each key's symbols[Group1] definition: `repeat=true` -// NOTE: The lv5 mod should be eaten up by xkb but isn't. Must manually clearmod it from all necessary keys. +// - The lv5 mod should be eaten up by xkb but isn't. Must manually clearmod it from all necessary keys. +// - The first 4 states are defined as `any` (a synonym of `NoSymbol`) to pass-through any existing ones. // +=======+==============================+=======+ @@ -76,84 +79,84 @@ xkb_symbols "lv5_fk" { // |=======| F1-F12 |=======| // +=======+==============================+=======+ // NOTE: Many use Ctrl+Alt+ for TTY server control keys. With Extend, you may use Ext+AltGr+ instead. - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F01 + key { symbols[Group1]=[Any , Any , Any , Any , // F01 XF86AudioPlay , XF86AudioPause , // Audio Play/Pause - XF86_Switch_VT_1 , NoSymbol ] , // Virtual Terminal 1 + XF86_Switch_VT_1 , Any ] , // Virtual Terminal 1 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=1,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F02 + key { symbols[Group1]=[Any , Any , Any , Any , // F02 XF86AudioPrev , XF86AudioRewind , // Audio Previous/Rewind - XF86_Switch_VT_2 , NoSymbol ] , // Virtual Terminal 2 + XF86_Switch_VT_2 , Any ] , // Virtual Terminal 2 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=2,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F03 + key { symbols[Group1]=[Any , Any , Any , Any , // F03 XF86AudioNext , XF86AudioForward , // Audio Next/Forward - XF86_Switch_VT_3 , NoSymbol ] , // Virtual Terminal 3 + XF86_Switch_VT_3 , Any ] , // Virtual Terminal 3 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=3,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F04 + key { symbols[Group1]=[Any , Any , Any , Any , // F04 XF86AudioStop , XF86Eject , // Audio Stop/Eject - XF86_Switch_VT_4 , NoSymbol ] , // Virtual Terminal 4 + XF86_Switch_VT_4 , Any ] , // Virtual Terminal 4 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=4,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F05 + key { symbols[Group1]=[Any , Any , Any , Any , // F05 XF86AudioMute , XF86Reload , // Audio Mute/Reload - XF86_Switch_VT_5 , NoSymbol ] , // Virtual Terminal 5 + XF86_Switch_VT_5 , Any ] , // Virtual Terminal 5 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=5,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F06 + key { symbols[Group1]=[Any , Any , Any , Any , // F06 XF86AudioLowerVolume , XF86MonBrightnessDown , // Audio Vol- / Brightness- - XF86_Switch_VT_6 , NoSymbol ] , // Virtual Terminal 6 + XF86_Switch_VT_6 , Any ] , // Virtual Terminal 6 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=6,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F07 + key { symbols[Group1]=[Any , Any , Any , Any , // F07 XF86AudioRaiseVolume , XF86MonBrightnessUp , // Audio Vol+ / Brightness+ - XF86_Switch_VT_7 , NoSymbol ] , // Virtual Terminal 7 + XF86_Switch_VT_7 , Any ] , // Virtual Terminal 7 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=7,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F08 + key { symbols[Group1]=[Any , Any , Any , Any , // F08 XF86AudioMedia , XF86Sleep , // MediaPlayer / Sleep - XF86_Switch_VT_8 , NoSymbol ] , // Virtual Terminal 8 + XF86_Switch_VT_8 , Any ] , // Virtual Terminal 8 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=8,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F09 + key { symbols[Group1]=[Any , Any , Any , Any , // F09 XF86HomePage , XF86WWW , // HomePage / Web - XF86_Switch_VT_9 , NoSymbol ] , // Virtual Terminal 9 + XF86_Switch_VT_9 , Any ] , // Virtual Terminal 9 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=9,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F10 + key { symbols[Group1]=[Any , Any , Any , Any , // F10 XF86Search , XF86Mail , // Search / Mail - XF86_Switch_VT_10 , NoSymbol ] , // Virtual Terminal 10 + XF86_Switch_VT_10 , Any ] , // Virtual Terminal 10 actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=10,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F11 + key { symbols[Group1]=[Any , Any , Any , Any , // F11 XF86Explorer , XF86Launch1 , // Explorer / App1 XF86_Switch_VT_11 , XF86LogGrabInfo ] , // Virtual Terminal 11 / Debug actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch3 is ) Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) SwitchScreen(screen=11,!same) , NoAction() ] , repeat=yes }; - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F12 + key { symbols[Group1]=[Any , Any , Any , Any , // F12 XF86Calculator , XF86Launch2 , // Calculator / App2 XF86_Switch_VT_12 , XF86LogWindowTree ] , // Virtual Terminal 12 / Debug actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch4 is ) @@ -172,90 +175,90 @@ xkb_symbols "lv5" { // +=======+==============================+=======+ // NOTE: Earlier, if I set lv5-6 of Esc to Caps_Lock, lv1-4 would be CapsLock PLUS Esc! Is this fixed now? // - If not, I might not have to send the Caps_Lock keysymbol as long as the LockMods action is there? - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Esc + key { symbols[Group1]=[Any , Any , Any , Any , // Esc Caps_Lock , Caps_Lock , // Caps_Lock Caps_Lock , Caps_Lock ] , actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), LockMods(mods=Lock) , LockMods(mods=Lock) , // Lock mod for LockMods(mods=Lock) , LockMods(mods=Lock) ] , repeat=yes }; // Esc - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Tilde/Grave (` ~) + key { symbols[Group1]=[Any , Any , Any , Any , // Tilde/Grave (` ~) Pointer_EnableKeys , Pointer_EnableKeys , // Ptr_On Pointer_EnableKeys , Pointer_EnableKeys ] , // (Enable MouseKeys) repeat=yes }; // ` ~ - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 1 + key { symbols[Group1]=[Any , Any , Any , Any , // 1 F1 , F1 , exclam , exclam ] , // F1 / ! actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 1 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 2 + key { symbols[Group1]=[Any , Any , Any , Any , // 2 F2 , F2 , at , at ] , // F2 / @ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 2 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 3 + key { symbols[Group1]=[Any , Any , Any , Any , // 3 F3 , F3 , numbersign , numbersign ] , // F3 / # actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 3 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 4 + key { symbols[Group1]=[Any , Any , Any , Any , // 4 F4 , F4 , dollar , sterling ] , // F4 / $ £ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 4 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 5 + key { symbols[Group1]=[Any , Any , Any , Any , // 5 F5 , F5 , percent , EuroSign ] , // F5 / % € actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 5 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 6 + key { symbols[Group1]=[Any , Any , Any , Any , // 6 F6 , F6 , asciicircum , asciicircum ] , // F6 / ^ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 6 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 7 + key { symbols[Group1]=[Any , Any , Any , Any , // 7 F7 , F7 , KP_7 , U21D6 ] , // F7 / KP_7 ↖ ⇖ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 7 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 8 + key { symbols[Group1]=[Any , Any , Any , Any , // 8 F8 , F8 , KP_8 , U21D1 ] , // F8 / KP_8 ↑ ⇑ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 8 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 9 + key { symbols[Group1]=[Any , Any , Any , Any , // 9 F9 , F9 , KP_9 , U21D7 ] , // F9 / KP_9 ↗ ⇗ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 9 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 0 + key { symbols[Group1]=[Any , Any , Any , Any , // 0 F10 , F10 , KP_Multiply , KP_Multiply ] , // F10 / KP_* actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // 0 - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // - _ + key { symbols[Group1]=[Any , Any , Any , Any , // - _ F11 , F11 , KP_Subtract , KP_Subtract ] , // F11 / KP_- actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // - _ - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // = + + key { symbols[Group1]=[Any , Any , Any , Any , // = + F12 , F12 , KP_Equal , KP_Equal ] , // F12 / KP_= actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // = + - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // BackSpace + key { symbols[Group1]=[Any , Any , Any , Any , // BackSpace Pause , Pause , // Pause/Break Pause , Pause ] , // ( is special) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -266,91 +269,91 @@ xkb_symbols "lv5" { // +=======+==============================+=======+ // |=======| Upper Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Q + key { symbols[Group1]=[Any , Any , Any , Any , // Q Escape , Escape , // Esc Home , KP_Home ] , // Home actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive) , Redirect(key=,clearmods=LevelFive) , Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) ] , repeat=yes }; // Q - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // W + key { symbols[Group1]=[Any , Any , Any , Any , // W XF86ScrollUp , XF86ScrollUp , // ScrollUp(††) Up , KP_Up ] , // ↑ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), PtrBtn(button=4) , PtrBtn(button=4) , // PtrWhBtUp/Ri NoAction() , NoAction() ] , repeat=yes }; // W // (ScrlR/L & Btn 6/7 may cause crashes now?!) - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // E + key { symbols[Group1]=[Any , Any , Any , Any , // E XF86Back , XF86Back , // BrBck End , KP_End ] , // End actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), // (‡‡) NoAction() , NoAction() ] , repeat=yes }; // QWE E, Cmk F - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // R + key { symbols[Group1]=[Any , Any , Any , Any , // R XF86Forward , XF86Forward , // BrFwd Delete , KP_Delete ] , // Del actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), // (‡‡) NoAction() , NoAction() ] , repeat=yes }; // QWE R, Cmk P - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // T + key { symbols[Group1]=[Any , Any , Any , Any , // T Pointer_Up , Pointer_Up , // PtrUp(††) Escape , Escape ] , // Esc actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), MovePtr(x=+0,y=-8) , MovePtr(x=+0,y=-8) , // PtrUp(††) Redirect(key=,clearmods=LevelFive) , Redirect(key=,clearmods=LevelFive) ] , repeat=yes }; // QWE T, Cmk G - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Y + key { symbols[Group1]=[Any , Any , Any , Any , // Y Page_Up , Page_Up , // PgUp Page_Up , KP_Prior ] , // PgUp / KP_PgUp actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // Redirect(key=) , NoAction() ] , repeat=yes }; // QWE Y, Cmk J - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // U + key { symbols[Group1]=[Any , Any , Any , Any , // U Home , Home , // Home KP_4 , U21D0 ] , // KP_4 / ← ⇐ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE U, Cmk L - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // I + key { symbols[Group1]=[Any , Any , Any , Any , // I Up , Up , // ↑ KP_5 , U21D4 ] , // KP_5 / ↔ ⇔ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE I, Cmk U - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // O + key { symbols[Group1]=[Any , Any , Any , Any , // O End , End , // End KP_6 , U21D2 ] , // KP_6 / → ⇒ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE O, Cmk Y - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // P + key { symbols[Group1]=[Any , Any , Any , Any , // P Delete , Delete , // Del KP_Add , KP_Add ] , // KP_+ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE P, Cmk ; : - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // [ { + key { symbols[Group1]=[Any , Any , Any , Any , // [ { Escape , Escape , // Esc parenleft , braceleft ] , // ( actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive) , Redirect(key=,clearmods=LevelFive), NoAction() , NoAction() ] , repeat=yes }; // [ { - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ] } + key { symbols[Group1]=[Any , Any , Any , Any , // ] } Insert , Insert , // Ins parenright , braceright ] , // ) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // ] } - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // \ | + key { symbols[Group1]=[Any , Any , Any , Any , // \ | XF86Favorites , XF86MyComputer , // BrFav colon , bar ] , // : actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -361,84 +364,84 @@ xkb_symbols "lv5" { // +=======+==============================+=======+ // |=======| Middle Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // A + key { symbols[Group1]=[Any , Any , Any , Any , // A Alt_L , Alt_L , // Left , KP_Left ] , // ← actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), SetMods(mods=Alt) , SetMods(mods=Alt) , // Alt mod NoAction() , NoAction() ] , repeat=yes }; // QWE A, Cmk A - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // S + key { symbols[Group1]=[Any , Any , Any , Any , // S XF86ScrollDown , XF86ScrollDown , // ScrlDown(††) Down , KP_Down ] , // ↓ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), PtrBtn(button=5) , PtrBtn(button=5) , // PtrWhBtDn/Le NoAction() , NoAction() ] , repeat=yes }; // QWE S, Cmk R // (ScrlR/L & Btn 6/7 may cause crashes now?!) - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // D + key { symbols[Group1]=[Any , Any , Any , Any , // D Shift_L , Shift_L , // Right , KP_Right ], // → actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), SetMods(mods=Shift) , SetMods(mods=Shift) , // Shift mod NoAction() , NoAction() ] , repeat=yes }; // QWE D, Cmk S - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F + key { symbols[Group1]=[Any , Any , Any , Any , // F Control_L , Control_L , // BackSpace , BackSpace ] , // Back actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), SetMods(mods=Control) , SetMods(mods=Shift+Control) , // Ctrl mod NoAction() , NoAction() ] , repeat=yes }; // QWE F, Cmk T - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // G + key { symbols[Group1]=[Any , Any , Any , Any , // G Pointer_Down , Pointer_Down , // PtrDn(††) Num_Lock , Num_Lock ] , // NumLock actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), MovePtr(x=+0,y=+8) , MovePtr(x=+0,y=+8) , // PtrDn(††) NoAction() , NoAction() ] , repeat=yes }; // QWE G, Cmk D - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // H + key { symbols[Group1]=[Any , Any , Any , Any , // H Page_Down , Page_Down , // PgDn Page_Down , KP_Next ] , // PgDn / KP_PgDn actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // Redirect(key=) , NoAction() ] , repeat=yes }; // H - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // J + key { symbols[Group1]=[Any , Any , Any , Any , // J Left , Left , // ← KP_1 , U21D9 ] , // KP_1 / ↙ ⇙ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE J, Cmk N - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // K + key { symbols[Group1]=[Any , Any , Any , Any , // K Down , Down , // ↓ KP_2 , U21D3 ] , // KP_2 / ↓ ⇓ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE K, Cmk E - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // L + key { symbols[Group1]=[Any , Any , Any , Any , // L Right , Right , // → KP_3 , U21D8 ] , // KP_3 / ↘ ⇘ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE L, Cmk I - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ; : + key { symbols[Group1]=[Any , Any , Any , Any , // ; : BackSpace , BackSpace , // Back KP_Enter , KP_Enter ] , // KP_Enter actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , // NoAction() , NoAction() ] , repeat=yes }; // QWE ;, Cmk O - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ' " + key { symbols[Group1]=[Any , Any , Any , Any , // ' " Menu , Menu , // Menu apostrophe , quotedbl ] , // ' " actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) , // / NoAction() , NoAction() ] , repeat=yes }; // ' " -// key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Return +// key { symbols[Group1]=[Any , Any , Any , Any , // Return // Print , Print , // PrtScr // Print , Print ] , // PrtScr // actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -449,14 +452,14 @@ xkb_symbols "lv5" { // +=======+==============================+=======+ // |=======| Lower Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // < > + key { symbols[Group1]=[Any , Any , Any , Any , // < > Delete , Delete , // User's choice (Del for now) Delete , Delete ] , // --"-- actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=) , Redirect(key=) , Redirect(key=) , Redirect(key=) ] , repeat=yes }; // < > - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Z + key { symbols[Group1]=[Any , Any , Any , Any , // Z Undo , Redo , // Undo/Redo Undo , Redo ] , // Undo/Redo actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -464,7 +467,7 @@ xkb_symbols "lv5" { Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+Z // Redirect(key=) , Redirect(key=) ] , // (‡‡) (not working?) repeat=yes }; // Z - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // X + key { symbols[Group1]=[Any , Any , Any , Any , // X XF86Cut , XF86Cut , // Cut(§§) XF86Cut , XF86Cut ] , // Cut(§§) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -472,7 +475,7 @@ xkb_symbols "lv5" { Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+X // Redirect(key=) , Redirect(key=) ] , // (‡‡) (not working since Ub14.04?) repeat=yes }; // X - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // C + key { symbols[Group1]=[Any , Any , Any , Any , // C XF86Copy , XF86Copy , // Copy(§§) XF86Copy , XF86Copy ] , // Copy(§§) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -480,7 +483,7 @@ xkb_symbols "lv5" { Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+C // Redirect(key=) , Redirect(key=) ] , // (‡‡) (not working since Ub14.04?) repeat=yes }; // C - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // V + key { symbols[Group1]=[Any , Any , Any , Any , // V XF86Paste , XF86Paste , // Paste(§§) XF86Paste , XF86Paste ] , // Paste(§§) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), @@ -488,49 +491,49 @@ xkb_symbols "lv5" { Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+V // Redirect(key=) , Redirect(key=) ] , // (‡‡) (not working since Ub14.04?) repeat=yes }; // V - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // B + key { symbols[Group1]=[Any , Any , Any , Any , // B Pointer_Button1 , Pointer_Button1 , // LBt(††) Pointer_Button1 , Pointer_Button1 ] , // LBt actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), PtrBtn(button=1) , PtrBtn(button=1) , // PtrLBt NoAction() , NoAction() ] , repeat=yes }; // B - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // N + key { symbols[Group1]=[Any , Any , Any , Any , // N Pointer_Button2 , Pointer_Button2 , // MBt(††) comma , semicolon ] , // , ; actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), PtrBtn(button=2) , PtrBtn(button=2) , // PtrMBt NoAction() , NoAction() ] , repeat=yes }; // QWE N, Cmk K - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // M + key { symbols[Group1]=[Any , Any , Any , Any , // M Pointer_Button3 , Pointer_Button3 , // RBt(††) KP_0 , U21D5 ] , // KP_0 / ↕ ⇕ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), PtrBtn(button=3) , PtrBtn(button=3) , // PtrRBt NoAction() , NoAction() ] , repeat=yes }; // M - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // , < + key { symbols[Group1]=[Any , Any , Any , Any , // , < Pointer_Left , Pointer_Left , // PtrLe(††) KP_0 , U21D5 ] , // KP_0 / ↕ ⇕ actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), MovePtr(x=-8,y=+0) , MovePtr(x=-8,y=+0) , // PtrLe(††) NoAction() , NoAction() ] , repeat=yes }; // , < - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // . > + key { symbols[Group1]=[Any , Any , Any , Any , // . > Pointer_Right , Pointer_Right , // PtrRi(††) KP_Decimal , colon ] , // KP_. : actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), MovePtr(x=+8,y=+0) , MovePtr(x=+8,y=+0) , // PtrRi(††) NoAction() , NoAction() ] , repeat=yes }; // . > - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // / ? + key { symbols[Group1]=[Any , Any , Any , Any , // / ? Multi_key , Multi_key , // Compose KP_Divide , KP_Divide ] , // KP_/ repeat=yes }; // / ? // NOTE: The Space key should preserve the Shift state; it's special because both levels have the same symbol. // - One might use a key type that has the 'preserve[Shift] = Shift;' property. However, I fix it directly. - key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Space + key { symbols[Group1]=[Any , Any , Any , Any , // Space Return , Return , // Enter space , nobreakspace ] , // Space actions[Group1]=[NoAction(),SetMods(mods=Shift),NoAction(),SetMods(mods=Shift), @@ -538,9 +541,7 @@ xkb_symbols "lv5" { NoAction() , NoAction() ] , repeat=yes }; // Space -// key { [ NoSymbol,NoSymbol,NoSymbol,NoSymbol ] }; // CapsLock (Ext key def. is in the level5 file) - -// §§: XCV Cut/Copy/Paste seem OK in Firefox but not Gedit!? This seems to be a GTK weakness. +// §§: XCV Cut/Copy/Paste keys seem OK in Firefox but not Gedit!? This seems to be a GTK weakness. // - Some bind fiddling in ~/.gtkrc-2.0 and ~/.config/gtk-3.0/gtk.css can get this working // ††: 'Pointer_'mousing needs enabling! Real KP_ keys work but not the Pointer_ mousing symbols // (In the Settings GUI there's a Shift+NumLock option for this, but Pointer_EnableKeys works too) @@ -548,8 +549,8 @@ xkb_symbols "lv5" { // NOTE: RedirectKey alone doesn't work for the #->FK keys; they then act as the remapped FK## (Multimedia) // NOTE: I'm not mapping the CAPS key to lv5_switch here, as that should be done separately. -// - Leave it to the layout/options to decide which key(s) to use as switches. -// key { [ ISO_Level5_Shift , BackSpace , Caps_Lock , Caps_Lock , NoSymbol ] }; +// - Leave it to the layout/options to decide which key(s) to use as switch(es). +// key { [ ISO_Level5_Shift , BackSpace , Caps_Lock , Caps_Lock ] }; // modifier_map Mod3 { ISO_Level5_Shift }; // include "level3(ralt_switch)" // include "level5(caps_switch)"