{"id":13451561,"url":"https://github.com/DreymaR/BigBagKbdTrixXKB","last_synced_at":"2025-03-23T18:32:55.881Z","repository":{"id":16058420,"uuid":"18802588","full_name":"DreymaR/BigBagKbdTrixXKB","owner":"DreymaR","description":"\"DreymaR's Big Bag of Keyboard Tricks\" for *nix with XKB","archived":false,"fork":false,"pushed_at":"2024-02-16T15:58:23.000Z","size":3517,"stargazers_count":185,"open_issues_count":19,"forks_count":39,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-05-02T01:43:21.095Z","etag":null,"topics":["colemak","colemak-forums","colemak-layout","dreymar-big-bag","ergo-modifications","keyboard","keyboard-layout","xkb","xkb-keyboard-layout","xkb-layout"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DreymaR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"DreymaR"}},"created_at":"2014-04-15T14:14:43.000Z","updated_at":"2024-05-27T12:24:17.155Z","dependencies_parsed_at":"2024-01-14T07:13:56.543Z","dependency_job_id":"bc318eff-85de-468b-9616-a5d4303fc6ed","html_url":"https://github.com/DreymaR/BigBagKbdTrixXKB","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreymaR%2FBigBagKbdTrixXKB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreymaR%2FBigBagKbdTrixXKB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreymaR%2FBigBagKbdTrixXKB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreymaR%2FBigBagKbdTrixXKB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DreymaR","download_url":"https://codeload.github.com/DreymaR/BigBagKbdTrixXKB/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245149885,"owners_count":20568990,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["colemak","colemak-forums","colemak-layout","dreymar-big-bag","ergo-modifications","keyboard","keyboard-layout","xkb","xkb-keyboard-layout","xkb-layout"],"created_at":"2024-07-31T07:00:55.909Z","updated_at":"2025-03-23T18:32:50.869Z","avatar_url":"https://github.com/DreymaR.png","language":"Shell","funding_links":["https://github.com/sponsors/DreymaR"],"categories":["Shell","Keyboard"],"sub_categories":[],"readme":"DreymaR's Big Bag of Keyboard Tricks\n====================================\n\u003cbr\u003e\n\n### For Linux using XKB\n\n* Improved \"Colemak[eD]\" AltGr mappings (lv3-4), placing dead keys on AltGr+symbol keys\n* Powerful Extend layers using Caps Lock as a lv5 modifier for navigation/editing from the home position and more!\n* Comfy Angle/Wide ergo modifications to improve wrist angles(!), hand spacing and right pinky movement+load\n* The Curl-DH ergo mod to allow a more natural finger curvature and avoid lateral stretches\n\t- The Colemak-DH layout on normal row-staggered keyboards, is a combination of the Curl-DH and Angle mods\n* The Sym ergo mod to improve access to often-used symbol keys\n* For several locales, a 'Unified Symbols' layout with only a few necessary changes from the standard Colemak[eD]\n* Also, a layout to 'Keep Local Symbols' like their default (QWERTY-type) counterparts for that locale\n* Intuitive phonetic layouts for Cyrillic, Greek and Hebrew scripts\n* Mirrored Colemak that allows one-handed typing with practically no re-learning (if I ever break an arm...)\n* The 4 Tarmak transitional Colemak layouts for learning Colemak(-DH) in smaller steps if so desired\n\u003cbr\u003e\n\nThe main Big Bag pages are found at [https://dreymar.colemak.org/][BigBag]. To see XKB info boxes there, select the Tux platform icon.\n\u003cbr\u003e\n\nSome info\n---------\n\n* First, run the install script. This copies my modified files into the system X11 directory. Original files are backed up by default.\n* You can now probably use the system's layout settings to choose a setup. \n* For info on what your choices are, consult the [Big Bag][BigBag] pages.\n* However, some layout settings won't let you set the model component that I use for some ergo mods.\n* The setkb script activates a Big Bag layout setup (model, layout and option components) using a `setxkbmap` command.\n* 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.\n* Run the install and setkb scripts with -h (or look inside them) for more help and info about their workings!\n* Learn about `setkb.sh \"model locale variant\"` shortstring syntax in the [BigBag][BigBag4X].\n\t- The default is `\"5caw us us\"`: PC105(ISO) board with Curl(DH)AngleWide mods, US locale, Cmk-eD UniversalSymbols variant.\n\t- To switch to, say, an ANSI board without ergo mods, that's `4n` instead of `5caw`. Look in the scripts.\n* NOTE: It may be necessary to select \"Use system defaults\" if you have changed anything in the OS GUI layout settings.\n\u003cbr\u003e\n\nTips\n----\n* 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`.\n\t- 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.\n\t- 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.\n* 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.\n\t- You can enable FKey Extend by activating the [include \"extend(lv5_fk)\"][BB-ExtFK] bit (delete the trailing slashes) in the `symbols/extend` file.\n\t- 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.\n\t- 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.\n* To just get Extend with the currently active layout, use `setxkbmap -v 9 -option \"\" -option \"misc:extend,lv5:caps_switch_lock,compose:menu\"`.\n\t- The first `-option \"\"` clears any existing option settings, while the one with non-empty arguments add to existing options.\n* 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\".\n\t- The Unified 'us' variants are usually much better. The 'ks' ones will miss out on some symbols and many dead keys.\n* The `xkb-data` package is very consistent between distros. I've use [Debian xkb-data][XKB-DebS], sometimes with some Ubuntu updates.\n* Any .deb package may be opened using `dpkg -x` or `ar -xv` (from `binutils`) on Linux\n\t- On Windows, you can use any decent zip manager such as PeaZip.\n* To change your logon keyboard layout, use the `dpkg-reconfigure` command:\n\t- `sudo dpkg-reconfigure keyboard-configuration`\n\t- NOTE: Be sure you know how to type your password afterwards!\n\u003cbr\u003e\n\nlocalectl\n---------\n* You can use the `localectl set-x11-keymap` command to make changes persistent; you may have to run it with `sudo` privileges\n* Syntax: `[sudo] localectl [--no-convert] set-x11-keymap layout [model [variant [options]]]`\n* Example: `sudo localectl set-x11-keymap us pc105awide cmk_ed_us \"lv5:caps_switch_lock,misc:extend\"`\n* For `layout` and `[variant]`, you can use for instance `\"us,us\"` and `\"cmk_ed_us,\"` to switch between Cmk-eD and the default us layout\n* Unfortunately, you can't switch between multiple models nor options this way – so your QWERTY may have the Angle (and Curl!) mods...\n* Add `--no-convert` to not convert between closest matching console and X11 keyboard mappings; this precludes applying as system console mapping\n* Note that XKB options may be overridden by the settings tools used with desktop environments like GNOME and KDE\n* More info on setting keyboard layouts is found in the Arch Manual and Wiki, at: \n\t- https://man.archlinux.org/man/localectl.1\n\t- https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl\n\t- https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration#Persistent_configuration\n* Thanks to: Daniele, i-c-u-p, Flomza and others at the Cmk Discord for helping find this out\n\u003cbr\u003e\n\nWayland \u0026 Friends\n-----------------\nWayland 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.\n\nIt depends on which Wayland Compositor you're using. Sorry, but I don't know them all. See its docs for more info?\n\nFor the popular Sway compositor, add a piece like this example to your `~/.config/sway/config` file:\n```\ninput * {\n  xkb_model     pc105awide\n  xkb_layout    us\n  xkb_variant   cmk_ed_us\n  xkb_options   lv5:caps_switch_lock,misc:extend,compose:menu\n}\n```\n\nAnd here's one for Hyprland's `~/.config/hypr/hyprland` file:\n```\ninput {\n    kb_rules=evdev\n    kb_model=pc105awide\n    kb_layout=us\n    kb_variant=cmk_ed_dh\n    kb_options=misc:extend,lv5:caps_switch_lock,compose:menu\n    repeat_rate=40\n    repeat_delay=200\n}\n``` \nThe repeat settings are of course optional. Some like a higher repeat rate and a lower delay, and this is how to get that.\n\nHere's a KDE Settings `~/.config/kxkbrc` file. It can be set via the Settings GUI, or edited directly:\n```\n[$Version]\nupdate_info=kxkb_variants.upd:split-variants,kxkb.upd:remove-empty-lists,kxkb.upd:add-back-resetoptions\n\n[Layout]\nDisplayNames=,\nLayoutList=us,us\nLayoutLoopCount=-1\nModel=pc104awide\nOptions=grp:alt_shift_toggle,grp:win_space_toggle,caps:backspace,lv3:ralt_switch_multikey,compose:menu\nResetOldOptions=true\nShowFlag=false\nShowLabel=true\nShowLayoutIndicator=true\nShowSingle=true\nUse=true\nVariantList=cmk_ed_dh,\n``` \nThis one uses Caps as a Backspace. See the example above to upgrade it to an Extend key.\n\nIn NixOS without Wayland/Sway, [services.xserver](https://nixos.wiki/wiki/Keyboard_Layout_Customization) should work:\n```\nservices.xserver = {\n  layout = \"us\";\n  xkbVariant = \"cmk_ed_dh\";\n  xkbModel   = \"pc105awide\";\n  xkbOptions = \"misc:extend,lv5:caps_switch_lock,compose:menu\";\n};\n```\nTo get the xserver layout in your console as well, use `console.useXkbConfig` in your `configuration.nix` file.\n\nI guess the solution will be quite similar for other compositors, but I don't know more at the moment.\n\u003cbr\u003e\n\nLinks\n-----\nSee [DREYMAR'S BigBag XKB topic on the Colemak Forums][BigBag4X].\nThere are plenty of explanations and further links in there.\n\u003cbr\u003e\n\nTODO/DONE for this repo are found in the [xmod folder README][xmREADME].\n\u003cbr\u003e\n\nOne 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 at [GitLab][XKBgitLb].\n\u003cbr\u003e\n\nOr, have a look in the X.Org Wiki.\nhttps://www.x.org/wiki/XKB/\n\u003cbr\u003e\n\nArch has good documentation on all things XKB.\nhttps://wiki.archlinux.org/title/X_keyboard_extension\nhttps://wiki.archlinux.org/title/Xorg/Keyboard_configuration\n\u003cbr\u003e\n\nIvan 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.\nhttp://pascal.tsu.ru/en/xkb\nhttp://pascal.tsu.ru/en/xkb/gram-symbols.html\n\u003cbr\u003e\n\nHappy XKB hacking!\u003cbr\u003e\u0026nbsp;\u0026nbsp;\n_DreymaR_\n\u003cbr\u003e\u003cbr\u003e\n\n\n\n[XKB-conf]: https://www.freedesktop.org/wiki/Software/XKeyboardConfig/ (XKeyboard Config page)\n[XKBgitLb]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config (XKB-config on GitLab)\n[XKB-pkgs]: https://pkgs.org/download/xkb-data (pkgs.org xkb-data page)\n[XKB-DebS]: https://packages.debian.org/sid/xkb-data (Debian Sid xkb-data download)\n[BigBag]:   https://dreymar.colemak.org/ (DreymaR's Big Bag of Keyboard Tricks)\n[BigBag4X]: http://forum.colemak.com/viewtopic.php?id=1438 (DreymaR's old BigBag for Linux/XKB on the Colemak Forum)\n[BBREADME]: README.md                               (main BigBag4XKB README)\n[xmREADME]: /xkb-data_xmod/README.md                (xmod BigBag4XKB README)\n\n[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)\n[BB-ExtFK]: /xkb-data_xmod/xkb/symbols/extend#L66   (BigBag4XKB – FKkey include in symbol/extend file)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDreymaR%2FBigBagKbdTrixXKB","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDreymaR%2FBigBagKbdTrixXKB","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDreymaR%2FBigBagKbdTrixXKB/lists"}