diff --git a/LICENSE.md b/LICENSE.md index 4ddfb4d..2c6652c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ -Copyright 2016, Øystein Bech Gadmar (a.k.a. "DreymaR") +Copyright 2016, Øystein Bech Gadmar (a.k.a. "DreymaR"). From 2021, Øystein Bech-Aase. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index b73e983..3299913 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ DreymaR's Big Bag of Keyboard Tricks * Powerful Extend layers using Caps Lock as a lv5 modifier for navigation/editing from the home position and more! * Comfy Angle/Wide ergo modifications to improve wrist angles(!), hand spacing and right pinky movement+load * The Curl-DH ergo mod to allow a more natural finger curvature and avoid lateral stretches - - The Colemak-DH layout is a combination of the Curl-DH and Angle mods, on normal row-staggered keyboards + - The Colemak-DH layout is a combination of the Curl-DH and Angle mods, on normal row-staggered keyboards * WIP: The Sym ergo mod to improve access to often-used symbol keys is planned to be implemented soon * For several locales, a 'Unified Symbols' layout with only a few necessary changes from the standard Colemak[eD] * Also, a layout to 'Keep Local Symbols' like their default (QWERTY-type) counterparts for that locale @@ -18,44 +18,41 @@ DreymaR's Big Bag of Keyboard Tricks
The main Big Bag pages are found at [https://dreymar.colemak.org/][BigBag]. To see XKB info boxes there, select the Tux platform icon. - -These [xkeyboard-config][XKBgitHb] files are updated to [XKB-data v2.23.1-1ubuntu1][XKB-Ub18], 2018. They work fine with other versions though, in nearly all cases.
Some info --------- -First, run the install script. This copies my modified files into the system X11 directory. Original files are backed up by default. - -You can now probably use the system's layout settings to choose a setup. For info on what the choices are, consult the [Big Bag][BigBag]. - -However, some layout settings won't let you set the model component that I use for some ergo mods. - -The setkb script activates a Big Bag layout setup (model, layout and option components) using a `setxkbmap` command. - -The setkb script can write its command to a file that gets sourced at startup, like `~/.bashrc`; check your distro for which file(s) to use. - -Run the install and setkb scripts with -h (or look inside them) for more help and info about their workings! - -Learn about `setkb.sh "model locale variant"` shortstring syntax in the [BigBag][BigBag4X]. -The default is `"5caw us us"`: PC105(ISO) board with Curl(DH)AngleWide mods, US locale, Cmk-eD UniversalSymbols variant. -To switch to, say, an ANSI board without ergo mods, that's `4n` instead of `5caw`. Look in the scripts. - -NOTE: It may be necessary to select "Use system defaults" if you have changed anything in the OS GUI layout settings. +* First, run the install script. This copies my modified files into the system X11 directory. Original files are backed up by default. +* You can now probably use the system's layout settings to choose a setup. +* For info on what your choices are, consult the [Big Bag][BigBag] pages. +* However, some layout settings won't let you set the model component that I use for some ergo mods. +* The setkb script activates a Big Bag layout setup (model, layout and option components) using a `setxkbmap` command. +* The setkb script can write its command to a file that gets sourced at startup, like `~/.bashrc`; check your distro for which file(s) to use. +* Run the install and setkb scripts with -h (or look inside them) for more help and info about their workings! +* Learn about `setkb.sh "model locale variant"` shortstring syntax in the [BigBag][BigBag4X]. + - The default is `"5caw us us"`: PC105(ISO) board with Curl(DH)AngleWide mods, US locale, Cmk-eD UniversalSymbols variant. + - To switch to, say, an ANSI board without ergo mods, that's `4n` instead of `5caw`. Look in the scripts. +* NOTE: It may be necessary to select "Use system defaults" if you have changed anything in the OS GUI layout settings.
Tips ---- * Before trying out the BigBag, you may want to find out what your current XKB settings are. One way of seeing what you use is `setxkbmap -v 9`. - - To get the standard US default layout back, you can use `setkb 4n` for ANSI keyboards (`5n` for ISO). What you want may depend on your locale. + - To get the standard US default layout back, you can use `setkb 4n` for ANSI keyboards; `5n` for ISO. What you want depends on your locale. + - Generally, use `setkb 4n/5n [loc [var]]` to get back your locale layout/model. The `[var]` is for variant; omit it for the default/basic one. * Due to complaints from new users that Extend on F# keys interferes with `Ctrl+Alt+F#` TTY shortcuts, FKey Extend is now disabled by default. - - You can enable FKey Extend by activating the [include "extend(lv5_fk)"][BB-ExtFK] bit (delete the trailing slashes) in the `symbols/extend` file. - - If you had already installed the BigBag you must either edit the file in its target X11 directory, or edit and then reinstall the files. - - In theory, we could make such shortcuts part of Extend so you can have both them and the Multimedia key shortcuts. I'll think about it. + - You can enable FKey Extend by activating the [include "extend(lv5_fk)"][BB-ExtFK] bit (delete the trailing slashes) in the `symbols/extend` file. + - If you had already installed the BigBag you must either edit the file in its target X11 directory, or edit and then reinstall the files. + - In theory, we could make such shortcuts part of Extend so you can have both them and the Multimedia key shortcuts. I'll think about it. * The 'Keep Symbols' layouts are intended for those who aren't ready to give up their symbol mappings. Not the best option, but "training wheels". - - The Unified 'us' variants are usually much better. The 'ks' ones will miss out on some symbols and many dead keys. + - The Unified 'us' variants are usually much better. The 'ks' ones will miss out on some symbols and many dead keys. * The `xkb-data` package is very consistent between distros. I've use [Debian xkb-data][XKB-DebS], sometimes with some Ubuntu updates. -* Any .deb package may be opened using `dpkg -x` or `ar -xv` (from `binutils`) on Linux, and any decent zip manager such as PeaZip on Windows. +* Any .deb package may be opened using `dpkg -x` or `ar -xv` (from `binutils`) on Linux + - On Windows, you can use any decent zip manager such as PeaZip. +* To change your logon keyboard layout, use the `dpkg-reconfigure` command: + - `sudo dpkg-reconfigure keyboard-configuration` + - NOTE: Be sure you know how to type your password afterwards!
localectl @@ -68,19 +65,19 @@ localectl * Add `--no-convert` to not convert between closest matching console and X11 keyboard mappings; this precludes applying as system console mapping * Note that XKB options may be overridden by the settings tools used with desktop environments like GNOME and KDE * More info on setting keyboard layouts is found in the Arch Manual and Wiki, at: - https://man.archlinux.org/man/localectl.1 - https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl - https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration#Persistent_configuration + - https://man.archlinux.org/man/localectl.1 + - https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl + - https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration#Persistent_configuration * Thanks to: Daniele, i-c-u-p, Flomza and others at the Cmk Discord for helping find this out
Wayland & Friends ----------------- -Wayland has a different tack: It uses xkb-data files, but not an X server. So the setkb script won't work there, but the BigBag as such will. +Wayland has a somewhat different tack: It uses xkb-data files, but not an X server. So the setkb script won't work there, but the BigBag as such will. -It depends on which Wayland Compositor you're using. See its docs? +It depends on which Wayland Compositor you're using. See its docs for more info? -For the Sway compositor, add a piece like this example to your `~/.config/sway/config` file: +For the popular Sway compositor, add a piece like this example to your `~/.config/sway/config` file: ``` input * { xkb_model pc105 @@ -89,6 +86,23 @@ input * { xkb_options lv5:caps_switch_lock,misc:extend,compose:menu } ``` + +And, here's one for Hyprland: +``` +input { + kb_rules=evdev + kb_model=pc105aw-sl + kb_layout=us + kb_variant=cmk_ed_us + kb_options=misc:extend,lv5:caps_switch_lock,grp:shifts_toggle,compose:menu,misc:cmk_curl_dh + + repeat_rate=40 + repeat_delay=200 +} +``` +The repeat settings are of course optional. Some like a higher repeat rate and a lower delay, and this is how to get that. + +I guess the solution will be quite similar for other compositors, but I don't know more at the moment.
Links @@ -97,134 +111,30 @@ See [DREYMAR'S BigBag XKB topic on the Colemak Forums][BigBag4X]. There are plenty of explanations and further links in there.
+TODO/DONE for this repo are found in the [xmod folder README][xmREADME]. +
+ One good source of info on the `xkb-data` package is the [xkeyboard-config][XKB-conf] repository itself, and its `docs` folder. The repo is found both on [GitHub][XKBgitHb] and [GitLab][XKBgitLb].
-Ivan Pascal is a grandmaster of XKB; to learn it you should definitely consult his pages. They're a bit incomplete for us who don't speak Russian, but well worth it nonetheless. +Or, have a look in the X.Org Wiki. +https://www.x.org/wiki/XKB/ +
+ +Arch has good documentation on all things XKB. +https://wiki.archlinux.org/title/X_keyboard_extension +https://wiki.archlinux.org/title/Xorg/Keyboard_configuration +
+ +Ivan Pascal is a grandmaster of XKB; to learn it better you should definitely consult his site. Though maybe a bit less complete for us who can't read Russian, it's well worth it. http://pascal.tsu.ru/en/xkb http://pascal.tsu.ru/en/xkb/gram-symbols.html
-Happy XKB hacking! -_DreymaR, 2023-01_ +Happy XKB hacking!
   +_DreymaR_

-TODO: ------ -* Update all forum.colemak.com links with new BigBag links: Locale topic (id=1458) -> https://dreymar.colemak.org/variants.html#locales etc. -* Fix key repetition with Extend, particularly vis-a-vis Wayland. - - Seems we have to add `repeat=yes` after the key actions to all keys that have actions. - - https://discord.com/channels/409502982246236160/1066499260322943006/1080488398403424256 - - http://web.archive.org/web/20190320180541/http://pascal.tsu.ru/en/xkb/gram-symbols.html - - I couldn't devise a way to do this once and for instead of by-key (looked at compat but no?). -* Better instructions for Wayland - - Depends on your Wayland Compositor (Sway is common?) - https://wiki.archlinux.org/title/wayland#Compositors - - Didn't we have some good ones at the Colemak Discord? Where? - https://discord.com/channels/409502982246236160/1059814838408319026/1059866421066203257 -* Lockable lv5 modifier, for users who want Extend-lock. Maybe Shift+Extend to lock it, or something? - - It's possible today to have two switch-or-lock lv5 modifiers. But it seems wasteful to use up two keys. -* Non-Fn-key Extend is now the default. Add a separate option for FKey Extend? Many new users struggled with this, or have weird FKey setups. - - Add a FKey Extend option to misc? So people can activate `misc:extend` and `misc:extend_fk` separately. -* Add colemak-dh to the colemak symbols file and the US locale? Both ISO, ANSI and Ortho. -* Not all distros source `~/.bashrc` by default. Seems that `~/.xinitrc` is mostly used by xinit and not generally sourced? - - What about `~/.xsession` or `~/.profile`? Seems to be mostly legacy; used by `startx`? It's messy. - - Look in `/etc/X11/Xsession` to see how thing are run at startup? - - But `~/.Xresources` seems like a good option (and is sourced by xinitrc too)? - - Its format is different though. And it doesn't list keyboard layout as one of its intended purposes. -* Add some easy way of returning to the old xkbmap setup? But how? Can't unset settings, so we'd have to store it somehow? Or just let them go to us/us? - - Make a restore to default layout shortcut instead? It's only an alias for `setkb 4n/5n`. Maybe `resetkb 4/5`? -* Transition many ###.xml changes to ###.extras.xml? Other Colemak locale variants reside there. But it's a mess: Many (such as Norwegian) are in the main file! - - It might be nice to keep all the BigBag locales in one place though? Or not? -* To get Extend with the currently active layout, use `setxkbmap -v 9 -option "" -option "misc:extend,lv5:caps_switch_lock,compose:menu"`. - - The first `-option ""` clears any existing option settings, while the one with non-empty arguments add to existing options. -* Add lv5:lalt_switch_lock for LALT-Extend. -* Add compose:102? Inconsistent between ISO and ANSI, just add a pro-tip. -* The Curl(DH) model implementation has to go as it may mess w/ QWERTY. Instead, I should use two Extend variants. - - It also seems very hard for some newcomers to understand. So yes, I should have the Angle mod only and not CurlAngle models? - - Also, matrix users want the V-D swap without an Angle mod! Another nail in the coffin for the Curl models. - - Actually, should I make a NoModel CurlAngle layout for the model impaired? Vanilla, Curl(DH) and Curl(DH)Angle then. ... No? - - First, just make Curl with D-V swap built in. Let the Extend Paste function be where it falls for now. - - Separate Angle mods for Curl and non-Curl? Probably not, as it'll still get silly when using both QWERTY and Cmk-eD. -* Check out the compose:102 option. This would be similar to what I've used in EPKL for Windows! It's also present in some other layouts. - -* Problems with Super+ shortcuts: https://github.com/DreymaR/BigBagKbdTrixXKB/issues/23#issuecomment-1027839924 - -* A purge option in addition to restore for the install script? So backup dirs etc are removed and the xkb dir restored to original state. - -* Update xkb-data and then start testing on a Wayland system! - - Use the [GitLab][XKBgitLb]/[GitHub][XKBgitHb] repo as that's the freshest there is. - -* A clarification by Peter Hutterer on the mystic .part files in the rules component: - - https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/327#note_1436334 - - The parts are numbered to get their sequence in the resulting files right. Only when there are differences, they start with base/evdev. - - There are RMLVO (user interface) and KcCSGST (actual XKB) letter codes. The naming of those .part files is 1234-rmlvo-kccgst.part... - - but with only the relevant bits. So, e.g., `0009-m_g.part` is the model to group mapping of the final rules file. `ml_s.part` is model + layout to symbols. - - It seems that you can make layout commits by editing only the rules/base.xml (and symbols) file(s) though? - -* Echo the setxkbmap command when using setkb.sh, for ease of troubleshooting! Also make the script able to output the command for piping? -* Add a model-less Colemak-CAWS for people who want to switch to QWERTY? Or instructions on how to setkb it? That's better, I think. -* Problem: Using Google Spreadsheets, hitting Caps Lock (which is mapped to ISO_Level5_Shift) clears the current spreadsheet cell. - - https://forum.colemak.com/topic/1438-dreymars-big-bag-of-keyboard-tricks-linuxxkb-files-included/p15/#p23838 - - This solves it by convincing Google Sheets that the Caps key is a Win key: `sudo setkeycodes 0x3a 125` - - But it only works for built-in laptop keyboards and not USB/Bluetooth ones? -* Is there a way to clear the LevelFive mod on all the Extend mappings by default? Or must I be more careful with each RedirectKey()? - - Example: `Q -> Esc -> Caps` caused people trouble, as Ext+Q would act as Esc+Caps. - - Possibly, finally make a new key type EIGHT_LEVEL_EXTEND with the action clearmods=LevelFive added to state 5-8? No, no actions. - - In xkb/types/level5 under EIGHT_LEVEL_SEMIALPHABETIC I used `preserve[Shift] = Shift;`. We need the opposite here, to discard lvl5. - - See for instance https://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html - - "Usually, all modifiers introduced in 'modifiers=' list are used for shift level calculation and then discarded." - - Does this mean that LevelFive should've been discarded but isn't? Is it an XKB bug? -* Update to the latest xkb-data: https://ubuntu.pkgs.org/20.04/ubuntu-main-amd64/xkb-data_2.29-2_all.deb.html -* Find out how to change the rules component properly to allow compiling and eventually merging to the main repo? -* Migrate from `~/.bashrc` to `~/.xprofile`? The latter is more appropriate, but which setups source it and which ones don't? - - Include both? Or, people can just enter the file names. -* Could use an key code alias defined in keycodes/evdev (alias = ), instead of the code? -* Test this method for using a local dir, by Bjørnar "zkf" Hansen: - - Copy the `xkb-data_mod/xkb` dir to, say, `/usr/local/bigbag/xkb` if desired. - - Set `setenv MYXKB ` or `export MYKXB=` as appropriate (not necessary for this, just practical here). - - `setxkbmap -rules evdev -option '' -print | xkbcomp -I -I$MYXKB -I/usr/share/X11/xkb - $DISPLAY` - - See https://github.com/DreymaR/BigBagKbdTrixXKB/issues/14 - - More useful info in this comment: https://github.com/DreymaR/BigBagKbdTrixXKB/issues/14#issuecomment-767590722 - - "-I/usr/local/share/X11/xkb can be written more succinctly as -I. if you first cd into this directory." - - Another reason to first cd into the local xkb dir is that the rules dir is expected to be in the pwd. -* An earlier comment on the local dir subject, by neeasade@github in issue 1: - - https://github.com/DreymaR/BigBagKbdTrixXKB/issues/1#issuecomment-462952051 - - https://unix.stackexchange.com/questions/397716/custom-keyboard-layout-without-root - - `setxkbmap -I $MYXKB -rules evdev -print | xkbcomp -I $MYXKB - "$DISPLAY" - - "I made that tweak to setkb and some small changes to use a hardcoded $HOME dir path, and it appears good." - - Another attempt by birdspider, with some tripups and solutions: - https://github.com/DreymaR/BigBagKbdTrixXKB/issues/1#issuecomment-818880299 -* For an EsAlt variant as in EPKL: -``` - key { [ 4, dollar, dead_currency, EuroSign ] }; // 4 - key { [ l, L, U2039, guillemotleft ] }; // QWE U Cmk L - key { [ u, U, ú, Ú ] }; // QWE I Cmk U - EsAlt - key { [ a, A, á, Á ] }; // QWE A Cmk A - EsAlt - key { [ h, H, leftarrow, rightarrow ] }; // QWE H Cmk H -// key { [ n, N, ñ, Ñ ] }; // QWE J Cmk N - EsAlt ANSI - key { [ e, E, é, É ] }; // QWE K Cmk E - EsAlt - key { [ i, I, í, Í ] }; // QWE L Cmk I - EsAlt - key { [ o, O, ó, Ó ] }; // QWE ; Cmk O - EsAlt - key { [ ñ, Ñ, oe, OE ] }; // <> - EsAlt ISO -// key { [ k, K, endash, uparrow ] }; // QWE N Cmk K - ANSI - key { [ bracketleft, braceleft, masculine, ordfeminine ] }; // [{ -``` -* To change the logon keyboard layout: - - `sudo dpkg-reconfigure keyboard-configuration` -
- -DONE: ------ -* Moved Space to the "letters" block to ensure a consistent Space key implementation for `_ks` layouts etc. Many xkb layouts are sloppy about that. -* 2023-01-03: Renamed setkb --> setkb: It's easier to type. Updated all docs including the Forum topic. -* 2020-11-05: Switched to the new DH = DHm standard (was DH = DHk) -* Changed the default layout for the setkb.sh script to US (UniSym): In my experience, most users that struggle with the setup want US English. -* To get back to your old layout/model, use `setkb 4n/5n [loc]`. You may also specify `mod loc [var]`; omit `var` for the default (basic) variant. -* Separated out the F# key block in the extend file: People complain that their TTY shortcuts aren't working because of it. Ext+AltGr+F# works though. -* Relieve the sudo requirement. And add an option to change the X11 dir since Nix uses another place. Pulled from fufexan@github. - - https://github.com/DreymaR/BigBagKbdTrixXKB/issues/15#issuecomment-769431139 - [XKB-conf]: https://www.freedesktop.org/wiki/Software/XKeyboardConfig/ (XKeyboard Config page) [XKBgitHb]: https://github.com/freedesktop/xkeyboard-config (XKB-config on GitHub) @@ -236,4 +146,6 @@ DONE: [XKB-2351]: https://debian.pkgs.org/sid/debian-main-amd64/xkb-data_2.35.1-1_all.deb.html (Debian Sid xkb-data page, 2022-12) [BigBag]: https://dreymar.colemak.org/ (DreymaR's Big Bag of Keyboard Tricks) [BigBag4X]: http://forum.colemak.com/viewtopic.php?id=1438 (DreymaR's old BigBag for Linux/XKB on the Colemak Forum) -[BB-ExtFK]: https://github.com/DreymaR/BigBagKbdTrixXKB/blob/a8db6e705e78721a1f2d82c54fcebfe304b4d66a/xkb-data_xmod/xkb/symbols/extend#L64 (BigBag – FK include in symbol/extend) +[BB-ExtFK]: /xkb-data_xmod/xkb/symbols/extend#L66 (BigBag4XKB – FKkey include in symbol/extend file) +[BBREADME]: README.md (main BigBag4XKB README) +[xmREADME]: /xkb-data_xmod/README.md (xmod BigBag4XKB README) diff --git a/xkb-data_xmod/README.md b/xkb-data_xmod/README.md new file mode 100644 index 0000000..13b21d6 --- /dev/null +++ b/xkb-data_xmod/README.md @@ -0,0 +1,155 @@ +XKB data for DreymaR's Big Bag of Keyboard Tricks +================================================= + +This readme holds version info, and also TODO and DONE lists for the BigBag-4-XKB repo. + +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. +
+ + +VERSION: +-------- + File description: Modified xkb-data files for DreymaR's Big Bag of Keyboard Tricks (Linux/XKB) + Files found here: https://github.com/DreymaR/BigBagKbdTrixXKB + xkb-data version: 2-23-1-1ub1, edition DreymaR + XKB archive date: 2018-02-02 + My starting date: 2018-08-21 + + +TODO: +----- +* Make a patch file of the mod dir. +* Update all forum.colemak.com links with new BigBag links: Locale topic (id=1458) -> https://dreymar.colemak.org/variants.html#locales etc. +* Better instructions for Wayland? + - Depends on your Wayland Compositor (Sway is common?) + https://wiki.archlinux.org/title/wayland#Compositors + - Didn't we have some good ones at the Colemak Discord? Where? + https://discord.com/channels/409502982246236160/1059814838408319026/1059866421066203257 +* Lockable lv5 modifier, for users who want Extend-lock. Maybe Shift+Extend to lock it, or something? + - It's possible today to have two switch-or-lock lv5 modifiers. But it seems wasteful to use up two keys. +* Non-Fn-key Extend is now the default. Add a separate option for FKey Extend? Many new users struggled with this, or have weird FKey setups. + - Add a FKey Extend option to misc? So people can activate `misc:extend` and `misc:extend_fk` separately. +* Add colemak-dh to the colemak symbols file and the US locale? Both ISO, ANSI and Ortho. + - Would it be "allowable" to actually move both default and dh colemak _into_ the symbols/colemak file now? + - If so, edit rules components accordingly, and consider editing all locale variants to include them +* Not all distros source `~/.bashrc` by default. Seems that `~/.xinitrc` is mostly used by xinit and not generally sourced? + - What about `~/.xsession` or `~/.profile`? Seems to be mostly legacy; used by `startx`? It's messy. + - Look in `/etc/X11/Xsession` to see how thing are run at startup? + - But `~/.Xresources` seems like a good option (and is sourced by xinitrc too)? + - Its format is different though. And it doesn't list keyboard layout as one of its intended purposes. +* Add some easy way of returning to the old xkbmap setup? But how? Can't unset settings, so we'd have to store it somehow? Or just let them go to us/us? + - Could write setxkbmap output to a file. Check it isn't overwritten, like the normal backup. + - Make a restore to default layout shortcut instead? It's only an alias for `setkb 4n/5n`. Maybe `resetkb 4/5`? +* Transition many ###.xml changes to ###.extras.xml? Other Colemak locale variants reside there. But it's a mess: Many (such as Norwegian) are in the main file! + - It might be nice to keep all the BigBag locales in one place though? Or not? +* To get Extend with the currently active layout, use `setxkbmap -v 9 -option "" -option "misc:extend,lv5:caps_switch_lock,compose:menu"`. + - The first `-option ""` clears any existing option settings, while the one with non-empty arguments add to existing options. +* Add lv5:lalt_switch_lock for LALT-Extend. +* Add compose:102? Inconsistent between ISO and ANSI, just add a pro-tip. +* The Curl(DH) model implementation has to go as it may mess w/ QWERTY. Instead, I should use two Extend variants. + - It also seems very hard for some newcomers to understand. So yes, I should have the Angle mod only and not CurlAngle models? + - Also, matrix users want the V-D swap without an Angle mod! Another nail in the coffin for the Curl models. + - The V-D swap also messes with the Extend mapping for Paste, which becomes Ctrl+D instead of Ctrl+V. + - Actually, should I make a NoModel CurlAngle layout for the model impaired? Vanilla, Curl(DH) and Curl(DH)Angle then. ... No? + - First, just make Curl with D-V swap built in. Let the Extend Paste function be where it falls for now? + - Separate Angle mods for Curl and non-Curl? Probably not, as it'll still get silly when using both QWERTY and Cmk-eD. + - Separate Extend-Angle includes! Similar to how EPKL handles this problem. +* Check out the compose:102 option. This would be similar to what I've used in EPKL for Windows! It's also present in some other layouts. +* Echo the setxkbmap command when using setkb.sh, for ease of troubleshooting! Also make the script able to output the command for piping? +* Add a localectl option to setkb.sh? So people can choose that or setxkbmap. Eventually, even more variants such as Sway? + +* Problems with Super+ shortcuts: https://github.com/DreymaR/BigBagKbdTrixXKB/issues/23#issuecomment-1027839924 + +* A purge option in addition to restore for the install script? So backup dirs etc are removed and the xkb dir restored to original state. + +* Update xkb-data and then start testing on a Wayland system! + - Use the [GitLab][XKBgitLb]/[GitHub][XKBgitHb] repo as that's the freshest there is. + +* A clarification by Peter Hutterer on the mystic .part files in the rules component: + - https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/327#note_1436334 + - The parts are numbered to get their sequence in the resulting files right. Only when there are differences, they start with base/evdev. + - There are RMLVO (user interface) and KcCSGST (actual XKB) letter codes. The naming of those .part files is 1234-rmlvo-kccgst.part... + - but with only the relevant bits. So, e.g., `0009-m_g.part` is the model to group mapping of the final rules file. `ml_s.part` is model + layout to symbols. + - It seems that you can make layout commits by editing only the rules/base.xml (and symbols) file(s) though? + +* Add a model-less Colemak-CAWS for people who want to switch to QWERTY? Or instructions on how to setkb it? That's better, I think. +* Problem: Using Google Spreadsheets, hitting Caps Lock (which is mapped to ISO_Level5_Shift) clears the current spreadsheet cell. + - https://forum.colemak.com/topic/1438-dreymars-big-bag-of-keyboard-tricks-linuxxkb-files-included/p15/#p23838 + - This solves it by convincing Google Sheets that the Caps key is a Win key: `sudo setkeycodes 0x3a 125` + - But it only works for built-in laptop keyboards and not USB/Bluetooth ones? +* Is there a way to clear the LevelFive mod on all the Extend mappings by default? Or must I be more careful with each RedirectKey()? + - Example: `Q -> Esc -> Caps` caused people trouble, as Ext+Q would act as Esc+Caps. + - Possibly, finally make a new key type EIGHT_LEVEL_EXTEND with the action clearmods=LevelFive added to state 5-8? No, no actions. + - In xkb/types/level5 under EIGHT_LEVEL_SEMIALPHABETIC I used `preserve[Shift] = Shift;`. We need the opposite here, to discard lvl5. + - See for instance https://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html + - "Usually, all modifiers introduced in 'modifiers=' list are used for shift level calculation and then discarded." + - Does this mean that LevelFive should've been discarded but isn't? Is it an XKB bug? +* Update to the latest xkb-data: https://ubuntu.pkgs.org/20.04/ubuntu-main-amd64/xkb-data_2.29-2_all.deb.html +* Find out how to change the rules component properly to allow compiling and eventually merging to the main repo? +* Migrate from `~/.bashrc` to `~/.xprofile`? The latter is more appropriate, but which setups source it and which ones don't? + - Include both? Or, people can just enter the file names. +* Could use an key code alias defined in keycodes/evdev (alias = ), instead of the code? +* Test this method for using a local dir, by Bjørnar "zkf" Hansen: + - Copy the `xkb-data_mod/xkb` dir to, say, `/usr/local/bigbag/xkb` if desired. + - Set `setenv MYXKB ` or `export MYKXB=` as appropriate (not necessary for this, just practical here). + - `setxkbmap -rules evdev -option '' -print | xkbcomp -I -I$MYXKB -I/usr/share/X11/xkb - $DISPLAY` + - See https://github.com/DreymaR/BigBagKbdTrixXKB/issues/14 + - More useful info in this comment: https://github.com/DreymaR/BigBagKbdTrixXKB/issues/14#issuecomment-767590722 + - "-I/usr/local/share/X11/xkb can be written more succinctly as -I. if you first cd into this directory." + - Another reason to first cd into the local xkb dir is that the rules dir is expected to be in the pwd. +* An earlier comment on the local dir subject, by neeasade@github in issue 1: + - https://github.com/DreymaR/BigBagKbdTrixXKB/issues/1#issuecomment-462952051 + - https://unix.stackexchange.com/questions/397716/custom-keyboard-layout-without-root + - `setxkbmap -I $MYXKB -rules evdev -print | xkbcomp -I $MYXKB - "$DISPLAY" + - "I made that tweak to setkb and some small changes to use a hardcoded $HOME dir path, and it appears good." + - Another attempt by birdspider, with some tripups and solutions: + https://github.com/DreymaR/BigBagKbdTrixXKB/issues/1#issuecomment-818880299 +* For an EsAlt variant as in EPKL: +``` + key { [ 4, dollar, dead_currency, EuroSign ] }; // 4 + key { [ l, L, U2039, guillemotleft ] }; // QWE U Cmk L + key { [ u, U, ú, Ú ] }; // QWE I Cmk U - EsAlt + key { [ a, A, á, Á ] }; // QWE A Cmk A - EsAlt + key { [ h, H, leftarrow, rightarrow ] }; // QWE H Cmk H +// key { [ n, N, ñ, Ñ ] }; // QWE J Cmk N - EsAlt ANSI + key { [ e, E, é, É ] }; // QWE K Cmk E - EsAlt + key { [ i, I, í, Í ] }; // QWE L Cmk I - EsAlt + key { [ o, O, ó, Ó ] }; // QWE ; Cmk O - EsAlt + key { [ ñ, Ñ, oe, OE ] }; // <> - EsAlt ISO +// key { [ k, K, endash, uparrow ] }; // QWE N Cmk K - ANSI + key { [ bracketleft, braceleft, masculine, ordfeminine ] }; // [{ +``` +
+ + +DONE: +----- +* Fixed key repetition with Extend, particularly vis-a-vis Wayland. + - Added `repeat=yes` after the key actions, to all keys that have actions. + - https://discord.com/channels/409502982246236160/1066499260322943006/1080488398403424256 + - http://web.archive.org/web/20190320180541/http://pascal.tsu.ru/en/xkb/gram-symbols.html + - I couldn't devise a way to do this once and for instead of by-key (looked at compat but no?). +* Moved Space to the "letters" block to ensure a consistent Space key implementation for `_ks` layouts etc. Many xkb layouts are sloppy about that. +* Renamed setkb --> setkb: It's easier to type. Updated all docs including the Forum topic. +* Switched to the new DH = DHm standard (was DH = DHk, 2017–2020). +* Changed the default layout for the setkb.sh script to US (UniSym): In my experience, most users that struggle with the setup want US English. +* Relieve the sudo requirement. And add an option to change the X11 dir since Nix uses another place. Pulled from fufexan@github. + - https://github.com/DreymaR/BigBagKbdTrixXKB/issues/15#issuecomment-769431139 + + +[XKB-conf]: https://www.freedesktop.org/wiki/Software/XKeyboardConfig/ (XKeyboard Config page) +[XKBgitHb]: https://github.com/freedesktop/xkeyboard-config (XKB-config on GitHub) +[XKBgitLb]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config (XKB-config on GitLab) +[XKB-pkgs]: https://pkgs.org/download/xkb-data (pkgs.org xkb-data page) +[XKB-DebS]: https://packages.debian.org/sid/xkb-data (Debian Sid xkb-data download) +[XKB-Ub18]: https://ubuntu.pkgs.org/18.04/ubuntu-main-amd64/xkb-data_2.23.1-1ubuntu1_all.deb.html (Ubuntu 18.04 LTS xkb-data page) +[XKB-Ub22]: https://ubuntu.pkgs.org/22.04/ubuntu-main-amd64/xkb-data_2.33-1_all.deb.html (Ubuntu 22.04 LTS xkb-data page) +[XKB-2351]: https://debian.pkgs.org/sid/debian-main-amd64/xkb-data_2.35.1-1_all.deb.html (Debian Sid xkb-data page, 2022-12) +[BigBag]: https://dreymar.colemak.org/ (DreymaR's Big Bag of Keyboard Tricks) +[BigBag4X]: http://forum.colemak.com/viewtopic.php?id=1438 (DreymaR's old BigBag for Linux/XKB on the Colemak Forum) +[BB-ExtFK]: https://github.com/DreymaR/BigBagKbdTrixXKB/blob/a8db6e705e78721a1f2d82c54fcebfe304b4d66a/xkb-data_xmod/xkb/symbols/extend#L64 (BigBag – FK include in symbol/extend) +[BBREADME]: README.md (main BigBag4XKB README) diff --git a/xkb-data_xmod/xkb/symbols/extend b/xkb-data_xmod/xkb/symbols/extend index 1d56093..020f213 100644 --- a/xkb-data_xmod/xkb/symbols/extend +++ b/xkb-data_xmod/xkb/symbols/extend @@ -1,9 +1,9 @@ // Extend mode symbols for xkb on X.Org Server 7.x+ -// 2014-2022 OEystein Bech "DreymaR" Gadmar +// 2014- OEystein "DreymaR" Bech-Aase (Bech Gadmar until 2021) // See "DreymaR's Big Bag of Keyboard Tricks": https://dreymar.colemak.org // A modular Extend mapping layer like the one I have in Portable Keyboard Layout for Windows // - Key names are in /usr/include/X11/keysymdef.h and XF86keysym.h (Removing the XK_ prefix) -// - mapped as XF86 Multimedia keys; shifted versions were not implemented in EPKL for Windows +// - mapped as XF86 Multimedia keys; shifted versions are implemented (unlike in EPKL for Windows) // // These keys are modified/transposed by holding down the 'extend key' (CapsLock by default): // +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ @@ -40,24 +40,26 @@ // | Cust | Undo | Cut | Copy | Paste | *Bt1 | , | KP_0 | KP_0 | KP_. | KP_/ | Spc | K_Ent | // +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ // -// TODO: Autorepeat is hurting for some. This is probably an XKB bug? What can be done about it? -// One fix is to run xset afterwards: 'seq -s " r " 8 255 | xargs xset r' supposedly does the trick. -// Add the following to key <> {} defs (before symbols[Group1]=)? -// repeat=true, // TODO: A lv7 modifier to reach the second Extend layer directly. -// Test out this: -// key { [ ISO_Level5_Shift ], actions[Group1] = [ SetMods(mods=LevelThree+LevelFive) ] }; +// 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 -// 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 // 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. // -// NOTE: The Big Bag image has the PointerEnable key on LSGT, but ANSI users don't have it. Moved it to TLDE. +// 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? +// - 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. +// +=======+==============================+=======+ +// |=======| Main Extend Def. |=======| +// +=======+==============================+=======+ default partial xkb_symbols "basic" { // name[Group1]= "Extend layer"; @@ -73,79 +75,91 @@ xkb_symbols "lv5_fk" { // +=======+==============================+=======+ // |=======| F1-F12 |=======| // +=======+==============================+=======+ -// NOTE: Many use Ctrl+Alt+ for TTY server control keys. With Extend, use Ext+AltGr+ instead. - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F01 - XF86AudioPlay , XF86AudioPause , // Audio Play/Pause - XF86_Switch_VT_1 , NoSymbol ], // Virtual Terminal 1 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=1,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F02 - XF86AudioPrev , XF86AudioRewind , // Audio Previous/Rewind - XF86_Switch_VT_2 , NoSymbol ], // Virtual Terminal 2 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=2,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F03 - XF86AudioNext , XF86AudioForward , // Audio Next/Forward - XF86_Switch_VT_3 , NoSymbol ], // Virtual Terminal 3 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=3,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F04 - XF86AudioStop , XF86Eject , // Audio Stop/Eject - XF86_Switch_VT_4 , NoSymbol ], // Virtual Terminal 4 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=4,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F05 - XF86AudioMute , XF86Reload , // Audio Mute/Reload - XF86_Switch_VT_5 , NoSymbol ], // Virtual Terminal 5 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=5,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F06 - XF86AudioLowerVolume , XF86MonBrightnessDown , // Audio Vol- / Brightness- - XF86_Switch_VT_6 , NoSymbol ], // Virtual Terminal 6 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=6,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F07 - XF86AudioRaiseVolume , XF86MonBrightnessUp , // Audio Vol+ / Brightness+ - XF86_Switch_VT_7 , NoSymbol ], // Virtual Terminal 7 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=7,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F08 - XF86AudioMedia , XF86Sleep , // MediaPlayer / Sleep - XF86_Switch_VT_8 , NoSymbol ], // Virtual Terminal 8 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=8,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F09 - XF86HomePage , XF86WWW , // HomePage / Web - XF86_Switch_VT_9 , NoSymbol ], // Virtual Terminal 9 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=9,!same) , NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F10 - XF86Search , XF86Mail , // Search / Mail - XF86_Switch_VT_10 , NoSymbol ], // Virtual Terminal 10 - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=10,!same), NoAction() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 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() ] }; - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , // F12 - XF86Calculator , XF86Launch2 , // Calculator / App2 - XF86_Switch_VT_12 , XF86LogWindowTree ], // Virtual Terminal 12 / Debug - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), // (in inet, XF86Launch4 is ) - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - SwitchScreen(screen=12,!same), NoAction() ] }; +// 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 + XF86AudioPlay , XF86AudioPause , // Audio Play/Pause + XF86_Switch_VT_1 , NoSymbol ] , // 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 + XF86AudioPrev , XF86AudioRewind , // Audio Previous/Rewind + XF86_Switch_VT_2 , NoSymbol ] , // 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 + XF86AudioNext , XF86AudioForward , // Audio Next/Forward + XF86_Switch_VT_3 , NoSymbol ] , // 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 + XF86AudioStop , XF86Eject , // Audio Stop/Eject + XF86_Switch_VT_4 , NoSymbol ] , // 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 + XF86AudioMute , XF86Reload , // Audio Mute/Reload + XF86_Switch_VT_5 , NoSymbol ] , // 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 + XF86AudioLowerVolume , XF86MonBrightnessDown , // Audio Vol- / Brightness- + XF86_Switch_VT_6 , NoSymbol ] , // 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 + XF86AudioRaiseVolume , XF86MonBrightnessUp , // Audio Vol+ / Brightness+ + XF86_Switch_VT_7 , NoSymbol ] , // 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 + XF86AudioMedia , XF86Sleep , // MediaPlayer / Sleep + XF86_Switch_VT_8 , NoSymbol ] , // 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 + XF86HomePage , XF86WWW , // HomePage / Web + XF86_Switch_VT_9 , NoSymbol ] , // 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 + XF86Search , XF86Mail , // Search / Mail + XF86_Switch_VT_10 , NoSymbol ] , // 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 + 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 + XF86Calculator , XF86Launch2 , // Calculator / App2 + XF86_Switch_VT_12 , XF86LogWindowTree ] , // Virtual Terminal 12 / Debug + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // (in inet, XF86Launch4 is ) + Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) + SwitchScreen(screen=12,!same) , NoAction() ] , + repeat=yes }; }; partial alphanumeric_keys modifier_keys @@ -158,371 +172,371 @@ 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 , - Caps_Lock , 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) ] // Lock mod for - }; // ; Esc (one could also use aka ScrollLock for Caps, if desired) - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Pointer_EnableKeys , Pointer_EnableKeys , // Ptr_On - Pointer_EnableKeys , Pointer_EnableKeys ] // (Enable MouseKeys) - }; // ` ~ - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F1 , F1 , exclam , exclam ], // ! - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 1 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F2 , F2 , at , at ], // @ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 2 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F3 , F3 , numbersign , numbersign ], // # - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 3 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F4 , F4 , dollar , sterling ], // $ £ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 4 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F5 , F5 , percent , EuroSign ], // % € - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 5 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F6 , F6 , asciicircum , asciicircum ], // ^ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 6 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F7 , F7 , KP_7 , U21D6 ], // KP_7 ↖ ⇖ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 7 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F8 , F8 , KP_8 , U21D1 ], // KP_8 ↑ ⇑ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 8 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F9 , F9 , KP_9 , U21D7 ], // KP_9 ↗ ⇗ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 9 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F10 , F10 , KP_Multiply , KP_Multiply ], // KP_* - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // 0 - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F11 , F11 , KP_Subtract , KP_Subtract ], // KP_- - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // - _ - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - F12 , F12 , KP_Equal , KP_Equal ], // KP_= - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), - NoAction() , NoAction() ] - }; // = + - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Pause , Pause , // Pause/Break ( "Break" is special) - Pause , Pause ], // Pause/Break - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) , // - NoAction() , NoAction() ] - }; // BackSpace + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 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 (` ~) + Pointer_EnableKeys , Pointer_EnableKeys , // Ptr_On + Pointer_EnableKeys , Pointer_EnableKeys ] , // (Enable MouseKeys) + repeat=yes }; // ` ~ + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 , // - _ + 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 , // = + + 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 + Pause , Pause , // Pause/Break + Pause , Pause ] , // ( is special) + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) , + NoAction() , NoAction() ] , + repeat=yes }; // BackSpace // +=======+==============================+=======+ // |=======| Upper Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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) ] // - }; // Q - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86ScrollUp , XF86ScrollUp , // ScrollUp(††) - Up , KP_Up ], // ↑ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - PtrBtn(button=4) , PtrBtn(button=4) , // PtrWhBtUp/Ri - NoAction() , NoAction() ] // (ScrollRight/Left & button 6/7 may cause crashes now?!) - }; // W - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Back , XF86Back , // BrBck - End , KP_End ], // End - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), // (‡‡) - NoAction() , NoAction() ] - }; // QWE E, Cmk F - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Forward , XF86Forward , // BrFwd - Delete , KP_Delete ], // Del - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive), // (‡‡) - NoAction() , NoAction() ] - }; // QWE R, Cmk P - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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) ] // - }; // QWE T, Cmk G - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Page_Up , Page_Up , // PgUp - Page_Up , KP_Prior ], // PgUp - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - Redirect(key=) , NoAction() ] - }; // QWE Y, Cmk J - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Home , Home , // Home - KP_4 , U21D0 ], // KP_4 ← ⇐ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE U, Cmk L - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Up , Up , // ↑ - KP_5 , U21D4 ], // KP_5 ↔ ⇔ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE I, Cmk U - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - End , End , // End - KP_6 , U21D2 ], // KP_6 → ⇒ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE O, Cmk Y - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Delete , Delete , // Del - KP_Add , KP_Add ], // KP_+ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE P, Cmk ; : - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Escape , Escape , // Esc - parenleft , braceleft ], // ( - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive) , Redirect(key=,clearmods=LevelFive) , // - NoAction() , NoAction() ] - }; // [ { - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Insert , Insert , // Ins - parenright , braceright ], // ) - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // ] } - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Favorites , XF86MyComputer , // BrFav - colon , bar ], // : - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) - NoAction() , NoAction() ] - }; // \ | + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 , // [ { + 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 , // ] } + 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 , // \ | + XF86Favorites , XF86MyComputer , // BrFav + colon , bar ] , // : + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,clearmods=all), Redirect(key=,clearmods=all), // /(‡‡) + NoAction() , NoAction() ] , + repeat=yes }; // \ | // +=======+==============================+=======+ // |=======| Middle Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Alt_L , Alt_L , // Alt - Left , KP_Left ], // ← - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - SetMods(mods=Alt) , SetMods(mods=Alt) , // Alt mod for - NoAction() , NoAction() ] - }; // QWE A, Cmk A - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86ScrollDown , XF86ScrollDown , // ScrollDown(††) - Down , KP_Down ], // ↓ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - PtrBtn(button=5) , PtrBtn(button=5) , // PtrWhBtDn/Le - NoAction() , NoAction() ] // (ScrollRight/Left & button 6/7 may cause crashes now?!) - }; // QWE S, Cmk R - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Shift_L , Shift_L , // Shift - Right , KP_Right ], // → - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - SetMods(mods=Shift) , SetMods(mods=Shift) , // Shift mod for - NoAction() , NoAction() ] - }; // QWE D, Cmk S - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Control_L , Control_L , // Ctrl - BackSpace , BackSpace ], // Back - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - SetMods(mods=Control) , SetMods(mods=Shift+Control) , // Control mod for - NoAction() , NoAction() ] - }; // QWE F, Cmk T - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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() ] - }; // QWE G, Cmk D - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Page_Down , Page_Down , // PgDn - Page_Down , KP_Next ], // PgDn - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - Redirect(key=) , NoAction() ] - }; // H - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Left , Left , // ← - KP_1 , U21D9 ], // KP_1 ↙ ⇙ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE J, Cmk N - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Down , Down , // ↓ - KP_2 , U21D3 ], // KP_2 ↓ ⇓ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE K, Cmk E - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Right , Right , // → - KP_3 , U21D8 ], // KP_3 ↘ ⇘ - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE L, Cmk I - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - BackSpace , BackSpace , // Back - KP_Enter , KP_Enter ], // KP_Enter - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // QWE ;, Cmk O - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Menu , Menu , // Menu - apostrophe , quotedbl ], // ' " - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) , // / - NoAction() , NoAction() ] - }; // ' " -// key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , -// Print , Print , // PrtScr -// Print , Print ], // PrtScr -// actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 , // ; : + 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 , // ' " + 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 +// Print , Print , // PrtScr +// Print , Print ] , // PrtScr +// actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), // Redirect(key=,clearmods=LevelFive), Redirect(key=,clearmods=LevelFive) , // -// NoAction() , NoAction() ] -// }; // Return/Enter // This mapping breaks the Enter key for some? Not sure why. +// NoAction() , NoAction() ] , +// repeat=yes }; // Return // This mapping breaks the Enter key for some users? // +=======+==============================+=======+ // |=======| Lower Row |=======| // +=======+==============================+=======+ - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Delete , Delete , // User customizeable key (Del for now) - Delete , Delete ], // --"-- - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=) , Redirect(key=) , // - Redirect(key=) , Redirect(key=) ] // - }; // < > - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Undo , Redo , // Undo/Redo - Undo , Redo ], // Undo/Redo - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+Z - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)] // Ctrl+Z -// Redirect(key=) , Redirect(key=) ] // (‡‡) (not working?) - }; // Z - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Cut , XF86Cut , // Cut(§§) - XF86Cut , XF86Cut ], // Cut(§§) - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+X - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)] // Ctrl+X -// Redirect(key=) , Redirect(key=) ] // (‡‡) (not working since Ub14.04?) - }; // X - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Copy , XF86Copy , // Copy(§§) - XF86Copy , XF86Copy ], // Copy(§§) - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+C - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)] // Ctrl+C -// Redirect(key=) , Redirect(key=) ] // (‡‡) (not working since Ub14.04?) - }; // C - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - XF86Paste , XF86Paste , // Paste(§§) - XF86Paste , XF86Paste ], // Paste(§§) - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+V - Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive)] // Ctrl+V -// Redirect(key=) , Redirect(key=) ] // (‡‡) (not working since Ub14.04?) - }; // V - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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() ] - }; // B - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Pointer_Button2 , Pointer_Button2 , // MBt(††) - comma , semicolon ], // , ; - actions[Group1]=[NoAction(),NoAction(),NoAction(),NoAction(), - PtrBtn(button=2) , PtrBtn(button=2) , // PtrMBt - NoAction() , NoAction() ] - }; // QWE N, Cmk K - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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() ] - }; // M - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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() ] - }; // , < - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - 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() ] - }; // . > - key { symbols[Group1]=[ NoSymbol , NoSymbol , NoSymbol , NoSymbol , - Multi_key , Multi_key , // Compose - KP_Divide , KP_Divide ] // KP_/ - }; // / ? + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // < > + 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 + Undo , Redo , // Undo/Redo + Undo , Redo ] , // Undo/Redo + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+Z + 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 + XF86Cut , XF86Cut , // Cut(§§) + XF86Cut , XF86Cut ] , // Cut(§§) + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+X + 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 + XF86Copy , XF86Copy , // Copy(§§) + XF86Copy , XF86Copy ] , // Copy(§§) + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+C + 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 + XF86Paste , XF86Paste , // Paste(§§) + XF86Paste , XF86Paste ] , // Paste(§§) + actions[Group1]=[NoAction(), NoAction(), NoAction(), NoAction(), + Redirect(key=,mods=Control,clearmods=LevelFive), Redirect(key=,mods=Shift+Control,clearmods=LevelFive), // Ctrl+V + 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 + 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 + 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 + 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 , // , < + 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 , // . > + 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 , // / ? + 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 , - Return , Return , // Enter - space , nobreakspace ], // Space + key { symbols[Group1]=[NoSymbol , NoSymbol , NoSymbol , NoSymbol , // Space + Return , Return , // Enter + space , nobreakspace ] , // Space actions[Group1]=[NoAction(),SetMods(mods=Shift),NoAction(),SetMods(mods=Shift), - Redirect(key=) , Redirect(key=) , // - NoAction() , NoAction() ] - }; // + Redirect(key=) , Redirect(key=) , // + NoAction() , NoAction() ] , + repeat=yes }; // Space // key { [ NoSymbol,NoSymbol,NoSymbol,NoSymbol ] }; // CapsLock (Ext key def. is in the level5 file) @@ -547,101 +561,3 @@ xkb_symbols "lv5" { // NOTE: Lv5+S+T+N (Shift+Ctrl+Left) is too much at once; letting go of S but not T lets the arrows work. // - Using one physical modifier and the other Extend mapped (Lv5+S++N) functions as expected! // - It's the same for Lv5+A+T+ for tab switching; works only with physical either Ctrl or Alt. - -// NOTE: See the ALT_NAV keys in http://osdir.com/ml/xfree86.internationalization/2004-04/msg00010.html -// key { type="ALT_NAV", // Here, the D key is mapped to Home using Alt as a modifier: -// [ d, D, Home ], actions[Group1]=[NoAction(), NoAction(), Redirect(key=, clearmods=Alt)] }; - -// NOTE: Are modifier mappings necessary? Don't think so; they're set right in compat already -// modifier_map Shift { Shift_L , Shift_R }; -// modifier_map Lock { Caps_Lock , ISO_Lock }; -// modifier_map Control { Control_L , Control_R }; -// modifier_map Control { Control_L, , Control_R, }; - - -// NOTE: Maybe one could use the capslock(groupshift) functionality for Extend layers? -// key { [ Mode_switch , BackSpace , Caps_Lock , Caps_Lock , NoSymbol ] }; -// // The capslock(groupshift) switch defines the ground state as a Mode_switch key. -// But: The 4 groups are really meant for different locales/scripts/layouts that people need. So no. - - -// ========================================================================================================== -//// An attempt at using the Overlay functionality for modifier Extend mappings. -//// NOTE: Not working. One problem: The Caps key cannot both be a lvl5_switch and overlay_switch!? -// ========================================================================================================== -//partial alphanumeric_keys -//xkb_symbols "overlay_mods" { -//// name[Group1]= "Extend layer"; -// -// key { overlay1 = }; //Alt -// key { overlay1 = }; //Shift -// key { overlay1 = }; //Ctrl -//// key { [ Overlay1_Enable ], overlay1 = }; -// -//// NOTE: The standard OverlayEnable key a is a lock, not a switch key. A compat addition would be needed. -//// Or could it all be done by 'action' commands, like in symbols/level5 ('lock'!?) and group etc? -//// actions[Group1] = [ SetMods(mods=LevelFive), SetControls(controls=Overlay1) ] -//// Look into a variation of this to enable both with one key (in compat?): -//// interpret Pointer_EnableKeys { action= LockControls(controls=MouseKeys+Overlay1); }; -//// NOTE: LevelFive is a *modifier*, Overlay1 a *control*; need to use both SetMods and SetControls then!? -//}; - -// --> OEystein Bech "DreymaR" Gadmar, 2013-09: Additions to xkb/compat/level5 -//// DESC: Level5+Overlay1 combined switch -//// NOTE: Double-action crashed the server badly! Another tack is needed. -// interpret Overlay1_Level5_Shift+Any { -// //useModMapMods= level1; // This makes the code use group 1 for all! -// virtualModifier= LevelFive; -// action= SetMods(mods=LevelFive); -// action= SetControls(controls=Overlay1); -// }; -// -// interpret Overlay1_Level5_Shift { -// action= SetMods(mods=LevelFive); -// action= SetControls(controls=Overlay1); -// }; -// -//}; -// <-- DreymaR: Additions to xkb/compat/level5 - -// --> OEystein Bech "DreymaR" Gadmar, 2013-09: Additions to xkb/symbols/level5 -//// NOTE: Tested the addition of a Level5+Overlay1 switch; the double role didn't work! -//partial modifier_keys -//xkb_symbols "caps_overlay_switch" { -// key { -// type[Group1]="ONE_LEVEL", -// vmods = LevelFive, -// symbols[Group1] = [ Overlay1_Level5_Shift ], -// actions[Group1] = [ SetMods(mods=LevelFive); SetControls(controls=Overlay1) ] -// }; -// modifier_map Mod3 { Overlay1_Level5_Shift }; -//}; -// <-- DreymaR: Additions to xkb/symbols/level5 - -// An attempt at using the Overlay functionality for all Extend mappings. -// - Apparently, any key can only have ONE overlay! -// - The Overlay1/Overlay2 bits determine which one, but for some odd reason a key can't have both defined? -// - This means that the idea of several Extend layers can't be implemented easily in this way. -// - For testing purposes, I'm only mapping some keys for now. The rest can follow if this ever works...! -//partial // alphanumeric_keys -//xkb_symbols "overlay_full" { -//// name[Group1]= "Extend layer"; - -// key { overlay1 = }; //PgUp -// key { overlay1 = }; //Home -// key { overlay1 = }; // ↑ -// key { overlay1 = }; //End -// key { overlay1 = }; //Del -// key { overlay1 = }; //Esc -// key { overlay1 = }; //Ins -// key { overlay1 = }; //Alt -// key { overlay1 = }; //Shift -// key { overlay1 = }; //Ctrl -// key { overlay1 = }; //PgDn -// key { overlay1 = }; // ← -// key { overlay1 = }; // ↓ -// key { overlay1 = }; // → -// key { overlay1 = }; //Back -// key { overlay1 = }; //Entr -// key { [ Overlay1_Enable ], overlay1 = }; -//};