]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/mitosis/keymaps/datagrok/readme.md
add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763)
[qmk_firmware.git] / keyboards / mitosis / keymaps / datagrok / readme.md
1 # a layout for the Mitosis
2
3 - Emphasis on momentary modifiers, all usable from either hand, arranged symmetrically, but left/right distinguishable by the OS.
4   Shift, Red ("Lower"), Blue ("Raise"), Super ("Windows"), Meta ("Alt"), Hyper (actually Henkan/Muhenkan).
5   I'm going for a [Space Cadet](https://en.wikipedia.org/wiki/Space-cadet_keyboard) aesthetic;
6   I want a keyboard that can (even just in theory) make use of all the bucky bits my operating system can support.
7
8 - Red and Blue are used to momentary-enable (like a shift key) one of three layers:
9
10     - Red: Symbols layer
11     - Blue: Numbers layer
12     - "Purple" (both Red and Blue): Functions layer
13
14 - The base layer is QWERTY.
15   A slight variant of [Workman][] may be toggled using `Red`+`Blue`+`Z`.
16
17 - Minimize hand travel, so as not to lose orientation with home row.
18
19 - `?` and `!` are moved to take the place of `<` and `>`. Rationale: unmodded
20   and shifted keys should be for prose, while symbols useful for programming
21   should be colocated on their own layer.
22
23 - Key positions chosen for mnemonics.
24   For example, you can distinguish between alphanumeric numerals and keypad numerals, but they occupy the same key positions.
25
26 ## Layout Images
27
28 ![mitosis:datagrok layout base layer](https://imgur.com/9LoLQUk.png)
29
30 Base layer. Notes:
31 - customized comma and period, which have exclamation point and question mark on their shift layer.
32 - tap right-shift for underscore
33
34 ![mitosis:datagrok layout red layer](https://imgur.com/B5bnPGM.png)
35
36 Red layer. Intended for common navigation and programming symbols. Notes:
37 - symmetric layout of paired braces/brackets/slashes for easier memorization
38 - arrows placed directly on home position
39
40 ![mitosis:datagrok layout blue layer](https://imgur.com/HGJ4G1U.png)
41
42 Blue layer. Intended for "number pad." Notes:
43 - Keycodes generated for numbers, enter key, and mathematical symbols are from the alphanumeric keys, not keypad. This way they are not influenced by the state of Num Lock. If you want to send the keypad equivalents, just use Red and Blue modifiers simultaneously.
44
45 ![mitosis:datagrok layout purple layer](https://imgur.com/lNsKDtA.png)
46
47 Purple (Red+Blue) layer. Intended for "true keypad" and various functions. Notes:
48 - Numbers on this layer send Keypad codes, so the result will be affected by the state of Num Lock.
49 - "Switch Layout" toggles the alphabet keys between QWERTY and Workman
50 - Page Up / Page Down / Home / End are placed on similar arrows
51 - To press Print Screen it is necessary to use the left-side Red and Blue modifiers.
52
53 Keyboard layout editor sources:
54 [base](http://www.keyboard-layout-editor.com/#/gists/bc2d06a3203d1bc3a14ed2245cf39643)
55 [red](http://www.keyboard-layout-editor.com/#/gists/dbbf65f726a5522824b75117a62a321e)
56 [blue](http://www.keyboard-layout-editor.com/#/gists/240e807f3d7e1d3ddabe1b69ee675048)
57 [purple](http://www.keyboard-layout-editor.com/#/gists/9559f0f8bb1ee47677c8f2b4d766829d)
58
59 [Imgur album](https://imgur.com/a/KSoVgPx)
60
61 ## Design notes
62
63 ### Workman layout
64
65 - I'm learning a new physical key placement, so I might as well go all-out and
66   use an optimal non-QWERTY layout.
67
68 - I like the way Workman feels and some of its advantages over Colemak.
69   Unfortunately, it was designed using a weighting system based on a standard
70   column-staggered keyboard so is probably not as optimal as one could achieve
71   on an ergonomic board like the Mitosis. Maybe run an optimizer routine after I
72   determine good values for key difficulty on the Mitosis.
73
74 ### 8Mhz Pro Micro
75
76 - I (used to) use a 3.3v Pro Micro clocked at 8Mhz rather than the 5v 16Mhz specified in the Mitosis design.
77   That can't communicate with the connected wireless module at the default speed of 1M baud.
78   The next fastest baudrate that works without errors is 250k baud.
79   So if you want to do the same:
80
81     - Set the Pro Micro clock rate correctly in `rules.mk`:
82       ```
83       F_CPU = 800000
84       ```
85     - Configure it to communicate at 250k baud in `config.h`:
86       ```
87       #undef SERIAL_UART_BAUD // avoids redefinition warning
88       #define SERIAL_UART_BAUD 250000
89       ```
90     - Configure the receiver's wireless module to communicate at 250k baud in `main.c`. See https://github.com/reversebias/mitosis/pull/10
91       ```
92       -          UART_BAUDRATE_BAUDRATE_Baud1M
93       +          UART_BAUDRATE_BAUDRATE_Baud250000
94       ```
95
96 ### Layout mnemonics
97
98 - Paired programming symbols (braces, brackets, parentheses) are arranged symmetrically in the Red layer.
99
100 - Arrow keys are in the home position on the Red layer.
101
102   - Blue+Arrows = PgUp/PgDn/Home/End, which is intuitive for me.
103
104 - The number pad: I placed the ten-key number pad on the Blue layer.
105   However, this would do the wrong thing when Num Lock was not enabled.
106   Rather than attempt to manage the state of Num Lock, I arranged the normal number keys in a ten-key layout on the Blue layer instead.
107   If you explicitly want the keypad keys, they're in the same position on the Red+Blue layer.
108
109 - Number-pad add, subtract, multiply, and divide are located on the same keys as alphanumeric plus, dash, asterisk, and slash, respectively.
110
111 - The Function-keys are arranged to mimic the order of the ten-key pad.
112
113 - Enter is now in a more qwerty-familiar location, and may be activated with one hand.
114   Numpad Enter is in the same position.
115
116 - Rather than place Backspace opposite Space, I intentionally place it on a layer where it takes some effort to activate.
117   Backspace is one of the keys I most dislike on a QWERTY keyboard because it moves me away from homerow and I need to use it so often.
118   Rather than make it easier to strike, I want to discourage myself from using it by learning to type more accurately.
119
120 - Why do I dislike [snake\_case](https://en.wikipedia.org/wiki/Snake_case) (`__variable_names_that_use_underscores_`)?
121   Maybe because it's hard to type all those underscores requiring the shift key?
122   Hypothesis: I'll be less annoyed by snake case by placing `_` at an unmodded position, right near the `space` key.
123
124
125 ## Changelog
126
127 ### Current
128
129 - Experiment: no-modifier underscore on right shift key.
130 - New combined numbers + keypad arrangement.
131   No more worrying about Num Lock key.
132 - Move F-keys to left board to make room.
133   Calling them "the Numbers layer" and "the Functions layer" is now less accurate but the arrangement feels better.
134 - Audio working!
135 - Move Tab and Space to upper thumb row.
136   I discarded the high-profile acrylic case from my Mitosis.
137   With a low-profile case, it's easier to hit the upper row of thumb keys.
138 - Discard all my `#defines` for "Meta", "Super", and "Hyper".
139   I can call them that without making the code confusing to others.
140 - Move Backspace to Red+A. I shouldn't be using it much anyway.
141   This means Tab and Shift might as well be separate keys again.
142 - Distribute paired symbols symmetrically across boards like `\<{([ ])}>/`.
143   Opening-symbols on the right hand was a failed experiment. 
144 - Change default back to target a 16Mhz/5v Pro Micro.
145   I damaged the 8Mhz Pro Micro I was using so now I'm back to using a 16mhz Pro Micro again.
146
147 ### 0.6.1
148
149 - Place Tab on Shift without a modifier. We use it frequently for autocomplete.
150 - Make QWERTY the default layout. So more people can try it out. My customized Workman is easily toggled-on.
151 - Don't use redundant `#define` for `KC_TRNS`
152 - Place Num Lock somewhere. Otherwise (if it gets turned off) we can't type any numbers!
153 - Add some media keys
154
155 ### 0.5.155
156
157 - Enable use with my 3.3v Pro Micro
158 - Add a toggle-able QWERTY layer
159 - Golf down the LED-setting code
160 - Place `!` and `?` on `Shift`+`,` and `Shift`+`.`.
161 - Distribute paired symbols symmetrically across boards like `\)}]> <[{(/`
162
163 ### 0.5.129
164
165 - A modified Workman variant for Mitosis
166 - Arrows in home position, modifier + Arrow = PgUp/PgDn/Home/End
167 - Load all paired symbols onto angle-bracket keys.
168
169 ### Abandoned ideas
170
171 - "Since QWERTY and Workman keep angle brackets together, place other
172   enclosing symbols on the same keys. This informs the numbers placement,
173   which informs the function-key placement."
174
175     - I tried this and it was bad. I don't like having to pick the right
176       modifier to get the right flavor of bracket. Instead, now, one modifier
177       activates a symbols layer where all brackets are easily accessible.
178
179 - Space/Enter to the left of layer select for Enter
180
181     - Doesn't work well; I always trigger space first when mashing the keys
182       simultaneously. ~~This might not continue to be true if I change the angle
183       at which I strike the keys e.g. with a neoprene base or a wrist support.~~
184       Even with a wrist rest or low-profile, this is hard to do with one hand.
185       Need to adjust the firmware to understand chorded thumb keys.
186
187 - I used to have Blue on ring finger, but that was too hard to use in
188   conjunction with shift.
189
190 ## To do
191
192 - **Shared Layouts.**
193   Figure out how to make use of QMK's common `layouts/`
194 - **Chorded Combos.**
195   Since the thumb keys are arranged such that it's easy to smash pairs of keys with just one thumb, figure out how to enable chording.
196   For example, a single-finger Shift+Space or Red+Space that doesn't do the wrong thing if Space happens to trigger first.
197 - Improve **LED indications** (may require modding bluetooth firmware):
198     - Num Lock status
199     - Is any board nonresponsive (which one?)
200     - Does either board have a low battery?
201 - **Num Lock management.**
202   Num lock currently occupies prime real estate, but I never use it except to fix it when it's wrong.
203   Do any of my applications use it?
204   Should I have the firmware ensure it is set how I want it?
205   Maybe cause it to be momentary active with Blue?
206   See [@drashna's comment](https://github.com/qmk/qmk_firmware/pull/2366#issuecomment-404951953)
207 - Store default base layer in eeprom?
208 - See if the henkan/muhenkan placement is at all useful for Japanese speakers,
209   or abuse different keysyms for Left/Right Hyper. (Original space cadet used
210   scancodes 145/175. 145 is LANG2, 175 is "reserved" in USB HID spec.)
211 - Implement "layer lock" key
212 - Improve tri-layer behavior
213 - Find a better location for PrintScr/SysRq, Scroll Lock, Pause/Break, Caps Lock.
214 - ~~Figure out where to place non-numpad numbers so we don't need num lock turned
215   on to type them?~~
216 - ~~Add Insert, PrintScr, Pause/Break~~
217 - ~~Make QWERTY base layer for people who customize layout in software?~~
218   I default to QWERTY now.
219 - ~~Mod a buzzer onto my receiver and enable tones~~ Easy and works!
220
221 [Workman]: https://viralintrospection.wordpress.com/2010/09/06/a-different-philosophy-in-designing-keyboard-layouts/