Extend fix

* Backspace was erroneously named <BACK> instead of <BKSP> in symbols/extend
* Replaced `NoSymbol` with its newer synonym `Any` in symbols/extend
This commit is contained in:
DreymaR 2023-05-30 16:33:34 +02:00
parent 8c2df9c9f2
commit 7599caaaa3
2 changed files with 98 additions and 91 deletions

View File

@ -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. 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. 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.
<br> <br>
@ -33,9 +35,13 @@ TODO:
- Commit bc927671 "symbols/latam: remove a hobbled Colemak variant" by Benno Schulenberg 2022-07-04 - 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 - https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/commit/bc927671
* Add <!-- DreymaR's BigBag --> comments in evdev.xml? There are some now, typically like `<!-- Keyboard indicator for <locale> layouts -->`.
- 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! * 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. - According to Benno Schulenberg, yes, but there's little documentation for it.
- In the repo, I've seen `NoSymbol` been replaced with `any`, and `VoidSymbol` with `none`. This may be the new syntax. - 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. - Is it implemented everywhere yet, though? Hard to find good docs on it, methinks.
* Sym mod implementation * Sym mod implementation

View File

@ -40,21 +40,24 @@
// | Cust | Undo | Cut | Copy | Paste | *Bt1 | , | KP_0 | KP_0 | KP_. | KP_/ | Spc | K_Ent | // | 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. // TODO:
// Test out this: // - A lv7 modifier to reach the second Extend layer directly.
// key <RCTL> { [ ISO_Level5_Shift ], actions[Group1] = [ SetMods(mods=LevelThree+LevelFive) ] }; // - Test out this:
// key <RCTL> { [ 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) // - 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 // - If a hex pad is needed, the lv7(8?)+KBHDJG -> ABCDEF mappings are one possible solution
// NOTE: There's a KP key named KP_BEGIN; it seems like a hack? Ignored for now. // - 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. // - 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. // - 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? // - 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. // - 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` // - 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 |=======| // |=======| F1-F12 |=======|
// +=======+==============================+=======+ // +=======+==============================+=======+
// NOTE: Many use Ctrl+Alt+<FK##> for TTY server control keys. With Extend, you may use Ext+AltGr+<FK##> instead. // NOTE: Many use Ctrl+Alt+<FK##> for TTY server control keys. With Extend, you may use Ext+AltGr+<FK##> instead.
key <FK01> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F01 key <FK01> { symbols[Group1]=[Any , Any , Any , Any , // F01
XF86AudioPlay , XF86AudioPause , // Audio Play/Pause 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I208>,clearmods=all), Redirect(key=<I209>,clearmods=all), // <I208>/<I209>(‡‡) Redirect(key=<I208>,clearmods=all), Redirect(key=<I209>,clearmods=all), // <I208>/<I209>(‡‡)
SwitchScreen(screen=1,!same) , NoAction() ] , SwitchScreen(screen=1,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK02> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F02 key <FK02> { symbols[Group1]=[Any , Any , Any , Any , // F02
XF86AudioPrev , XF86AudioRewind , // Audio Previous/Rewind 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I173>,clearmods=all), Redirect(key=<I176>,clearmods=all), // <I173>/<I176>(‡‡) Redirect(key=<I173>,clearmods=all), Redirect(key=<I176>,clearmods=all), // <I173>/<I176>(‡‡)
SwitchScreen(screen=2,!same) , NoAction() ] , SwitchScreen(screen=2,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK03> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F03 key <FK03> { symbols[Group1]=[Any , Any , Any , Any , // F03
XF86AudioNext , XF86AudioForward , // Audio Next/Forward 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I171>,clearmods=all), Redirect(key=<I216>,clearmods=all), // <I171>/<I216>(‡‡) Redirect(key=<I171>,clearmods=all), Redirect(key=<I216>,clearmods=all), // <I171>/<I216>(‡‡)
SwitchScreen(screen=3,!same) , NoAction() ] , SwitchScreen(screen=3,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK04> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F04 key <FK04> { symbols[Group1]=[Any , Any , Any , Any , // F04
XF86AudioStop , XF86Eject , // Audio Stop/Eject 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I174>,clearmods=all), Redirect(key=<I169>,clearmods=all), // <I174>/<I169>(‡‡) Redirect(key=<I174>,clearmods=all), Redirect(key=<I169>,clearmods=all), // <I174>/<I169>(‡‡)
SwitchScreen(screen=4,!same) , NoAction() ] , SwitchScreen(screen=4,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK05> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F05 key <FK05> { symbols[Group1]=[Any , Any , Any , Any , // F05
XF86AudioMute , XF86Reload , // Audio Mute/Reload 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<MUTE>,clearmods=all), Redirect(key=<I181>,clearmods=all), // <MUTE>/<I181>(‡‡) Redirect(key=<MUTE>,clearmods=all), Redirect(key=<I181>,clearmods=all), // <MUTE>/<I181>(‡‡)
SwitchScreen(screen=5,!same) , NoAction() ] , SwitchScreen(screen=5,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK06> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F06 key <FK06> { symbols[Group1]=[Any , Any , Any , Any , // F06
XF86AudioLowerVolume , XF86MonBrightnessDown , // Audio Vol- / Brightness- 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<VOL->,clearmods=all), Redirect(key=<I232>,clearmods=all), // <VOL->/<I232>(‡‡) Redirect(key=<VOL->,clearmods=all), Redirect(key=<I232>,clearmods=all), // <VOL->/<I232>(‡‡)
SwitchScreen(screen=6,!same) , NoAction() ] , SwitchScreen(screen=6,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK07> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F07 key <FK07> { symbols[Group1]=[Any , Any , Any , Any , // F07
XF86AudioRaiseVolume , XF86MonBrightnessUp , // Audio Vol+ / Brightness+ 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<VOL+>,clearmods=all), Redirect(key=<I233>,clearmods=all), // <VOL+>/<I233>(‡‡) Redirect(key=<VOL+>,clearmods=all), Redirect(key=<I233>,clearmods=all), // <VOL+>/<I233>(‡‡)
SwitchScreen(screen=7,!same) , NoAction() ] , SwitchScreen(screen=7,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK08> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F08 key <FK08> { symbols[Group1]=[Any , Any , Any , Any , // F08
XF86AudioMedia , XF86Sleep , // MediaPlayer / Sleep 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I234>,clearmods=all), Redirect(key=<I150>,clearmods=all), // <I234>/<I150>(‡‡) Redirect(key=<I234>,clearmods=all), Redirect(key=<I150>,clearmods=all), // <I234>/<I150>(‡‡)
SwitchScreen(screen=8,!same) , NoAction() ] , SwitchScreen(screen=8,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK09> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F09 key <FK09> { symbols[Group1]=[Any , Any , Any , Any , // F09
XF86HomePage , XF86WWW , // HomePage / Web 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I180>,clearmods=all), Redirect(key=<I158>,clearmods=all), // <I180>/<I158>(‡‡) Redirect(key=<I180>,clearmods=all), Redirect(key=<I158>,clearmods=all), // <I180>/<I158>(‡‡)
SwitchScreen(screen=9,!same) , NoAction() ] , SwitchScreen(screen=9,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK10> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F10 key <FK10> { symbols[Group1]=[Any , Any , Any , Any , // F10
XF86Search , XF86Mail , // Search / Mail 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(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I225>,clearmods=all), Redirect(key=<I223>,clearmods=all), // <I225>/<I223>(‡‡) Redirect(key=<I225>,clearmods=all), Redirect(key=<I223>,clearmods=all), // <I225>/<I223>(‡‡)
SwitchScreen(screen=10,!same) , NoAction() ] , SwitchScreen(screen=10,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK11> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F11 key <FK11> { symbols[Group1]=[Any , Any , Any , Any , // F11
XF86Explorer , XF86Launch1 , // Explorer / App1 XF86Explorer , XF86Launch1 , // Explorer / App1
XF86_Switch_VT_11 , XF86LogGrabInfo ] , // Virtual Terminal 11 / Debug XF86_Switch_VT_11 , XF86LogGrabInfo ] , // Virtual Terminal 11 / Debug
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch3 is <I210>) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch3 is <I210>)
Redirect(key=<I152>,clearmods=all), Redirect(key=<I156>,clearmods=all), // <I152>/<I156>(‡‡) Redirect(key=<I152>,clearmods=all), Redirect(key=<I156>,clearmods=all), // <I152>/<I156>(‡‡)
SwitchScreen(screen=11,!same) , NoAction() ] , SwitchScreen(screen=11,!same) , NoAction() ] ,
repeat=yes }; repeat=yes };
key <FK12> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F12 key <FK12> { symbols[Group1]=[Any , Any , Any , Any , // F12
XF86Calculator , XF86Launch2 , // Calculator / App2 XF86Calculator , XF86Launch2 , // Calculator / App2
XF86_Switch_VT_12 , XF86LogWindowTree ] , // Virtual Terminal 12 / Debug XF86_Switch_VT_12 , XF86LogWindowTree ] , // Virtual Terminal 12 / Debug
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch4 is <I211>) actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch4 is <I211>)
@ -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? // 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? // - If not, I might not have to send the Caps_Lock keysymbol as long as the LockMods action is there?
key <ESC> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Esc key <ESC> { symbols[Group1]=[Any , Any , Any , Any , // Esc
Caps_Lock , Caps_Lock , // Caps_Lock Caps_Lock , Caps_Lock , // Caps_Lock
Caps_Lock , Caps_Lock ] , Caps_Lock , Caps_Lock ] ,
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
LockMods(mods=Lock) , LockMods(mods=Lock) , // Lock mod for <CAPS> LockMods(mods=Lock) , LockMods(mods=Lock) , // Lock mod for <CAPS>
LockMods(mods=Lock) , LockMods(mods=Lock) ] , LockMods(mods=Lock) , LockMods(mods=Lock) ] ,
repeat=yes }; // Esc repeat=yes }; // Esc
key <TLDE> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Tilde/Grave (` ~) key <TLDE> { symbols[Group1]=[Any , Any , Any , Any , // Tilde/Grave (` ~)
Pointer_EnableKeys , Pointer_EnableKeys , // Ptr_On Pointer_EnableKeys , Pointer_EnableKeys , // Ptr_On
Pointer_EnableKeys , Pointer_EnableKeys ] , // (Enable MouseKeys) Pointer_EnableKeys , Pointer_EnableKeys ] , // (Enable MouseKeys)
repeat=yes }; // ` ~ repeat=yes }; // ` ~
key <AE01> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 1 key <AE01> { symbols[Group1]=[Any , Any , Any , Any , // 1
F1 , F1 , exclam , exclam ] , // F1 / ! F1 , F1 , exclam , exclam ] , // F1 / !
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK01>,clearmods=LevelFive), Redirect(key=<FK01>,clearmods=LevelFive), Redirect(key=<FK01>,clearmods=LevelFive), Redirect(key=<FK01>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 1 repeat=yes }; // 1
key <AE02> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 2 key <AE02> { symbols[Group1]=[Any , Any , Any , Any , // 2
F2 , F2 , at , at ] , // F2 / @ F2 , F2 , at , at ] , // F2 / @
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK02>,clearmods=LevelFive), Redirect(key=<FK02>,clearmods=LevelFive), Redirect(key=<FK02>,clearmods=LevelFive), Redirect(key=<FK02>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 2 repeat=yes }; // 2
key <AE03> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 3 key <AE03> { symbols[Group1]=[Any , Any , Any , Any , // 3
F3 , F3 , numbersign , numbersign ] , // F3 / # F3 , F3 , numbersign , numbersign ] , // F3 / #
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK03>,clearmods=LevelFive), Redirect(key=<FK03>,clearmods=LevelFive), Redirect(key=<FK03>,clearmods=LevelFive), Redirect(key=<FK03>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 3 repeat=yes }; // 3
key <AE04> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 4 key <AE04> { symbols[Group1]=[Any , Any , Any , Any , // 4
F4 , F4 , dollar , sterling ] , // F4 / $ £ F4 , F4 , dollar , sterling ] , // F4 / $ £
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK04>,clearmods=LevelFive), Redirect(key=<FK04>,clearmods=LevelFive), Redirect(key=<FK04>,clearmods=LevelFive), Redirect(key=<FK04>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 4 repeat=yes }; // 4
key <AE05> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 5 key <AE05> { symbols[Group1]=[Any , Any , Any , Any , // 5
F5 , F5 , percent , EuroSign ] , // F5 / % € F5 , F5 , percent , EuroSign ] , // F5 / % €
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK05>,clearmods=LevelFive), Redirect(key=<FK05>,clearmods=LevelFive), Redirect(key=<FK05>,clearmods=LevelFive), Redirect(key=<FK05>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 5 repeat=yes }; // 5
key <AE06> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 6 key <AE06> { symbols[Group1]=[Any , Any , Any , Any , // 6
F6 , F6 , asciicircum , asciicircum ] , // F6 / ^ F6 , F6 , asciicircum , asciicircum ] , // F6 / ^
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK06>,clearmods=LevelFive), Redirect(key=<FK06>,clearmods=LevelFive), Redirect(key=<FK06>,clearmods=LevelFive), Redirect(key=<FK06>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 6 repeat=yes }; // 6
key <AE07> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 7 key <AE07> { symbols[Group1]=[Any , Any , Any , Any , // 7
F7 , F7 , KP_7 , U21D6 ] , // F7 / KP_7 ↖ ⇖ F7 , F7 , KP_7 , U21D6 ] , // F7 / KP_7 ↖ ⇖
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK07>,clearmods=LevelFive), Redirect(key=<FK07>,clearmods=LevelFive), Redirect(key=<FK07>,clearmods=LevelFive), Redirect(key=<FK07>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 7 repeat=yes }; // 7
key <AE08> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 8 key <AE08> { symbols[Group1]=[Any , Any , Any , Any , // 8
F8 , F8 , KP_8 , U21D1 ] , // F8 / KP_8 ↑ ⇑ F8 , F8 , KP_8 , U21D1 ] , // F8 / KP_8 ↑ ⇑
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK08>,clearmods=LevelFive), Redirect(key=<FK08>,clearmods=LevelFive), Redirect(key=<FK08>,clearmods=LevelFive), Redirect(key=<FK08>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 8 repeat=yes }; // 8
key <AE09> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 9 key <AE09> { symbols[Group1]=[Any , Any , Any , Any , // 9
F9 , F9 , KP_9 , U21D7 ] , // F9 / KP_9 ↗ ⇗ F9 , F9 , KP_9 , U21D7 ] , // F9 / KP_9 ↗ ⇗
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK09>,clearmods=LevelFive), Redirect(key=<FK09>,clearmods=LevelFive), Redirect(key=<FK09>,clearmods=LevelFive), Redirect(key=<FK09>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 9 repeat=yes }; // 9
key <AE10> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 0 key <AE10> { symbols[Group1]=[Any , Any , Any , Any , // 0
F10 , F10 , KP_Multiply , KP_Multiply ] , // F10 / KP_* F10 , F10 , KP_Multiply , KP_Multiply ] , // F10 / KP_*
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK10>,clearmods=LevelFive), Redirect(key=<FK10>,clearmods=LevelFive), Redirect(key=<FK10>,clearmods=LevelFive), Redirect(key=<FK10>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // 0 repeat=yes }; // 0
key <AE11> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // - _ key <AE11> { symbols[Group1]=[Any , Any , Any , Any , // - _
F11 , F11 , KP_Subtract , KP_Subtract ] , // F11 / KP_- F11 , F11 , KP_Subtract , KP_Subtract ] , // F11 / KP_-
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK11>,clearmods=LevelFive), Redirect(key=<FK11>,clearmods=LevelFive), Redirect(key=<FK11>,clearmods=LevelFive), Redirect(key=<FK11>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // - _ repeat=yes }; // - _
key <AE12> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // = + key <AE12> { symbols[Group1]=[Any , Any , Any , Any , // = +
F12 , F12 , KP_Equal , KP_Equal ] , // F12 / KP_= F12 , F12 , KP_Equal , KP_Equal ] , // F12 / KP_=
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<FK12>,clearmods=LevelFive), Redirect(key=<FK12>,clearmods=LevelFive), Redirect(key=<FK12>,clearmods=LevelFive), Redirect(key=<FK12>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // = + repeat=yes }; // = +
key <BACK> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // BackSpace key <BKSP> { symbols[Group1]=[Any , Any , Any , Any , // BackSpace
Pause , Pause , // Pause/Break Pause , Pause , // Pause/Break
Pause , Pause ] , // (<BRK> is special) Pause , Pause ] , // (<BRK> is special)
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -266,91 +269,91 @@ xkb_symbols "lv5" {
// +=======+==============================+=======+ // +=======+==============================+=======+
// |=======| Upper Row |=======| // |=======| Upper Row |=======|
// +=======+==============================+=======+ // +=======+==============================+=======+
key <AD01> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Q key <AD01> { symbols[Group1]=[Any , Any , Any , Any , // Q
Escape , Escape , // Esc Escape , Escape , // Esc
Home , KP_Home ] , // Home Home , KP_Home ] , // Home
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive) ,
Redirect(key=<HOME>,clearmods=LevelFive), Redirect(key=<HOME>,clearmods=LevelFive) ] , Redirect(key=<HOME>,clearmods=LevelFive), Redirect(key=<HOME>,clearmods=LevelFive) ] ,
repeat=yes }; // Q repeat=yes }; // Q
key <AD02> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // W key <AD02> { symbols[Group1]=[Any , Any , Any , Any , // W
XF86ScrollUp , XF86ScrollUp , // ScrollUp(††) XF86ScrollUp , XF86ScrollUp , // ScrollUp(††)
Up , KP_Up ] , // ↑ Up , KP_Up ] , // ↑
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
PtrBtn(button=4) , PtrBtn(button=4) , // PtrWhBtUp/Ri PtrBtn(button=4) , PtrBtn(button=4) , // PtrWhBtUp/Ri
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // W // (ScrlR/L & Btn 6/7 may cause crashes now?!) repeat=yes }; // W // (ScrlR/L & Btn 6/7 may cause crashes now?!)
key <AD03> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // E key <AD03> { symbols[Group1]=[Any , Any , Any , Any , // E
XF86Back , XF86Back , // BrBck XF86Back , XF86Back , // BrBck
End , KP_End ] , // End End , KP_End ] , // End
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I166>,clearmods=LevelFive), Redirect(key=<I166>,clearmods=LevelFive), // <I166>(‡‡) Redirect(key=<I166>,clearmods=LevelFive), Redirect(key=<I166>,clearmods=LevelFive), // <I166>(‡‡)
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE E, Cmk F repeat=yes }; // QWE E, Cmk F
key <AD04> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // R key <AD04> { symbols[Group1]=[Any , Any , Any , Any , // R
XF86Forward , XF86Forward , // BrFwd XF86Forward , XF86Forward , // BrFwd
Delete , KP_Delete ] , // Del Delete , KP_Delete ] , // Del
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<I167>,clearmods=LevelFive), Redirect(key=<I167>,clearmods=LevelFive), // <I167>(‡‡) Redirect(key=<I167>,clearmods=LevelFive), Redirect(key=<I167>,clearmods=LevelFive), // <I167>(‡‡)
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE R, Cmk P repeat=yes }; // QWE R, Cmk P
key <AD05> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // T key <AD05> { symbols[Group1]=[Any , Any , Any , Any , // T
Pointer_Up , Pointer_Up , // PtrUp(††) Pointer_Up , Pointer_Up , // PtrUp(††)
Escape , Escape ] , // Esc Escape , Escape ] , // Esc
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
MovePtr(x=+0,y=-8) , MovePtr(x=+0,y=-8) , // PtrUp(††) MovePtr(x=+0,y=-8) , MovePtr(x=+0,y=-8) , // PtrUp(††)
Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive) ] , Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive) ] ,
repeat=yes }; // QWE T, Cmk G repeat=yes }; // QWE T, Cmk G
key <AD06> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Y key <AD06> { symbols[Group1]=[Any , Any , Any , Any , // Y
Page_Up , Page_Up , // PgUp Page_Up , Page_Up , // PgUp
Page_Up , KP_Prior ] , // PgUp / KP_PgUp Page_Up , KP_Prior ] , // PgUp / KP_PgUp
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<PGUP>) , Redirect(key=<PGUP>) , // <PGUP> Redirect(key=<PGUP>) , Redirect(key=<PGUP>) , // <PGUP>
Redirect(key=<PGUP>) , NoAction() ] , Redirect(key=<PGUP>) , NoAction() ] ,
repeat=yes }; // QWE Y, Cmk J repeat=yes }; // QWE Y, Cmk J
key <AD07> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // U key <AD07> { symbols[Group1]=[Any , Any , Any , Any , // U
Home , Home , // Home Home , Home , // Home
KP_4 , U21D0 ] , // KP_4 / ← ⇐ KP_4 , U21D0 ] , // KP_4 / ← ⇐
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<HOME>) , Redirect(key=<HOME>) , // <HOME> Redirect(key=<HOME>) , Redirect(key=<HOME>) , // <HOME>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE U, Cmk L repeat=yes }; // QWE U, Cmk L
key <AD08> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // I key <AD08> { symbols[Group1]=[Any , Any , Any , Any , // I
Up , Up , // ↑ Up , Up , // ↑
KP_5 , U21D4 ] , // KP_5 / ↔ ⇔ KP_5 , U21D4 ] , // KP_5 / ↔ ⇔
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<UP>) , Redirect(key=<UP>) , // <UP> Redirect(key=<UP>) , Redirect(key=<UP>) , // <UP>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE I, Cmk U repeat=yes }; // QWE I, Cmk U
key <AD09> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // O key <AD09> { symbols[Group1]=[Any , Any , Any , Any , // O
End , End , // End End , End , // End
KP_6 , U21D2 ] , // KP_6 / → ⇒ KP_6 , U21D2 ] , // KP_6 / → ⇒
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<END>) , Redirect(key=<END>) , // <END> Redirect(key=<END>) , Redirect(key=<END>) , // <END>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE O, Cmk Y repeat=yes }; // QWE O, Cmk Y
key <AD10> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // P key <AD10> { symbols[Group1]=[Any , Any , Any , Any , // P
Delete , Delete , // Del Delete , Delete , // Del
KP_Add , KP_Add ] , // KP_+ KP_Add , KP_Add ] , // KP_+
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<DELE>) , Redirect(key=<DELE>) , // <DELE> Redirect(key=<DELE>) , Redirect(key=<DELE>) , // <DELE>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE P, Cmk ; : repeat=yes }; // QWE P, Cmk ; :
key <AD11> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // [ { key <AD11> { symbols[Group1]=[Any , Any , Any , Any , // [ {
Escape , Escape , // Esc Escape , Escape , // Esc
parenleft , braceleft ] , // ( parenleft , braceleft ] , // (
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive), Redirect(key=<ESC>,clearmods=LevelFive) , Redirect(key=<ESC>,clearmods=LevelFive),
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // [ { repeat=yes }; // [ {
key <AD12> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ] } key <AD12> { symbols[Group1]=[Any , Any , Any , Any , // ] }
Insert , Insert , // Ins Insert , Insert , // Ins
parenright , braceright ] , // ) parenright , braceright ] , // )
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<INS>) , Redirect(key=<INS>) , // <INS> Redirect(key=<INS>) , Redirect(key=<INS>) , // <INS>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // ] } repeat=yes }; // ] }
key <BKSL> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // \ | key <BKSL> { symbols[Group1]=[Any , Any , Any , Any , // \ |
XF86Favorites , XF86MyComputer , // BrFav XF86Favorites , XF86MyComputer , // BrFav
colon , bar ] , // : colon , bar ] , // :
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -361,84 +364,84 @@ xkb_symbols "lv5" {
// +=======+==============================+=======+ // +=======+==============================+=======+
// |=======| Middle Row |=======| // |=======| Middle Row |=======|
// +=======+==============================+=======+ // +=======+==============================+=======+
key <AC01> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // A key <AC01> { symbols[Group1]=[Any , Any , Any , Any , // A
Alt_L , Alt_L , // <LALT> Alt_L , Alt_L , // <LALT>
Left , KP_Left ] , // ← Left , KP_Left ] , // ←
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
SetMods(mods=Alt) , SetMods(mods=Alt) , // Alt mod SetMods(mods=Alt) , SetMods(mods=Alt) , // Alt mod
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE A, Cmk A repeat=yes }; // QWE A, Cmk A
key <AC02> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // S key <AC02> { symbols[Group1]=[Any , Any , Any , Any , // S
XF86ScrollDown , XF86ScrollDown , // ScrlDown(††) XF86ScrollDown , XF86ScrollDown , // ScrlDown(††)
Down , KP_Down ] , // ↓ Down , KP_Down ] , // ↓
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
PtrBtn(button=5) , PtrBtn(button=5) , // PtrWhBtDn/Le PtrBtn(button=5) , PtrBtn(button=5) , // PtrWhBtDn/Le
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE S, Cmk R // (ScrlR/L & Btn 6/7 may cause crashes now?!) repeat=yes }; // QWE S, Cmk R // (ScrlR/L & Btn 6/7 may cause crashes now?!)
key <AC03> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // D key <AC03> { symbols[Group1]=[Any , Any , Any , Any , // D
Shift_L , Shift_L , // <LFSH> Shift_L , Shift_L , // <LFSH>
Right , KP_Right ], // → Right , KP_Right ], // →
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
SetMods(mods=Shift) , SetMods(mods=Shift) , // Shift mod SetMods(mods=Shift) , SetMods(mods=Shift) , // Shift mod
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE D, Cmk S repeat=yes }; // QWE D, Cmk S
key <AC04> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F key <AC04> { symbols[Group1]=[Any , Any , Any , Any , // F
Control_L , Control_L , // <LCTL> Control_L , Control_L , // <LCTL>
BackSpace , BackSpace ] , // Back BackSpace , BackSpace ] , // Back
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
SetMods(mods=Control) , SetMods(mods=Shift+Control) , // Ctrl mod SetMods(mods=Control) , SetMods(mods=Shift+Control) , // Ctrl mod
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE F, Cmk T repeat=yes }; // QWE F, Cmk T
key <AC05> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // G key <AC05> { symbols[Group1]=[Any , Any , Any , Any , // G
Pointer_Down , Pointer_Down , // PtrDn(††) Pointer_Down , Pointer_Down , // PtrDn(††)
Num_Lock , Num_Lock ] , // NumLock Num_Lock , Num_Lock ] , // NumLock
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
MovePtr(x=+0,y=+8) , MovePtr(x=+0,y=+8) , // PtrDn(††) MovePtr(x=+0,y=+8) , MovePtr(x=+0,y=+8) , // PtrDn(††)
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE G, Cmk D repeat=yes }; // QWE G, Cmk D
key <AC06> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // H key <AC06> { symbols[Group1]=[Any , Any , Any , Any , // H
Page_Down , Page_Down , // PgDn Page_Down , Page_Down , // PgDn
Page_Down , KP_Next ] , // PgDn / KP_PgDn Page_Down , KP_Next ] , // PgDn / KP_PgDn
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<PGDN>) , Redirect(key=<PGDN>) , // <PGDN> Redirect(key=<PGDN>) , Redirect(key=<PGDN>) , // <PGDN>
Redirect(key=<PGDN>) , NoAction() ] , Redirect(key=<PGDN>) , NoAction() ] ,
repeat=yes }; // H repeat=yes }; // H
key <AC07> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // J key <AC07> { symbols[Group1]=[Any , Any , Any , Any , // J
Left , Left , // ← Left , Left , // ←
KP_1 , U21D9 ] , // KP_1 / ↙ ⇙ KP_1 , U21D9 ] , // KP_1 / ↙ ⇙
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<LEFT>) , Redirect(key=<LEFT>) , // <LEFT> Redirect(key=<LEFT>) , Redirect(key=<LEFT>) , // <LEFT>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE J, Cmk N repeat=yes }; // QWE J, Cmk N
key <AC08> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // K key <AC08> { symbols[Group1]=[Any , Any , Any , Any , // K
Down , Down , // ↓ Down , Down , // ↓
KP_2 , U21D3 ] , // KP_2 / ↓ ⇓ KP_2 , U21D3 ] , // KP_2 / ↓ ⇓
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<DOWN>) , Redirect(key=<DOWN>) , // <DOWN> Redirect(key=<DOWN>) , Redirect(key=<DOWN>) , // <DOWN>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE K, Cmk E repeat=yes }; // QWE K, Cmk E
key <AC09> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // L key <AC09> { symbols[Group1]=[Any , Any , Any , Any , // L
Right , Right , // → Right , Right , // →
KP_3 , U21D8 ] , // KP_3 / ↘ ⇘ KP_3 , U21D8 ] , // KP_3 / ↘ ⇘
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<RGHT>) , Redirect(key=<RGHT>) , // <RGHT> Redirect(key=<RGHT>) , Redirect(key=<RGHT>) , // <RGHT>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE L, Cmk I repeat=yes }; // QWE L, Cmk I
key <AC10> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ; : key <AC10> { symbols[Group1]=[Any , Any , Any , Any , // ; :
BackSpace , BackSpace , // Back BackSpace , BackSpace , // Back
KP_Enter , KP_Enter ] , // KP_Enter KP_Enter , KP_Enter ] , // KP_Enter
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<BKSP>) , Redirect(key=<BKSP>) , // <BKSP> Redirect(key=<BKSP>) , Redirect(key=<BKSP>) , // <BKSP>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE ;, Cmk O repeat=yes }; // QWE ;, Cmk O
key <AC11> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // ' " key <AC11> { symbols[Group1]=[Any , Any , Any , Any , // ' "
Menu , Menu , // Menu Menu , Menu , // Menu
apostrophe , quotedbl ] , // ' " apostrophe , quotedbl ] , // ' "
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<COMP>,clearmods=LevelFive), Redirect(key=<COMP>,clearmods=LevelFive) , // <MENU>/<COMP> Redirect(key=<COMP>,clearmods=LevelFive), Redirect(key=<COMP>,clearmods=LevelFive) , // <MENU>/<COMP>
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // ' " repeat=yes }; // ' "
// key <RTRN> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Return // key <RTRN> { symbols[Group1]=[Any , Any , Any , Any , // Return
// Print , Print , // PrtScr // Print , Print , // PrtScr
// Print , Print ] , // PrtScr // Print , Print ] , // PrtScr
// actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -449,14 +452,14 @@ xkb_symbols "lv5" {
// +=======+==============================+=======+ // +=======+==============================+=======+
// |=======| Lower Row |=======| // |=======| Lower Row |=======|
// +=======+==============================+=======+ // +=======+==============================+=======+
key <LSGT> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // < > key <LSGT> { symbols[Group1]=[Any , Any , Any , Any , // < >
Delete , Delete , // User's choice (Del for now) Delete , Delete , // User's choice (Del for now)
Delete , Delete ] , // --"-- Delete , Delete ] , // --"--
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<DELE>) , Redirect(key=<DELE>) , Redirect(key=<DELE>) , Redirect(key=<DELE>) ,
Redirect(key=<DELE>) , Redirect(key=<DELE>) ] , Redirect(key=<DELE>) , Redirect(key=<DELE>) ] ,
repeat=yes }; // < > repeat=yes }; // < >
key <AB01> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Z key <AB01> { symbols[Group1]=[Any , Any , Any , Any , // Z
Undo , Redo , // Undo/Redo Undo , Redo , // Undo/Redo
Undo , Redo ] , // Undo/Redo Undo , Redo ] , // Undo/Redo
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -464,7 +467,7 @@ xkb_symbols "lv5" {
Redirect(key=<AB01>,mods=Control,clearmods=LevelFive), Redirect(key=<AB01>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+Z Redirect(key=<AB01>,mods=Control,clearmods=LevelFive), Redirect(key=<AB01>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+Z
// Redirect(key=<UNDO>) , Redirect(key=<UNDO>) ] , // <UNDO>(‡‡) (not working?) // Redirect(key=<UNDO>) , Redirect(key=<UNDO>) ] , // <UNDO>(‡‡) (not working?)
repeat=yes }; // Z repeat=yes }; // Z
key <AB02> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // X key <AB02> { symbols[Group1]=[Any , Any , Any , Any , // X
XF86Cut , XF86Cut , // Cut(§§) XF86Cut , XF86Cut , // Cut(§§)
XF86Cut , XF86Cut ] , // Cut(§§) XF86Cut , XF86Cut ] , // Cut(§§)
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -472,7 +475,7 @@ xkb_symbols "lv5" {
Redirect(key=<AB02>,mods=Control,clearmods=LevelFive), Redirect(key=<AB02>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+X Redirect(key=<AB02>,mods=Control,clearmods=LevelFive), Redirect(key=<AB02>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+X
// Redirect(key=<CUT>) , Redirect(key=<CUT>) ] , // <CUT>(‡‡) (not working since Ub14.04?) // Redirect(key=<CUT>) , Redirect(key=<CUT>) ] , // <CUT>(‡‡) (not working since Ub14.04?)
repeat=yes }; // X repeat=yes }; // X
key <AB03> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // C key <AB03> { symbols[Group1]=[Any , Any , Any , Any , // C
XF86Copy , XF86Copy , // Copy(§§) XF86Copy , XF86Copy , // Copy(§§)
XF86Copy , XF86Copy ] , // Copy(§§) XF86Copy , XF86Copy ] , // Copy(§§)
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -480,7 +483,7 @@ xkb_symbols "lv5" {
Redirect(key=<AB03>,mods=Control,clearmods=LevelFive), Redirect(key=<AB03>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+C Redirect(key=<AB03>,mods=Control,clearmods=LevelFive), Redirect(key=<AB03>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+C
// Redirect(key=<COPY>) , Redirect(key=<COPY>) ] , // <COPY>(‡‡) (not working since Ub14.04?) // Redirect(key=<COPY>) , Redirect(key=<COPY>) ] , // <COPY>(‡‡) (not working since Ub14.04?)
repeat=yes }; // C repeat=yes }; // C
key <AB04> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // V key <AB04> { symbols[Group1]=[Any , Any , Any , Any , // V
XF86Paste , XF86Paste , // Paste(§§) XF86Paste , XF86Paste , // Paste(§§)
XF86Paste , XF86Paste ] , // Paste(§§) XF86Paste , XF86Paste ] , // Paste(§§)
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
@ -488,49 +491,49 @@ xkb_symbols "lv5" {
Redirect(key=<AB04>,mods=Control,clearmods=LevelFive), Redirect(key=<AB04>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+V Redirect(key=<AB04>,mods=Control,clearmods=LevelFive), Redirect(key=<AB04>,mods=Shift+Control,clearmods=LevelFive)], // Ctrl+V
// Redirect(key=<PAST>) , Redirect(key=<PAST>) ] , // <PAST>(‡‡) (not working since Ub14.04?) // Redirect(key=<PAST>) , Redirect(key=<PAST>) ] , // <PAST>(‡‡) (not working since Ub14.04?)
repeat=yes }; // V repeat=yes }; // V
key <AB05> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // B key <AB05> { symbols[Group1]=[Any , Any , Any , Any , // B
Pointer_Button1 , Pointer_Button1 , // LBt(††) Pointer_Button1 , Pointer_Button1 , // LBt(††)
Pointer_Button1 , Pointer_Button1 ] , // LBt Pointer_Button1 , Pointer_Button1 ] , // LBt
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
PtrBtn(button=1) , PtrBtn(button=1) , // PtrLBt PtrBtn(button=1) , PtrBtn(button=1) , // PtrLBt
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // B repeat=yes }; // B
key <AB06> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // N key <AB06> { symbols[Group1]=[Any , Any , Any , Any , // N
Pointer_Button2 , Pointer_Button2 , // MBt(††) Pointer_Button2 , Pointer_Button2 , // MBt(††)
comma , semicolon ] , // , ; comma , semicolon ] , // , ;
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
PtrBtn(button=2) , PtrBtn(button=2) , // PtrMBt PtrBtn(button=2) , PtrBtn(button=2) , // PtrMBt
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // QWE N, Cmk K repeat=yes }; // QWE N, Cmk K
key <AB07> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // M key <AB07> { symbols[Group1]=[Any , Any , Any , Any , // M
Pointer_Button3 , Pointer_Button3 , // RBt(††) Pointer_Button3 , Pointer_Button3 , // RBt(††)
KP_0 , U21D5 ] , // KP_0 / ↕ ⇕ KP_0 , U21D5 ] , // KP_0 / ↕ ⇕
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
PtrBtn(button=3) , PtrBtn(button=3) , // PtrRBt PtrBtn(button=3) , PtrBtn(button=3) , // PtrRBt
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // M repeat=yes }; // M
key <AB08> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // , < key <AB08> { symbols[Group1]=[Any , Any , Any , Any , // , <
Pointer_Left , Pointer_Left , // PtrLe(††) Pointer_Left , Pointer_Left , // PtrLe(††)
KP_0 , U21D5 ] , // KP_0 / ↕ ⇕ KP_0 , U21D5 ] , // KP_0 / ↕ ⇕
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
MovePtr(x=-8,y=+0) , MovePtr(x=-8,y=+0) , // PtrLe(††) MovePtr(x=-8,y=+0) , MovePtr(x=-8,y=+0) , // PtrLe(††)
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // , < repeat=yes }; // , <
key <AB09> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // . > key <AB09> { symbols[Group1]=[Any , Any , Any , Any , // . >
Pointer_Right , Pointer_Right , // PtrRi(††) Pointer_Right , Pointer_Right , // PtrRi(††)
KP_Decimal , colon ] , // KP_. : KP_Decimal , colon ] , // KP_. :
actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(),
MovePtr(x=+8,y=+0) , MovePtr(x=+8,y=+0) , // PtrRi(††) MovePtr(x=+8,y=+0) , MovePtr(x=+8,y=+0) , // PtrRi(††)
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // . > repeat=yes }; // . >
key <AB10> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // / ? key <AB10> { symbols[Group1]=[Any , Any , Any , Any , // / ?
Multi_key , Multi_key , // Compose Multi_key , Multi_key , // Compose
KP_Divide , KP_Divide ] , // KP_/ KP_Divide , KP_Divide ] , // KP_/
repeat=yes }; // / ? repeat=yes }; // / ?
// NOTE: The Space key should preserve the Shift state; it's special because both levels have the same symbol. // 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. // - One might use a key type that has the 'preserve[Shift] = Shift;' property. However, I fix it directly.
key <SPCE> { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Space key <SPCE> { symbols[Group1]=[Any , Any , Any , Any , // Space
Return , Return , // Enter Return , Return , // Enter
space , nobreakspace ] , // Space space , nobreakspace ] , // Space
actions[Group1]=[NoAction(),SetMods(mods=Shift),NoAction(),SetMods(mods=Shift), actions[Group1]=[NoAction(),SetMods(mods=Shift),NoAction(),SetMods(mods=Shift),
@ -538,9 +541,7 @@ xkb_symbols "lv5" {
NoAction() , NoAction() ] , NoAction() , NoAction() ] ,
repeat=yes }; // Space repeat=yes }; // Space
// key <CAPS> { [ NoSymbol,NoSymbol,NoSymbol,NoSymbol ] }; // CapsLock (Ext key def. is in the level5 file) // §§: XCV Cut/Copy/Paste keys seem OK in Firefox but not Gedit!? This seems to be a GTK weakness.
// §§: XCV Cut/Copy/Paste 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 // - 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 // ††: '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) // (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: 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. // 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. // - Leave it to the layout/options to decide which key(s) to use as switch(es).
// key <CAPS> { [ ISO_Level5_Shift , BackSpace , Caps_Lock , Caps_Lock , NoSymbol ] }; // key <CAPS> { [ ISO_Level5_Shift , BackSpace , Caps_Lock , Caps_Lock ] };
// modifier_map Mod3 { ISO_Level5_Shift }; // modifier_map Mod3 { ISO_Level5_Shift };
// include "level3(ralt_switch)" // include "level3(ralt_switch)"
// include "level5(caps_switch)" // include "level5(caps_switch)"