- Improved "Colemak[eD]" AltGr mappings (lv3-4), placing dead keys on AltGr+symbol keys
- 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
- 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
- Intuitive phonetic layouts for Cyrillic, Greek and Hebrew scripts
- Mirrored Colemak that allows one-handed typing with practically no re-learning (if I ever break an arm...)
- The 4 Tarmak transitional Colemak layouts for learning Colemak(-DH) in smaller steps if so desired
The main Big Bag pages are found at https://dreymar.colemak.org/. To see XKB info boxes there, select the Tux platform icon.
These xkeyboard-config files are updated to XKB-data v2.23.1-1ubuntu1, 2018. They work fine with other versions though, in nearly all cases.
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.
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.
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.
- 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 default layout back, you can use
setkb 4n
for ANSI keyboards (5n
for ISO). What you want depends on your locale though.
- To get the standard default layout back, you can use
- Due to complaints from new users that Extend on F# keys interferes with
Ctrl+Alt+F#
TTY shortcuts, FK Extend is now disabled by default.- You can enable FK Extend by activating the include "extend(lv5_fk)" 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 FK Extend by activating the include "extend(lv5_fk)" bit (delete the trailing slashes) in the
- 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
xkb-data
package is very consistent between distros. I've use Debian xkb-data, sometimes with some Ubuntu updates. - Any .deb package may be opened using
dpkg -x
orar -xv
(frombinutils
) on Linux, and any decent zip manager such as PeaZip on Windows.
See DREYMAR'S BigBag XKB topic on the Colemak Forums.
There are plenty of explanations and further links in there.
One good source of info on the xkb-data
package is the xkeyboard-config repository itself, and its docs
folder. The repo is found both on GitHub and GitLab.
Happy XKB hacking!
DreymaR, 2023-01
-
Non-Fn-key Extend is now the default. Add a separate option for FK Extend? Many new users struggled with this, or have weird FK setups.
-
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 bystartx
? 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.
- What about
-
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
. Mayberesetkb 4/5
?
- Make a restore to default layout shortcut instead? It's only an alias for
-
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!
-
To get Extend with the currently active layout, use
setxkbmap -v 9 -option "" -option "misc:extend,lv5:caps_switch_lock,compose:menu"
. -
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?
-
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: DreymaR#23 (comment)
-
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!
-
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?
- Example:
-
From Daniele at the Cmk Discord: Try out localectl?
- E.g.,
localectl --no-convert set-x11-keymap us pc105aw-sl cmk_ed_dh lv5:caps_switch_lock,misc:extend
should work to make changes persistent - Tips from i-c-u-p: https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl
- The syntax is:
localectl [--no-convert] set-x11-keymap layout [model [variant [options]]]
where you can use for instanceus,us
then,cmk_ed_us
- E.g.,
-
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 <dir>
orexport MYKXB=<dir>
as appropriate (not necessary for this, just practical here). setxkbmap -rules evdev -option '' <parameters> -print | xkbcomp -I -I$MYXKB -I/usr/share/X11/xkb - $DISPLAY
- See DreymaR#14
- More useful info in this comment: DreymaR#14 (comment)
- "-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.
- Copy the
-
An earlier comment on the local dir subject, by neeasade@github in issue 1:
- DreymaR#1 (comment)
- 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: DreymaR#1 (comment)
-
For an EsAlt variant as in EPKL:
key <AE04> { [ 4, dollar, dead_currency, EuroSign ] }; // 4
key <AD07> { [ l, L, U2039, guillemotleft ] }; // QWE U Cmk L
key <AD08> { [ u, U, ú, Ú ] }; // QWE I Cmk U - EsAlt
key <AC01> { [ a, A, á, Á ] }; // QWE A Cmk A - EsAlt
key <AC06> { [ h, H, leftarrow, rightarrow ] }; // QWE H Cmk H
// key <AC07> { [ n, N, ñ, Ñ ] }; // QWE J Cmk N - EsAlt ANSI
key <AC08> { [ e, E, é, É ] }; // QWE K Cmk E - EsAlt
key <AC09> { [ i, I, í, Í ] }; // QWE L Cmk I - EsAlt
key <AC10> { [ o, O, ó, Ó ] }; // QWE ; Cmk O - EsAlt
key <LSGT> { [ ñ, Ñ, oe, OE ] }; // <> - EsAlt ISO
// key <AB06> { [ k, K, endash, uparrow ] }; // QWE N Cmk K - ANSI
key <AD11> { [ bracketleft, braceleft, masculine, ordfeminine ] }; // [{
- To change the logon keyboard layout:
sudo dpkg-reconfigure keyboard-configuration
- 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 specifymod loc [var]
; omitvar
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.