# Keymap Considerations I've mostly standardized on 12u column-staggered keyboards, which has helped me develop muscle memory that's reasonably consistent for most boards I may switch between. In a colstag setup, this board size is sufficient to keep to keep alphas as well as the most frequently typed symobls (, . / ? ; : - ' ") on the base layer without having to resort to homerow mods. (Homerow mods is extremely good, but finicky to set up for fast and inconsistent typists.) I suck at remembering layers, so I keep almost all high-use keys on just two layers, with a third layer for infrequently-used keys and firmware functions. I do not bother mapping most function keys, as I rarely use them in practice. My num/symbol layer started out pretty close to the stock Keyboardio Atreus keymap, although I've not kept track of what is the same and what is different. Numbers are in a numpad arrangement on the right hand, since I do a lot of numerical entry for work. Symbols are mapped directly to avoid awkward chording. Left hand symbols are in the obvious places except for # which is lcoated on the Z-row to accommodate WASD arrows. Right hand symbols are somewhat more random due to several of them being part of the numpad as operators. Some positions are redundant and not well standardized across all my boards, such as the N position on the numpad layer. I haven't rushed to fill in those spots since I may need to put something else there later. ## Bottom Rows Bottom row layouts vary substantially, since there is significant variation in the number of keys, their position, and what finger they are intended to be used with. Where possible, I prefer to have control and and alt keys on both sides of the bottom row, but can make do with alt on the left and control on the right for Reviung style layouts. RAISE (Numpad layer) does not necessarily need its own key as I have gotten very accustomed to putting it as a mod tap on Tab/". I do prefer to have a dedicated LOWER key mainly because otherwise I will forget where it is. Space is consistently on right thumb and backspace consistently on left. If there is a surplus of keys, I will put enter and delete on the thumb cluster as well, but I usually keep delete on a function layer in the backspace position, and enter as a dual use key on right shift and/or right control. (Lower right pinky keys.) ## Mod-taps Mod-tap configuration is tricky and very individual. While I did use homerow mods on the Atreus, and found it to be a good (indeed, absolutely required) strategy on that board, I prefer to avoid it since even when reasonably well-tuned, it still incurred a performance hit. On 12u boards, I can get by with just a few dual-use keys, usually: - RAISE (numpad/symbol layer) on Tab and " - Enter on right shift and/or right control - Left control on escape and right alt on -, which is in my upper right key position The last bit is not strictly necessary, but helpful especially on Reviung style boards were there are insufficient bottom row key positions to accommodate control and alt on both sides. ### QMK Tap-Hold config QMK's tap-hold settings confuse me, but these seem to work acceptably: These in config.h: ```c /* Tap-hold configuration settings */ #define PERMISSIVE_HOLD #define IGNORE_MOD_TAP_INTERRUPT #define TAPPING_TERM 135 #define TAPPING_FORCE_HOLD #define RETRO_TAPPING #define TAPPING_TERM_PER_KEY ``` with a longer tapping term set in the keymap for - and ", which can be tricky because they are typed more like alphas, I guess? ```c uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case RALT_T(KC_MINS): return TAPPING_TERM + 65; case LT(_RAISE, KC_QUOT): return TAPPING_TERM + 65; default: return TAPPING_TERM; } } ``` I also have `DYNAMIC_TAPPING_TERM_ENABLE` on in rules.mk, which is handy when troubleshooting configuration, although unnecessary once good values have been found. ### ZMK Mod-Tap config For ZMK, I don't have to do much to get good results. For the stock `&mt` (mod-tap) and `&lt` (layer tap) behaviors, I enable retro-tapping and the "tap-preferred" flavor. For the key(s) which are primarily used as shift or control, but which are also bound to enter, I specify a separate `&mthp` behavior that is hold-preferred. This seems to work well for me most of the time without additional tweaking. _Update: I get somewhat more consistent results by going to 125 on `tapping-term-ms` for `&mthp`._ ```c &mt { retro-tap; flavor = "tap-preferred"; }; &lt { retro-tap; flavor = "tap-preferred"; }; / { behaviors { mthp: hold_preferred_tap { compatible = "zmk,behavior-hold-tap"; label = "HOLD_PREFERRED_TAP"; #binding-cells = <2>; tapping-term-ms = <125>; flavor = "hold-preferred"; bindings = <&kp>, <&kp>; }; }; ``` ### Kaleidoscope Qukeys config Haven't used the Atreus much in ages, but these are the settings I used for Qukeys: ```c void setup() { Kaleidoscope.setup(); SpaceCadet.disable(); EEPROMKeymap.setup(10); Qukeys.setHoldTimeout(250); Qukeys.setOverlapThreshold(50); Qukeys.setMinimumHoldTime(60); } ``` # QMK ## Ristretto ![[EQ2A2219_DxO_Low.jpg]] ![[EQ2A2130_DxO_Low.jpg]] ![[Pasted image 20220502135712.png]] ## Panda666 Pastel Goth / Reviung41 ![[EQ2A2171_DxO_Low.jpg]] ![[Pasted image 20220502135754.png]] ## Pinky3 ![[Pasted image 20220502135903.png]] ## Waka60 ![[EQ2A2183_DxO_Low.jpg]] ![[Pasted image 20220503173202.png]] ## Montsinger Rebound-S ![[EQ2A2253_DxO_Low.jpg]] Currently bricked due to ESD(?) issues, Essentially same layout as Ristretto. ## TBK Mini - [Github](https://github.com/kukkurovaca/qmk_firmware/blob/dev_branch/keyboards/bastardkb/tbkmini/keymaps/kukkurovaca/keymap.c) ![[EQ2A2281_DxO_Low.jpg]] ![[Pasted image 20221014101743.png]] # ZMK ## Firmware behaviors on ZMK These are all mapped on the third layer (LOWER): - Bluetooth Profiles - W, E, and R select profiles 0, 1, and 2 respectively - X clears the active profile to re-pair it - Reset (Mapped on both sides to accommodate splits) - Reset is on Esc and - - Bootload is on Tab and " - Output Selection (when a USB cable is connected) - , sets output to bluetooth for use when charging while using the keyboard - . sets output to USB - Power Management - For small non-split boards, external power toggle on Z - For Kyria - Left side: External power off on backspace, external power on on delete - Right side: External power off on enter, external power on on space ## Reviung41 Low-Profile - [Github](https://github.com/kukkurovaca/zmk-config/blob/master/config/rev1350.keymap) - Previously this keyboard didn't actually have a ZMK shield, just a custom overlay and the regular reviung41 shield. However, as of October(?) 2022 the maintainer set up an [actual shield](https://github.com/cyril279/zmk-config-rev41_1350/tree/main/config/boards/shields/rev1350). The ZMK name of the keyboard is now "rev1350." As with most Reviung41 variants, it would really benefit from one more key on the thumb row (IMO), and also the middle thumb key kind of sucks. But it's still quite usable. It's interesting to have a switch plate in a choc keyboard; it's certainly beneficial given that this is a hotswap board. I kind of wish there was also a bottom plate, just for the sake of a cleaner look. ![[EQ2A2277_DxO_Low.jpg]] ![[Pasted image 20221013183516.png]] z## Kyria - [Github](https://github.com/kukkurovaca/zmk-config/blob/master/config/kyria.keymap) - [[Kyria Build Notes]] - Bottom row is choc switches and EC12 encoders in the outer positions. I haven't gotten around to enabling the peripheral side encoder yet (that feature is not yet supported in official ZMK) ![[EQ2A2243_DxO_Low.jpg]] ![[Pasted image 20221013183450.png]] ## Faux Fox - [Github](https://github.com/kukkurovaca/zmk-config/blob/master/config/boards/shields/ffkb/ffkb.keymap) - [[Faux Fox Build Notes]] - Three-encoder layout with roller encoders in the bottom row ![[Pasted image 20220502135517.png]] ## Hillside - [Github](https://github.com/kukkurovaca/zmk-config/blob/master/config/hillside48.keymap) This is a fun [open-source ](https://github.com/mmccoyd/hillside) keyboard. I got my copy through a baby group buy by atinyzubat on Cute Keyboard Club. The keymap is almost identical with the Kyria, the difference is just one fewer key on each thumb cluster. ZMK main currently does not support peripheral encoder. Tried using [infused-kim's](https://github.com/infused-kim/zmk/tree/my-changes/split-encoder) PR, and it sort of worked? But then I encountered some wild battery issues on the peripheral side. Took a while to diagnose them as a busted charging circuit probably due to a damaged pin on the nice!nano, but I switched back to main ZMK in the meantime. After replacing the right side nice!nano, I get about a week and a half to two weeks of battery life. Couple of small experimental changes on the hillside layout -- added F2 on RAISE in the N position for file renaming in windows explorer. I liked this a lot so I'm going to add it to all my keymaps. Also have been trying to set up combos on the upper thumb and the key below it on each side, to allow mashing them both together to get the upper value only. I had a devil of a time getting it to work due to a classic off by one error. (ZMK combos identify the key position counting from the first switch as 0.) Oop. Also, I've been getting a lot of repeated keypresses on "M", for which I've bumped up debounce to 8 ms. ```c combos { compatible = "zmk,combos"; combo_lower { timeout-ms = <50>; key-positions = <30 41>; bindings = <&mo LOWER>; }; combo_lgui { timeout-ms = <50>; key-positions = <31 44>; bindings = <&kp LGUI>; }; }; ``` ![[EQ2A2306_DxO_Low.jpg]] ![[Pasted image 20221013183414.png]] # Kaleidoscope ## Keyboardio Atreus ![[Pasted image 20220503172844.png]] # Row-Staggered Boards - Prime E - Candybar # Numpads / Macropads - MurphPad - Ungodly/1UP Launch Pad - Razer Tartarus Pro - Pockettype (Unbuilt)