├── .gitignore ├── README ├── all-layer-diagrams.pdf ├── base-layer-diagram.png ├── cursor-layer-diagram.png ├── emoji-layer-diagram.png ├── gaming-layer-diagram.png ├── lower-layer-diagram.png ├── magic-layer-diagram.png ├── monkeytype-diagram.png ├── mouse-layer-diagram.png ├── number-layer-diagram.png ├── symbol-layer-diagram.png ├── system-layer-diagram.png ├── typing-layer-diagram.png ├── world-layer-diagram.png ├── factory-layer-diagram.png ├── function-layer-diagram.png ├── template-layer-diagram.png ├── engrammer-layer-diagram.png ├── emoji-layer-diagram.json ├── gaming-layer-diagram.json ├── factory-layer-diagram.json ├── typing-layer-diagram.json ├── cursor-layer-diagram.json ├── magic-layer-diagram.json ├── system-layer-diagram.json ├── lower-layer-diagram.json ├── symbol-layer-diagram.json ├── number-layer-diagram.json ├── mouse-layer-diagram.json ├── template-layer-diagram.json ├── world-layer-diagram.json ├── engrammer-layer-diagram.json ├── function-layer-diagram.json ├── base-layer-diagram.json └── symbol-layer-video.md ├── Dockerfile ├── rake ├── define.dot.erb ├── Rakefile ├── emoji.yaml ├── world.yaml ├── define.json ├── define.dot └── device.dtsi /.gitignore: -------------------------------------------------------------------------------- 1 | *.tmp 2 | *.min 3 | -------------------------------------------------------------------------------- /README/all-layer-diagrams.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/all-layer-diagrams.pdf -------------------------------------------------------------------------------- /README/base-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/base-layer-diagram.png -------------------------------------------------------------------------------- /README/cursor-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/cursor-layer-diagram.png -------------------------------------------------------------------------------- /README/emoji-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/emoji-layer-diagram.png -------------------------------------------------------------------------------- /README/gaming-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/gaming-layer-diagram.png -------------------------------------------------------------------------------- /README/lower-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/lower-layer-diagram.png -------------------------------------------------------------------------------- /README/magic-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/magic-layer-diagram.png -------------------------------------------------------------------------------- /README/monkeytype-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/monkeytype-diagram.png -------------------------------------------------------------------------------- /README/mouse-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/mouse-layer-diagram.png -------------------------------------------------------------------------------- /README/number-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/number-layer-diagram.png -------------------------------------------------------------------------------- /README/symbol-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/symbol-layer-diagram.png -------------------------------------------------------------------------------- /README/system-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/system-layer-diagram.png -------------------------------------------------------------------------------- /README/typing-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/typing-layer-diagram.png -------------------------------------------------------------------------------- /README/world-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/world-layer-diagram.png -------------------------------------------------------------------------------- /README/factory-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/factory-layer-diagram.png -------------------------------------------------------------------------------- /README/function-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/function-layer-diagram.png -------------------------------------------------------------------------------- /README/template-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/template-layer-diagram.png -------------------------------------------------------------------------------- /README/engrammer-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buzz/glove80-keymaps/main/README/engrammer-layer-diagram.png -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bookworm-slim 2 | RUN apt-get update 3 | 4 | # for Unicode in YAML files 5 | ENV LANG en_US.UTF-8 6 | RUN apt-get install -y locales \ 7 | && sed -i "s/^# $LANG/$LANG/" /etc/locale.gen \ 8 | && locale-gen 9 | 10 | RUN apt-get install -y ruby rake graphviz graphicsmagick poppler-utils 11 | 12 | WORKDIR /opt 13 | -------------------------------------------------------------------------------- /rake: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eu 2 | # 3 | # Usage: ./rake [ARGUMENT_FOR_RAKE...] 4 | # 5 | # Runs rake(1) inside a Docker image. 6 | # 7 | # Written in 2022 by Suraj N. Kurapati 8 | 9 | IMAGE=${PWD##*/}:$(git hash-object Dockerfile) 10 | 11 | # build the image if necessary 12 | docker images -q "$IMAGE" | grep -q . || 13 | tar -cf- Dockerfile | 14 | docker build -t "$IMAGE" - 15 | 16 | # run rake(1) inside the image 17 | docker run --rm \ 18 | -u $(id -u):$(id -g) \ 19 | -v "$PWD:/opt" \ 20 | -it "$IMAGE" \ 21 | rake "$@" 22 | -------------------------------------------------------------------------------- /define.dot.erb: -------------------------------------------------------------------------------- 1 | digraph settings { 2 | graph [rankdir=RL] 3 | 4 | subgraph defaults { 5 | <% 6 | require 'set' 7 | numbers = Set.new 8 | tapping_resolution_formulas = Set.new 9 | settings = {} 10 | `grep -h -A1 '^#ifndef' keymap.dtsi.min device.dtsi.min | grep '^#define'`.lines.each do |define| 11 | (_define, key, value) = define.chomp.split(/\s+/, 3) 12 | case value 13 | when /TAPPING_RESOLUTION ([+\-]) (\d+)/ 14 | warn({ formula: {key => $~} }) 15 | value = "#{$1}#{$2}".inspect 16 | tapping_resolution_formulas << value 17 | when /^["']/ 18 | warn({ string: {key => value} }) 19 | value = value.rstrip.inspect 20 | when /^\d+$/ 21 | warn({ number: {key => value} }) 22 | numbers << value 23 | value = "NUMBER_#{value}" 24 | when "\\", /\(/ 25 | warn({ definition: {key => value} }) 26 | next # skip this setting -- it's a complex multi-line definition 27 | end 28 | settings[key] = value 29 | %> 30 | <%= key %> -> <%= value %> 31 | <% 32 | end 33 | %> 34 | <% tapping_resolution_formulas.each do |label| %> 35 | <%= label %> -> TAPPING_RESOLUTION [color=red] 36 | <% end %> 37 | } 38 | 39 | subgraph values { 40 | graph [rank=same] 41 | 42 | <% settings.values.grep(/^".*"$/).uniq.each do |string| %> 43 | <%= string %> [label=<%= string %>, style=filled, fillcolor=cyan, shape=signature] 44 | <% end %> 45 | 46 | <% numbers.each do |number| %> 47 | NUMBER_<%= number %> [label="<%= number %>", style=filled, fillcolor=yellow, shape=signature] 48 | <% end %> 49 | 50 | <% tapping_resolution_formulas.each do |label| %> 51 | <%= label %> [label=<%= label %>, style=filled, fillcolor=salmon, shape=lpromoter] 52 | <% end %> 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'rake/clean' 2 | require 'json' 3 | require 'erb' 4 | 5 | task :default => [:dtsi, :dot, :pdf] 6 | 7 | #----------------------------------------------------------------------------- 8 | # ZMK configuration snippet (DTSI) 9 | #----------------------------------------------------------------------------- 10 | 11 | dtsi_files = FileList['*.dtsi.erb'].each do |erb| 12 | dtsi = erb.pathmap('%X') 13 | dtsi_base = dtsi.pathmap('%X') 14 | file dtsi => FileList[erb, "#{dtsi_base}.{json,zmk}", '*.yaml', __FILE__] 15 | CLEAN.include "#{erb}.tmp" 16 | 17 | dtsi_min = "#{dtsi}.min" 18 | file dtsi_min => dtsi 19 | CLOBBER.include dtsi_min 20 | end 21 | task :dtsi => dtsi_files 22 | 23 | rule '.dtsi' => '.dtsi.erb' do |t| 24 | input = File.read(t.source) 25 | # NOTE: this may shift line numbers, hence dump *.tmp below 26 | .gsub(/\n(?= *<%(?!=))/, '') # remove leading newline 27 | 28 | template = ERB.new(input, trim_mode: '<>') 29 | template.filename = t.source + '.tmp' 30 | File.write(template.filename, input) # for error line numbers 31 | 32 | output = template.result() 33 | .gsub(/ +$/, '') # remove trailing spaces 34 | .gsub(/\n+(?= +#(?!define))/, "\n") # tighten #elif 35 | File.write(t.name, output) 36 | end 37 | 38 | rule '.dtsi.min' => '.dtsi' do |t| 39 | minified = File.read(t.source) 40 | .gsub(%r{^\s*//(?! ==== ).*}, '') # remove comment lines 41 | .gsub(%r{(?<=[^\*])//.*}, '') # remove trailing comments 42 | .gsub(/^\s+/, '') # remove indentation 43 | .squeeze("\n") # remove blank lines 44 | .squeeze(' ') # remove extra spaces 45 | File.write(t.name, minified) 46 | end 47 | 48 | #----------------------------------------------------------------------------- 49 | # Graphviz DOT for diagrams 50 | #----------------------------------------------------------------------------- 51 | 52 | task :dot => ['define.svg', 'define.json'] 53 | 54 | file 'define.svg' => 'define.dot' do |t| 55 | sh "dot -Tsvg #{t.prerequisites[0]} > #{t.name}" 56 | end 57 | 58 | file 'define.dot' => ['define.dot.erb', 'keymap.dtsi.min', 'device.dtsi.min'] do |t| 59 | sh "erb #{t.prerequisites[0]} > #{t.name}" 60 | end 61 | 62 | file 'define.json' => ['keymap.dtsi.min', 'device.dtsi.min'] do |t| 63 | defaults = 64 | `grep -h -A1 '#ifndef' #{t.prerequisites.join(' ')} | grep '#define'` 65 | .gsub(/#define (\w+)/, '\1 =') 66 | .lines.inject({}) do |hash, line| 67 | setting = line[/\w+/] 68 | value = eval(line) rescue nil 69 | hash[setting] = value if value 70 | hash 71 | end 72 | File.write(t.name, JSON.pretty_generate({defaults: defaults})) 73 | end 74 | 75 | #----------------------------------------------------------------------------- 76 | # printable layer map diagrams 77 | #----------------------------------------------------------------------------- 78 | 79 | layers_pdf = 'README/all-layer-diagrams.pdf' 80 | task :pdf => layers_pdf 81 | 82 | layers_pdf_sequence = %w[ 83 | base 84 | engrammer 85 | lower 86 | magic 87 | cursor 88 | number 89 | function 90 | emoji 91 | symbol 92 | mouse 93 | system 94 | world 95 | typing 96 | gaming 97 | factory 98 | template 99 | ] 100 | 101 | layer_pngs = Dir["README/{#{layers_pdf_sequence.join(",")}}-layer-diagram.png"] 102 | 103 | layer_pdfs = layer_pngs.map do |png| 104 | pdf = png.ext('pdf') 105 | file pdf => png 106 | pdf 107 | end 108 | CLEAN.include layer_pdfs 109 | 110 | file layers_pdf => layer_pdfs do |t| 111 | sh 'pdfunite', *t.prerequisites, t.name 112 | end 113 | CLOBBER.include layers_pdf 114 | 115 | rule '.pdf' => '.png' do |t| 116 | sh 'gm', 'convert', t.source, t.name 117 | end 118 | -------------------------------------------------------------------------------- /emoji.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # characters: 3 | # : 4 | # : { , } 5 | # 6 | characters: 7 | moon: 8 | complete: { new: "🌑", full: "🌕" } 9 | gibbous: { waning: "🌖", waxing: "🌔" } 10 | quarter: { waning: "🌗", waxing: "🌓" } 11 | crescent: { waning: "🌘", waxing: "🌒" } 12 | stars: { sparkle: "✨", magic: "🪄" } 13 | face: 14 | smile: { up: "🙂", down: "🙃" } 15 | laugh: { joy: "😂", rofl: "🤣" } 16 | eyes: { star: "🤩", heart: "😍" } 17 | joke: { wink: "😉", tounge: "😜" } 18 | fear: { scared: "😨", scream: "😱" } 19 | surprise: { shocked: "🤯", dizzy: "😵" } 20 | gesture: 21 | attention: { snap: "🫰", wave: "👋" } 22 | approval: { perfect: "👌", cool: "😎" } 23 | gratitude: { pray: "🙏", salute: "🫡" } 24 | anxiety: { smile: "😅", rushed: "😰" } 25 | despair: { sad: "😞", cry: "😢" } 26 | curious: { think: "🤔", analyze: "🧐" } 27 | point: { up: "☝️", you: "🫵" } 28 | thumbs: { up: "👍", down: "👎" } 29 | hands: { up: "🙌", clap: "👏" } 30 | 31 | # 32 | # codepoints: 33 | # : "" 34 | # 35 | codepoints: 36 | 37 | # modifiers 38 | zwj: "\u200d" 39 | male_sign: "♂️" 40 | female_sign: "♀️" 41 | right_arrow: "➡️" 42 | left_arrow: "⬅️" 43 | 44 | # weather 45 | rainbow: "🌈" 46 | cloudy: "️☁️" 47 | mostly_cloudy: "🌥" 48 | partly_cloudy: "⛅" 49 | mostly_sunny: "️🌤️" 50 | sunny: "☀️" 51 | 52 | # time of day 53 | sunrise: "🌅" 54 | sunrise_mountains: "🌄" 55 | cityscape: "️🏙️" 56 | cityscape_dusk: "️🌇" 57 | cityscape_night: "🌃" 58 | 59 | # skin tones 60 | light_skin_tone: "🏻" 61 | medium_light_skin_tone: "🏼" 62 | medium_skin_tone: "🏽" 63 | medium_dark_skin_tone: "🏾" 64 | dark_skin_tone: "🏿" 65 | 66 | # family & ages 67 | baby_bottle: "🍼" 68 | baby: "👶" 69 | boy: "👦" 70 | girl: "👧" 71 | man: "👨" 72 | woman: "👩" 73 | old_man: "👴" 74 | old_woman: "👵" 75 | 76 | # hair styles 77 | white_hair: "🦳" 78 | curly_hair: "🦱" 79 | red_hair: "🦰" 80 | bald: "🦲" 81 | 82 | # function row 83 | new_moon: "🌑" 84 | waxing_crescent_moon: "🌒" 85 | first_quarter_moon: "🌓" 86 | waxing_gibbous_moon: "🌔" 87 | full_moon: "🌕" 88 | waning_gibbous_moon: "🌖" 89 | last_quarter_moon: "🌗" 90 | waning_crescent_moon: "🌘" 91 | 92 | # number row 93 | tada: "🎉" 94 | heart: "️❤️" 95 | fire: "🔥" 96 | muscle: "💪" 97 | person_climbing: "🧗" 98 | lab_coat: "🥼" 99 | rocket: "🚀" 100 | 101 | # upper row 102 | joy: "😂" 103 | rofl: "🤣" 104 | star_struck: "🤩" 105 | love_struck: "😍" 106 | saluting_face: "🫡" 107 | shocked_face: "🤯" 108 | cold_sweat: "😰" 109 | monocle_face: "🧐" 110 | 111 | # home row 112 | snap_fingers: "🫰" 113 | ok_hand: "👌" 114 | pray: "🙏" 115 | sweat_smile: "😅" 116 | disappointed: "😞" 117 | thinking: "🤔" 118 | 119 | # lower row 120 | person_tipping_hand: "💁" 121 | person_gesturing_ok: "🙆" 122 | person_bowing: "🙇" 123 | person_raising_hand: "🙋" 124 | person_gesturing_no: "🙅" 125 | person_shrugging: "🤷" 126 | 127 | # bottom row 128 | checkoff: "✅" 129 | 100: "💯" 130 | warning: "⚠️" 131 | x: "❌" 132 | question: "❓" 133 | 134 | # thumb cluster upper arc 135 | astronaut: "🧑‍🚀" 136 | nerd: "🤓" 137 | sparkles: "✨" 138 | 139 | # thumb cluster lower arc 140 | raised_hands: "🙌" 141 | point_up: "☝️" 142 | thumbs_up: "👍" 143 | -------------------------------------------------------------------------------- /README/emoji-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7, 9 | "f": 9 10 | }, 11 | "☁️", 12 | "🌥️", 13 | "⛅\n\n\n\nWin", 14 | "🌤", 15 | "☀️", 16 | { 17 | "x": 7, 18 | "f": 3, 19 | "fa": [ 20 | 9 21 | ] 22 | }, 23 | "🌑", 24 | { 25 | "a": 5, 26 | "f": 5 27 | }, 28 | "🌒\n🌘", 29 | "🌓\n🌗", 30 | "🌔\n🌖", 31 | { 32 | "a": 7, 33 | "f": 3, 34 | "fa": [ 35 | 9 36 | ] 37 | }, 38 | "🌕" 39 | ], 40 | [ 41 | { 42 | "f": 9 43 | }, 44 | "🌈", 45 | "🏻", 46 | "🏼", 47 | "🏽", 48 | "🏾", 49 | "🏿", 50 | { 51 | "a": 4, 52 | "f": 4, 53 | "w": 5, 54 | "h": 4, 55 | "d": true 56 | }, 57 | "

Emoji Layer

MoErgo Glove80 keyboard

", 58 | { 59 | "a": 7, 60 | "f": 9 61 | }, 62 | "🎉", 63 | "❤️", 64 | "🔥", 65 | "💪", 66 | "🧗", 67 | "🥼" 68 | ], 69 | [ 70 | "⬅️", 71 | "🦲", 72 | "🦰", 73 | "🦱", 74 | "🦳", 75 | "️➡️", 76 | { 77 | "x": 5, 78 | "a": 5, 79 | "f": 5 80 | }, 81 | "🤣\n😂", 82 | "🙃\n🙂", 83 | "😍\n🤩\n\n\nCtrl", 84 | "😜\n😉", 85 | "😱\n😨", 86 | "😵\n🤯" 87 | ], 88 | [ 89 | { 90 | "a": 7, 91 | "f": 9 92 | }, 93 | "♀️\n\n\n\nAlt", 94 | { 95 | "c": "#FFCCBC", 96 | "f": 3 97 | }, 98 | "Skin tone preset", 99 | { 100 | "c": "#ffecb3" 101 | }, 102 | "ZWJ\n\n\n\nWin", 103 | { 104 | "c": "#dcedc8" 105 | }, 106 | "Gender sign preset\n\n\n\nShift", 107 | { 108 | "c": "#BBDEFB" 109 | }, 110 | "Hair style preset", 111 | { 112 | "c": "#cccccc", 113 | "f": 9 114 | }, 115 | "♂️\n\n\n\nCtrl", 116 | { 117 | "x": 5, 118 | "a": 5, 119 | "f": 5 120 | }, 121 | "👋\n🫰", 122 | { 123 | "n": true 124 | }, 125 | "😎\n👌\n\n\nShift", 126 | "🫡\n🙏", 127 | "😰\n😅\n\n\nAlt", 128 | "😢\n😞", 129 | "🧐\n🤔" 130 | ], 131 | [ 132 | { 133 | "a": 7, 134 | "f": 9 135 | }, 136 | "👵", 137 | "👩\n\n\n\nAltGr", 138 | "👧", 139 | "👦", 140 | "👨", 141 | "👴", 142 | { 143 | "x": 5 144 | }, 145 | "💁", 146 | "🙆", 147 | "🙇", 148 | "🙋", 149 | "🙅\n\n\n\nWin", 150 | "🤷\n\n\n\nAltGr" 151 | ], 152 | [ 153 | { 154 | "y": -0.04999999999999982, 155 | "x": 6.95, 156 | "c": "#FFFF8D", 157 | "p": "FLAT", 158 | "f": 2, 159 | "w": 1.1, 160 | "h": 2.7, 161 | "d": true 162 | }, 163 | "" 164 | ], 165 | [ 166 | { 167 | "y": -0.9500000000000002, 168 | "c": "#cccccc", 169 | "p": "CHICKLET", 170 | "f": 9 171 | }, 172 | "🌄", 173 | "🌅", 174 | "👶", 175 | "🍼", 176 | { 177 | "c": "#D1C4E9", 178 | "p": "SPACE", 179 | "n": true 180 | }, 181 | "", 182 | { 183 | "c": "#cccccc", 184 | "p": "CHICKLET" 185 | }, 186 | "🏙\n\n\n\nFunction", 187 | "🌆", 188 | "🌃", 189 | { 190 | "x": 1 191 | }, 192 | "🧑‍🚀", 193 | "🚀", 194 | { 195 | "a": 5, 196 | "f": 5 197 | }, 198 | "✨\n🪄\n\n\nSystem", 199 | { 200 | "a": 7, 201 | "f": 9 202 | }, 203 | "✅", 204 | "️💯", 205 | "⚠️", 206 | "❌", 207 | "❓" 208 | ], 209 | [ 210 | { 211 | "x": 5, 212 | "c": "#bbdefb", 213 | "f": 3 214 | }, 215 | "Shift (sticky)", 216 | { 217 | "c": "#cccccc", 218 | "g": true, 219 | "f": 9 220 | }, 221 | "\n\n\n\nNumber", 222 | { 223 | "c": "#757575", 224 | "t": "#EEEEEE", 225 | "g": false, 226 | "f": 3 227 | }, 228 | "Unlock layer", 229 | { 230 | "x": 1, 231 | "c": "#cccccc", 232 | "t": "#000000", 233 | "a": 5, 234 | "f": 5 235 | }, 236 | "🙌\n👏", 237 | "☝️\n🫵\n\n\nMouse", 238 | { 239 | "n": true 240 | }, 241 | "👍\n👎\n\n\nSymbol" 242 | ] 243 | ] -------------------------------------------------------------------------------- /README/gaming-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "c": "#ffcdd2", 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7 18 | }, 19 | "F6", 20 | "F7", 21 | "F8", 22 | "F9", 23 | "F10" 24 | ], 25 | [ 26 | { 27 | "c": "#ffecb3", 28 | "a": 5, 29 | "f": 5 30 | }, 31 | "+\n=", 32 | { 33 | "c": "#ffccbc", 34 | "f": 4 35 | }, 36 | "!\n1", 37 | "@\n2", 38 | "#\n3", 39 | "$\n4", 40 | "%\n5", 41 | { 42 | "c": "#cccccc", 43 | "a": 4, 44 | "w": 5, 45 | "h": 4, 46 | "d": true 47 | }, 48 | "

Gaming Layer

MoErgo Glove80 keyboard

", 49 | { 50 | "c": "#ffccbc", 51 | "a": 5 52 | }, 53 | "^\n6", 54 | "&\n7", 55 | "*\n8", 56 | "(\n9", 57 | ")\n0", 58 | { 59 | "c": "#ffecb3" 60 | }, 61 | "|\n\\" 62 | ], 63 | [ 64 | "_\n-", 65 | { 66 | "f": 5 67 | }, 68 | "~\n`", 69 | { 70 | "c": "#cccccc", 71 | "a": 7, 72 | "f": 3 73 | }, 74 | "B", 75 | "N\n\n\n\nAltGr", 76 | "M", 77 | { 78 | "c": "#ffecb3", 79 | "a": 5, 80 | "f": 5 81 | }, 82 | "\"\n'", 83 | { 84 | "x": 5, 85 | "c": "#cccccc", 86 | "a": 7, 87 | "f": 3 88 | }, 89 | "B", 90 | "N", 91 | "M", 92 | { 93 | "c": "#ffecb3", 94 | "a": 5, 95 | "f": 5 96 | }, 97 | "<\n,", 98 | ">\n.", 99 | { 100 | "f": 4 101 | }, 102 | "?\n/" 103 | ], 104 | [ 105 | { 106 | "c": "#cccccc", 107 | "a": 7, 108 | "f": 3 109 | }, 110 | "T", 111 | { 112 | "c": "#e1bee7" 113 | }, 114 | "Tab\n\n\n\nWin", 115 | { 116 | "c": "#cccccc" 117 | }, 118 | "Q\n\n\n\nAlt", 119 | { 120 | "c": "#dcedc8" 121 | }, 122 | "W\n\n\n\nCtrl", 123 | { 124 | "c": "#cccccc" 125 | }, 126 | "E\n\n\n\nShift", 127 | "R", 128 | { 129 | "x": 5 130 | }, 131 | "T\n\n\n\nCtrl", 132 | { 133 | "n": true 134 | }, 135 | "Y\n\n\n\nShift", 136 | "U\n\n\n\nAltGr", 137 | "I\n\n\n\nAlt", 138 | "O\n\n\n\nWin", 139 | "P" 140 | ], 141 | [ 142 | "G", 143 | { 144 | "c": "#bbdefb" 145 | }, 146 | "Shift", 147 | { 148 | "c": "#dcedc8" 149 | }, 150 | "A", 151 | "S", 152 | { 153 | "n": true 154 | }, 155 | "D", 156 | { 157 | "c": "#cccccc" 158 | }, 159 | "F", 160 | { 161 | "x": 5 162 | }, 163 | "G", 164 | "H", 165 | "J", 166 | "K", 167 | "L", 168 | { 169 | "c": "#ffecb3", 170 | "a": 5, 171 | "f": 5 172 | }, 173 | ":\n;" 174 | ], 175 | [ 176 | { 177 | "y": -0.04999999999999982, 178 | "x": 6.95, 179 | "c": "#FFFF8D", 180 | "p": "FLAT", 181 | "f": 2, 182 | "w": 1.1, 183 | "h": 2.7 184 | }, 185 | "\nToggle base layer" 186 | ], 187 | [ 188 | { 189 | "y": -0.9500000000000002, 190 | "c": "#cccccc", 191 | "p": "CHICKLET", 192 | "a": 7, 193 | "f": 3 194 | }, 195 | "V", 196 | { 197 | "c": "#bbdefb" 198 | }, 199 | "Ctrl", 200 | { 201 | "c": "#cccccc" 202 | }, 203 | "Z", 204 | "X", 205 | "C", 206 | { 207 | "c": "#e1bee7" 208 | }, 209 | "Escape\n\n\n\nFunction", 210 | "Enter", 211 | { 212 | "c": "#ffcdd2" 213 | }, 214 | "Pause", 215 | { 216 | "x": 1, 217 | "c": "#e1bee7" 218 | }, 219 | "Back space", 220 | "Delete", 221 | "Enter\n\n\n\nSystem", 222 | { 223 | "c": "#ffecb3", 224 | "a": 5, 225 | "f": 4 226 | }, 227 | "<\n(", 228 | { 229 | "f": 3 230 | }, 231 | "{\n[", 232 | "}\n]", 233 | { 234 | "f": 4 235 | }, 236 | ">\n)", 237 | { 238 | "c": "#757575", 239 | "t": "#EEEEEE", 240 | "a": 7, 241 | "f": 3 242 | }, 243 | "Magic" 244 | ], 245 | [ 246 | { 247 | "x": 5, 248 | "c": "#e1bee7", 249 | "t": "#000000", 250 | "n": true 251 | }, 252 | "Space\n\n\n\nCursor", 253 | { 254 | "c": "#bbdefb" 255 | }, 256 | "Alt\n\n\n\nNumber", 257 | "Win", 258 | { 259 | "x": 1, 260 | "c": "#757575", 261 | "t": "#EEEEEE" 262 | }, 263 | "Unlock layer", 264 | { 265 | "c": "#e1bee7", 266 | "t": "#000000" 267 | }, 268 | "Tab\n\n\n\nMouse", 269 | { 270 | "n": true 271 | }, 272 | "Space\n\n\n\nSymbol" 273 | ] 274 | ] -------------------------------------------------------------------------------- /README/factory-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "c": "#ffcdd2", 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7 18 | }, 19 | "F6", 20 | "F7", 21 | "F8", 22 | "F9", 23 | "F10" 24 | ], 25 | [ 26 | { 27 | "c": "#ffecb3", 28 | "a": 5, 29 | "f": 5 30 | }, 31 | "+\n=", 32 | { 33 | "c": "#ffccbc", 34 | "f": 4 35 | }, 36 | "!\n1", 37 | "@\n2", 38 | "#\n3", 39 | "$\n4", 40 | "%\n5", 41 | { 42 | "c": "#cccccc", 43 | "a": 4, 44 | "w": 5, 45 | "h": 4, 46 | "d": true 47 | }, 48 | "

Factory Layer

MoErgo Glove80 keyboard

", 49 | { 50 | "c": "#ffccbc", 51 | "a": 5 52 | }, 53 | "^\n6", 54 | "&\n7", 55 | "*\n8", 56 | "(\n9", 57 | ")\n0", 58 | { 59 | "c": "#ffecb3" 60 | }, 61 | "_\n-" 62 | ], 63 | [ 64 | { 65 | "c": "#e1bee7", 66 | "a": 7, 67 | "f": 3 68 | }, 69 | "Tab\n\n\n\nMouse", 70 | { 71 | "c": "#cccccc" 72 | }, 73 | "Q", 74 | "W\n\n\n\nAltGr", 75 | "E", 76 | "R", 77 | "T", 78 | { 79 | "x": 5 80 | }, 81 | "Y", 82 | "U", 83 | "I", 84 | "O\n\n\n\nAltGr", 85 | "P", 86 | { 87 | "c": "#ffecb3", 88 | "a": 5, 89 | "f": 4 90 | }, 91 | "|\n\\" 92 | ], 93 | [ 94 | { 95 | "c": "#e1bee7", 96 | "a": 7, 97 | "f": 3 98 | }, 99 | "Escape\n\n\n\nFunction", 100 | { 101 | "c": "#cccccc" 102 | }, 103 | "A\n\n\n\nWin", 104 | "S\n\n\n\nAlt", 105 | "D\n\n\n\nCtrl", 106 | { 107 | "n": true 108 | }, 109 | "F\n\n\n\nShift", 110 | "G\n\n\n\nCtrl", 111 | { 112 | "x": 5 113 | }, 114 | "H\n\n\n\nCtrl", 115 | { 116 | "n": true 117 | }, 118 | "J\n\n\n\nShift", 119 | "K\n\n\n\nCtrl", 120 | "L\n\n\n\nAlt", 121 | { 122 | "c": "#ffecb3", 123 | "a": 5, 124 | "f": 5 125 | }, 126 | ":\n;", 127 | "\"\n'" 128 | ], 129 | [ 130 | "~\n`", 131 | { 132 | "c": "#cccccc", 133 | "a": 7, 134 | "f": 3 135 | }, 136 | "Z", 137 | "X", 138 | "C", 139 | "V", 140 | "B", 141 | { 142 | "x": 5 143 | }, 144 | "N", 145 | "M", 146 | { 147 | "c": "#ffecb3", 148 | "a": 5, 149 | "f": 4 150 | }, 151 | "<\n,", 152 | ">\n.", 153 | "?\n/", 154 | { 155 | "c": "#dcedc8", 156 | "a": 7, 157 | "f": 3 158 | }, 159 | "Page up" 160 | ], 161 | [ 162 | { 163 | "y": -0.04999999999999982, 164 | "x": 6.95, 165 | "c": "#FFFF8D", 166 | "g": true, 167 | "p": "FLAT", 168 | "f": 2, 169 | "w": 1.1, 170 | "h": 2.7, 171 | "d": true 172 | }, 173 | "" 174 | ], 175 | [ 176 | { 177 | "y": -0.9500000000000002, 178 | "c": "#757575", 179 | "t": "#EEEEEE", 180 | "g": false, 181 | "p": "SPACE", 182 | "f": 3 183 | }, 184 | "Magic", 185 | { 186 | "c": "#dcedc8", 187 | "t": "#000000", 188 | "p": "CHICKLET" 189 | }, 190 | "Home", 191 | "End", 192 | { 193 | "fa": [ 194 | 9 195 | ] 196 | }, 197 | "←", 198 | "→", 199 | { 200 | "c": "#bbdefb", 201 | "f": 3 202 | }, 203 | "Left Shift", 204 | { 205 | "f": 3 206 | }, 207 | "Left Ctrl", 208 | { 209 | "c": "#757575", 210 | "t": "#EEEEEE", 211 | "p": "SPACE", 212 | "f": 3 213 | }, 214 | "Lower", 215 | { 216 | "x": 1, 217 | "c": "#bbdefb", 218 | "t": "#000000", 219 | "p": "CHICKLET", 220 | "f": 3 221 | }, 222 | "Left GUI", 223 | { 224 | "f": 3 225 | }, 226 | "Right Ctrl", 227 | { 228 | "f": 3 229 | }, 230 | "Right Shift", 231 | { 232 | "c": "#dcedc8", 233 | "f": 9 234 | }, 235 | "↑", 236 | "↓", 237 | { 238 | "c": "#ffecb3", 239 | "a": 5, 240 | "f": 3 241 | }, 242 | "{\n[", 243 | "}\n]", 244 | { 245 | "c": "#dcedc8", 246 | "a": 7 247 | }, 248 | "Page down" 249 | ], 250 | [ 251 | { 252 | "x": 5, 253 | "c": "#e1bee7", 254 | "n": true 255 | }, 256 | "Back space\n\n\n\nCursor", 257 | "Delete\n\n\n\nNumber", 258 | { 259 | "c": "#bbdefb" 260 | }, 261 | "Left Alt", 262 | { 263 | "x": 1 264 | }, 265 | "Right Alt", 266 | { 267 | "c": "#e1bee7" 268 | }, 269 | "Enter\n\n\n\nSystem", 270 | { 271 | "n": true 272 | }, 273 | "Space\n\n\n\nSymbol" 274 | ] 275 | ] -------------------------------------------------------------------------------- /README/typing-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "c": "#ffcdd2", 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7 18 | }, 19 | "F6", 20 | "F7", 21 | "F8", 22 | "F9", 23 | "F10" 24 | ], 25 | [ 26 | { 27 | "c": "#ffecb3", 28 | "a": 5, 29 | "f": 5 30 | }, 31 | "+\n=", 32 | { 33 | "c": "#ffccbc", 34 | "f": 4 35 | }, 36 | "!\n1", 37 | "@\n2", 38 | "#\n3", 39 | "$\n4", 40 | "%\n5", 41 | { 42 | "c": "#cccccc", 43 | "a": 4, 44 | "w": 5, 45 | "h": 4, 46 | "d": true 47 | }, 48 | "

Typing Layer

MoErgo Glove80 keyboard

", 49 | { 50 | "c": "#ffccbc", 51 | "a": 5 52 | }, 53 | "^\n6", 54 | "&\n7", 55 | "*\n8", 56 | "(\n9", 57 | ")\n0", 58 | { 59 | "c": "#ffecb3" 60 | }, 61 | "|\n\\" 62 | ], 63 | [ 64 | { 65 | "f": 5 66 | }, 67 | "~\n`", 68 | { 69 | "c": "#cccccc", 70 | "a": 7, 71 | "f": 3 72 | }, 73 | "B", 74 | "Y\n\n\n\nAltGr", 75 | "O", 76 | "U", 77 | { 78 | "c": "#ffecb3", 79 | "a": 5, 80 | "f": 5 81 | }, 82 | "\"\n'", 83 | { 84 | "x": 5 85 | }, 86 | ":\n;", 87 | { 88 | "c": "#cccccc", 89 | "a": 7, 90 | "f": 3 91 | }, 92 | "L", 93 | "D", 94 | "W\n\n\n\nAltGr", 95 | "V", 96 | "Z" 97 | ], 98 | [ 99 | { 100 | "c": "#bbdefb" 101 | }, 102 | "Caps word", 103 | { 104 | "c": "#cccccc" 105 | }, 106 | "C\n\n\n\nWin", 107 | "I\n\n\n\nAlt", 108 | "E\n\n\n\nCtrl", 109 | { 110 | "n": true 111 | }, 112 | "A\n\n\n\nShift", 113 | { 114 | "c": "#ffecb3", 115 | "a": 5, 116 | "f": 4 117 | }, 118 | "<\n,", 119 | { 120 | "x": 5 121 | }, 122 | ">\n.", 123 | { 124 | "c": "#cccccc", 125 | "a": 7, 126 | "f": 3, 127 | "n": true 128 | }, 129 | "H\n\n\n\nShift", 130 | "T\n\n\n\nCtrl", 131 | "S\n\n\n\nAlt", 132 | "N\n\n\n\nWin", 133 | "Q" 134 | ], 135 | [ 136 | { 137 | "c": "#bbdefb" 138 | }, 139 | "Shift (sticky)", 140 | { 141 | "c": "#cccccc" 142 | }, 143 | "G", 144 | "X", 145 | "J", 146 | "K", 147 | { 148 | "c": "#ffecb3", 149 | "a": 5, 150 | "f": 4 151 | }, 152 | "_\n-", 153 | { 154 | "x": 5 155 | }, 156 | "?\n/", 157 | { 158 | "c": "#cccccc", 159 | "a": 7, 160 | "f": 3 161 | }, 162 | "R", 163 | "M", 164 | "F", 165 | "P", 166 | { 167 | "c": "#bbdefb" 168 | }, 169 | "Shift (sticky)" 170 | ], 171 | [ 172 | { 173 | "y": -0.04999999999999982, 174 | "x": 6.95, 175 | "c": "#FFFF8D", 176 | "p": "FLAT", 177 | "f": 2, 178 | "w": 1.1, 179 | "h": 2.7, 180 | "d": true 181 | }, 182 | "" 183 | ], 184 | [ 185 | { 186 | "y": -0.9500000000000002, 187 | "c": "#757575", 188 | "t": "#EEEEEE", 189 | "p": "SPACE", 190 | "f": 3 191 | }, 192 | "Magic", 193 | { 194 | "c": "#dcedc8", 195 | "t": "#000000", 196 | "p": "CHICKLET" 197 | }, 198 | "Home", 199 | "Page up", 200 | "Page down", 201 | "End", 202 | { 203 | "c": "#e1bee7" 204 | }, 205 | "Escape\n\n\n\nFunction", 206 | { 207 | "c": "#dcedc8", 208 | "fa": [ 209 | 9 210 | ] 211 | }, 212 | "↑", 213 | "↓", 214 | { 215 | "x": 1 216 | }, 217 | "←", 218 | "→", 219 | { 220 | "c": "#e1bee7", 221 | "f": 3 222 | }, 223 | "Enter\n\n\n\nSystem", 224 | { 225 | "c": "#ffecb3", 226 | "a": 5, 227 | "f": 4 228 | }, 229 | "<\n(", 230 | { 231 | "f": 3 232 | }, 233 | "{\n[", 234 | "}\n]", 235 | { 236 | "f": 4 237 | }, 238 | ">\n)", 239 | { 240 | "c": "#757575", 241 | "t": "#EEEEEE", 242 | "p": "SPACE", 243 | "a": 7, 244 | "f": 3 245 | }, 246 | "Magic" 247 | ], 248 | [ 249 | { 250 | "x": 5, 251 | "c": "#e1bee7", 252 | "t": "#000000", 253 | "p": "CHICKLET", 254 | "n": true 255 | }, 256 | "Back space\n\n\n\nCursor", 257 | "Delete\n\n\n\nNumber", 258 | { 259 | "c": "#757575", 260 | "t": "#EEEEEE" 261 | }, 262 | "Unlock layer", 263 | { 264 | "x": 1 265 | }, 266 | "Unlock layer", 267 | { 268 | "c": "#e1bee7", 269 | "t": "#000000" 270 | }, 271 | "Tab\n\n\n\nMouse", 272 | { 273 | "n": true 274 | }, 275 | "Space\n\n\n\nSymbol" 276 | ] 277 | ] -------------------------------------------------------------------------------- /README/cursor-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 5 10 | }, 11 | "|\n\\", 12 | { 13 | "a": 7 14 | }, 15 | "F2", 16 | "F3", 17 | "F4", 18 | { 19 | "t": "#EEEEEE" 20 | }, 21 | "Reset", 22 | { 23 | "x": 7, 24 | "t": "#000000" 25 | }, 26 | "F6", 27 | "F7", 28 | "F8", 29 | "F9", 30 | { 31 | "a": 5 32 | }, 33 | "+\n=" 34 | ], 35 | [ 36 | { 37 | "c": "#ffccbc", 38 | "g": false, 39 | "a": 7 40 | }, 41 | "Escape", 42 | "Enter", 43 | "Space", 44 | "Tab", 45 | "Delete", 46 | "Insert", 47 | { 48 | "c": "#cccccc", 49 | "a": 4, 50 | "f": 4, 51 | "w": 5, 52 | "h": 4, 53 | "d": true 54 | }, 55 | "

Cursor Layer

MoErgo Glove80 keyboard

", 56 | { 57 | "c": "#ffccbc", 58 | "a": 7, 59 | "f": 3 60 | }, 61 | "Insert", 62 | "Delete", 63 | "Tab", 64 | "Space", 65 | "Enter", 66 | "Escape" 67 | ], 68 | [ 69 | { 70 | "c": "#ffcdd2" 71 | }, 72 | "Search bar\n\n\n\nSymbol", 73 | { 74 | "c": "#cccccc" 75 | }, 76 | "Shift (sticky)", 77 | { 78 | "c": "#e1bee7" 79 | }, 80 | "Redo", 81 | "Undo", 82 | { 83 | "c": "#ffccbc" 84 | }, 85 | "Back space", 86 | { 87 | "c": "#ffecb3" 88 | }, 89 | "Cut", 90 | { 91 | "x": 5 92 | }, 93 | "Cut", 94 | { 95 | "c": "#ffccbc" 96 | }, 97 | "Back space", 98 | { 99 | "c": "#e1bee7" 100 | }, 101 | "Undo", 102 | "Redo", 103 | { 104 | "c": "#cccccc" 105 | }, 106 | "Shift (sticky)", 107 | { 108 | "c": "#ffcdd2" 109 | }, 110 | "Search bar\n\n\n\nSymbol" 111 | ], 112 | [ 113 | "URL bar", 114 | { 115 | "c": "#cccccc" 116 | }, 117 | "Win\n\n\n\nWin", 118 | "Alt\n\n\n\nAlt", 119 | "Ctrl\n\n\n\nCtrl", 120 | { 121 | "n": true 122 | }, 123 | "Shift\n\n\n\nShift", 124 | { 125 | "c": "#ffecb3" 126 | }, 127 | "Copy", 128 | { 129 | "x": 5 130 | }, 131 | "Copy", 132 | { 133 | "c": "#dcedc8", 134 | "f": 9, 135 | "n": true 136 | }, 137 | "←\n\n\n\nShift", 138 | "↑\n\n\n\nCtrl", 139 | "↓\n\n\n\nAlt", 140 | "→\n\n\n\nWin", 141 | { 142 | "c": "#ffcdd2", 143 | "f": 3 144 | }, 145 | "URL bar" 146 | ], 147 | [ 148 | "Down loads", 149 | { 150 | "c": "#bbdefb", 151 | "t": "#00000" 152 | }, 153 | "Select all", 154 | { 155 | "t": "#000000" 156 | }, 157 | "Select line\n\n\n\nMouse", 158 | "Select word\n\n\n\nSymbol", 159 | { 160 | "c": "#e1bee7" 161 | }, 162 | "Find", 163 | { 164 | "c": "#ffecb3" 165 | }, 166 | "Paste", 167 | { 168 | "x": 5 169 | }, 170 | "Paste", 171 | { 172 | "c": "#dcedc8" 173 | }, 174 | "Home", 175 | "Page up", 176 | "Page down\n\n\n\nAltGr", 177 | "End", 178 | { 179 | "c": "#ffcdd2" 180 | }, 181 | "Down loads" 182 | ], 183 | [ 184 | { 185 | "y": -0.04999999999999982, 186 | "x": 6.95, 187 | "c": "#FFFF8D", 188 | "p": "FLAT", 189 | "f": 2, 190 | "w": 1.1, 191 | "h": 2.7, 192 | "d": true 193 | }, 194 | "" 195 | ], 196 | [ 197 | { 198 | "y": -0.9500000000000002, 199 | "c": "#e1bee7", 200 | "p": "CHICKLET", 201 | "f": 3 202 | }, 203 | "Find & replace\n\n\n\nMouse", 204 | "Find prev", 205 | { 206 | "c": "#bbdefb" 207 | }, 208 | "Extend line", 209 | "Extend word", 210 | { 211 | "c": "#e1bee7" 212 | }, 213 | "Find next", 214 | { 215 | "c": "#a5d6a7" 216 | }, 217 | "Alt-Tab\n\n\n\nNumber", 218 | "Win-Tab", 219 | { 220 | "c": "#ffccbc" 221 | }, 222 | "Tab\n\n\n\nFunction", 223 | { 224 | "x": 1, 225 | "c": "#bbdefb" 226 | }, 227 | "Select none", 228 | "Extend line", 229 | "Extend word", 230 | { 231 | "c": "#e1bee7" 232 | }, 233 | "Find", 234 | "Find prev", 235 | "Find next", 236 | "Find & replace\n\n\n\nMouse", 237 | "Emoji picker" 238 | ], 239 | [ 240 | { 241 | "x": 5, 242 | "c": "#D1C4E9", 243 | "p": "SPACE", 244 | "f": 9, 245 | "n": true 246 | }, 247 | "", 248 | { 249 | "c": "#a5d6a7", 250 | "p": "CHICKLET", 251 | "f": 3 252 | }, 253 | "Ctrl-Tab", 254 | { 255 | "c": "#757575", 256 | "t": "#EEEEEE" 257 | }, 258 | "Unlock layer", 259 | { 260 | "x": 1, 261 | "c": "#bbdefb", 262 | "t": "#00000" 263 | }, 264 | "Select all", 265 | { 266 | "t": "#000000" 267 | }, 268 | "Select line\n\n\n\nMouse", 269 | { 270 | "n": true 271 | }, 272 | "Select word\n\n\n\nSymbol" 273 | ] 274 | ] -------------------------------------------------------------------------------- /README/magic-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7 9 | }, 10 | "Clear this BT profile", 11 | { 12 | "g": true 13 | }, 14 | "F2", 15 | "F3", 16 | "F4", 17 | "F5", 18 | { 19 | "x": 7 20 | }, 21 | "F6", 22 | "F7", 23 | "F8", 24 | "F9", 25 | { 26 | "g": false 27 | }, 28 | "Clear all BT profiles" 29 | ], 30 | [ 31 | { 32 | "c": "#D1C4E9", 33 | "a": 5 34 | }, 35 | "Go to\n0\n\n\n\n\nlayer", 36 | "Go to\n1\n\n\n\n\nlayer", 37 | "Go to\n2\n\n\n\n\nlayer", 38 | "Go to\n3\n\n\n\n\nlayer", 39 | "Go to\n4\n\n\n\n\nlayer", 40 | "Go to\n5\n\n\n\n\nlayer", 41 | { 42 | "c": "#cccccc", 43 | "a": 4, 44 | "f": 4, 45 | "w": 5, 46 | "h": 4, 47 | "d": true 48 | }, 49 | "

Magic Layer

MoErgo Glove80 keyboard

", 50 | { 51 | "c": "#D1C4E9", 52 | "a": 5, 53 | "f": 3 54 | }, 55 | "Go to\n6\n\n\n\n\nlayer", 56 | "Go to\n7\n\n\n\n\nlayer", 57 | "Go to\n8\n\n\n\n\nlayer", 58 | { 59 | "c": "#cccccc", 60 | "g": true 61 | }, 62 | "(\n9", 63 | ")\n0", 64 | "|\n\\" 65 | ], 66 | [ 67 | "~\n`", 68 | { 69 | "g": false, 70 | "a": 7 71 | }, 72 | "Speed ➕", 73 | "Sat ➕", 74 | "Hue ➕", 75 | "Bright ➕", 76 | "RGB toggle", 77 | { 78 | "x": 5, 79 | "g": true, 80 | "a": 5 81 | }, 82 | ":\n;", 83 | { 84 | "a": 7 85 | }, 86 | "L", 87 | "D", 88 | "W\n\n\n\nAltGr", 89 | "V", 90 | "Z" 91 | ], 92 | [ 93 | { 94 | "g": false 95 | }, 96 | "Boot loader", 97 | "Speed ➖", 98 | "Sat ➖", 99 | "Hue ➖", 100 | "Bright ➖", 101 | { 102 | "n": true 103 | }, 104 | "Effect ➕", 105 | { 106 | "x": 5, 107 | "g": true, 108 | "a": 5 109 | }, 110 | ">\n.", 111 | { 112 | "a": 7, 113 | "n": true 114 | }, 115 | "H\n\n\n\nShift", 116 | "T\n\n\n\nCtrl", 117 | "S\n\n\n\nAlt", 118 | "N\n\n\n\nWin", 119 | { 120 | "g": false 121 | }, 122 | "Boot loader" 123 | ], 124 | [ 125 | "Reset", 126 | { 127 | "g": true 128 | }, 129 | "G", 130 | "X", 131 | "J", 132 | "K", 133 | { 134 | "a": 5 135 | }, 136 | "_\n-", 137 | { 138 | "x": 5 139 | }, 140 | "?\n/", 141 | { 142 | "a": 7 143 | }, 144 | "R", 145 | "M", 146 | "F", 147 | "P", 148 | { 149 | "g": false 150 | }, 151 | "Reset" 152 | ], 153 | [ 154 | { 155 | "y": -0.04999999999999982, 156 | "x": 6.95, 157 | "c": "#FFFF8D", 158 | "p": "FLAT", 159 | "f": 2, 160 | "w": 1.1, 161 | "h": 2.7, 162 | "d": true 163 | }, 164 | "" 165 | ], 166 | [ 167 | { 168 | "y": -0.9500000000000002, 169 | "c": "#BBDEFB", 170 | "t": "#EEEEEE", 171 | "p": "SPACE", 172 | "f": 3, 173 | "fa": [ 174 | 9 175 | ], 176 | "n": true 177 | }, 178 | "", 179 | { 180 | "c": "#cccccc", 181 | "t": "#000000", 182 | "g": true, 183 | "p": "CHICKLET", 184 | "f": 3 185 | }, 186 | "Home", 187 | { 188 | "f": 3 189 | }, 190 | "Page up", 191 | { 192 | "f": 3 193 | }, 194 | "Page down", 195 | { 196 | "a": 5, 197 | "f": 3 198 | }, 199 | "Output\n4\n\n\n\n\nto BT", 200 | { 201 | "g": false, 202 | "f": 3 203 | }, 204 | "Use BT\n#2\n\n\n\n\nprofile", 205 | { 206 | "f": 3 207 | }, 208 | "Use BT\n#3\n\n\n\n\nprofile", 209 | { 210 | "c": "#FFECB3", 211 | "a": 7, 212 | "f": 3 213 | }, 214 | "Factory layer toggle", 215 | { 216 | "x": 1, 217 | "c": "#cccccc", 218 | "g": true, 219 | "f": 3 220 | }, 221 | "Typing layer lock", 222 | { 223 | "f": 3 224 | }, 225 | "Gaming layer lock", 226 | { 227 | "f": 3 228 | }, 229 | "System layer lock", 230 | { 231 | "f": 3 232 | }, 233 | "World layer lock", 234 | { 235 | "a": 5, 236 | "f": 3 237 | }, 238 | "{\n[", 239 | { 240 | "f": 3 241 | }, 242 | "}\n]", 243 | { 244 | "f": 3 245 | }, 246 | ">\n)", 247 | { 248 | "c": "#BBDEFB", 249 | "t": "#EEEEEE", 250 | "g": false, 251 | "p": "SPACE", 252 | "a": 7, 253 | "f": 3, 254 | "n": true 255 | }, 256 | "" 257 | ], 258 | [ 259 | { 260 | "x": 5, 261 | "c": "#cccccc", 262 | "t": "#000000", 263 | "p": "CHICKLET", 264 | "a": 5, 265 | "f": 3 266 | }, 267 | "Use BT\n#0\n\n\n\n\nprofile", 268 | { 269 | "f": 3 270 | }, 271 | "Use BT\n#1\n\n\n\n\nprofile", 272 | { 273 | "f": 3 274 | }, 275 | "Output\n(wired)\n\n\n\n\nto USB", 276 | { 277 | "x": 1, 278 | "t": "#EEEEEE", 279 | "g": true, 280 | "a": 7, 281 | "f": 3 282 | }, 283 | "Magic", 284 | { 285 | "t": "#000000", 286 | "f": 3 287 | }, 288 | "Mouse layer lock", 289 | { 290 | "f": 3 291 | }, 292 | "Symbol layer lock" 293 | ] 294 | ] -------------------------------------------------------------------------------- /README/system-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7, 18 | "t": "#EEEEEE" 19 | }, 20 | "Reset", 21 | { 22 | "t": "#000000" 23 | }, 24 | "F7", 25 | "F8", 26 | "F9", 27 | { 28 | "t": "#EEEEEE" 29 | }, 30 | "Boot loader" 31 | ], 32 | [ 33 | { 34 | "t": "#000000", 35 | "a": 5 36 | }, 37 | "|\n\\", 38 | "!\n1", 39 | "@\n2", 40 | "#\n3", 41 | "$\n4", 42 | "%\n5", 43 | { 44 | "g": false, 45 | "a": 4, 46 | "f": 4, 47 | "w": 5, 48 | "h": 4, 49 | "d": true 50 | }, 51 | "

System Layer

MoErgo Glove80 keyboard

", 52 | { 53 | "g": true, 54 | "a": 5, 55 | "f": 3 56 | }, 57 | "^\n6", 58 | "&\n7", 59 | "*\n8", 60 | "(\n9", 61 | ")\n0", 62 | "+\n=" 63 | ], 64 | [ 65 | "~\n`", 66 | { 67 | "a": 7 68 | }, 69 | "B", 70 | { 71 | "c": "#ffccbc", 72 | "g": false 73 | }, 74 | "Hue ➖", 75 | "Hue ➕", 76 | { 77 | "c": "#cccccc", 78 | "g": true 79 | }, 80 | "U", 81 | { 82 | "c": "#c5cae9", 83 | "g": false 84 | }, 85 | "Scroll lock", 86 | { 87 | "x": 5, 88 | "c": "#dcedc8" 89 | }, 90 | "Sat ➕", 91 | { 92 | "c": "#cccccc" 93 | }, 94 | "Shift\n\n\n\nShift", 95 | "Ctrl\n\n\n\nCtrl", 96 | "Alt\n\n\n\nAlt", 97 | "Win\n\n\n\nWin", 98 | { 99 | "c": "#dcedc8" 100 | }, 101 | "Sat ➖" 102 | ], 103 | [ 104 | { 105 | "c": "#ffecb3" 106 | }, 107 | "RGB toggle", 108 | "Effect ➖", 109 | { 110 | "c": "#bbdefb" 111 | }, 112 | "Bright ➖", 113 | "Bright ➕", 114 | { 115 | "c": "#ffecb3", 116 | "n": true 117 | }, 118 | "Effect ➕", 119 | { 120 | "c": "#c5cae9" 121 | }, 122 | "Caps lock", 123 | { 124 | "x": 5, 125 | "c": "#ffccbc" 126 | }, 127 | "Hue ➕", 128 | { 129 | "c": "#e1bee7", 130 | "n": true 131 | }, 132 | "Context menu", 133 | "Lock screen", 134 | "Sleep", 135 | "Power", 136 | { 137 | "c": "#ffccbc" 138 | }, 139 | "Hue ➖" 140 | ], 141 | [ 142 | { 143 | "c": "#cccccc", 144 | "g": true 145 | }, 146 | "Shift", 147 | { 148 | "c": "#FFCDD2", 149 | "g": false 150 | }, 151 | "Speed ➖", 152 | { 153 | "c": "#dcedc8" 154 | }, 155 | "Sat ➖", 156 | "Sat ➕", 157 | { 158 | "c": "#FFCDD2" 159 | }, 160 | "Speed ➕", 161 | { 162 | "c": "#c5cae9" 163 | }, 164 | "Num lock", 165 | { 166 | "x": 5, 167 | "c": "#FFCDD2" 168 | }, 169 | "Speed ➕", 170 | { 171 | "c": "#ffecb3" 172 | }, 173 | "RGB toggle", 174 | { 175 | "c": "#c5cae9" 176 | }, 177 | "Print screen", 178 | "Scroll lock", 179 | "Pause break", 180 | { 181 | "c": "#FFCDD2" 182 | }, 183 | "Speed ➖" 184 | ], 185 | [ 186 | { 187 | "y": -0.04999999999999982, 188 | "x": 6.95, 189 | "c": "#ffecb3", 190 | "g": true, 191 | "p": "FLAT", 192 | "f": 2, 193 | "w": 1.1, 194 | "h": 2.7, 195 | "d": true 196 | }, 197 | "" 198 | ], 199 | [ 200 | { 201 | "y": -0.9500000000000002, 202 | "c": "#cccccc", 203 | "t": "#EEEEEE", 204 | "p": "CHICKLET", 205 | "f": 3 206 | }, 207 | "Magic", 208 | { 209 | "t": "#000000" 210 | }, 211 | "Home", 212 | "Page up", 213 | "Page down", 214 | { 215 | "g": false 216 | }, 217 | "Linux Magic SysRq\n\n\n\nSymbol", 218 | { 219 | "c": "#e1bee7" 220 | }, 221 | "Lock screen", 222 | "Sleep", 223 | "Power", 224 | { 225 | "x": 1, 226 | "c": "#cccccc", 227 | "g": true, 228 | "fa": [ 229 | 9 230 | ] 231 | }, 232 | "⇐", 233 | "⇒", 234 | { 235 | "c": "#D1C4E9", 236 | "g": false, 237 | "p": "SPACE", 238 | "n": true 239 | }, 240 | "", 241 | { 242 | "c": "#ffecb3", 243 | "p": "CHICKLET", 244 | "f": 3 245 | }, 246 | "Effect ➕", 247 | { 248 | "c": "#bbdefb", 249 | "f": 3 250 | }, 251 | "Bright ➕", 252 | { 253 | "f": 3 254 | }, 255 | "Bright ➖", 256 | { 257 | "c": "#ffecb3", 258 | "f": 3 259 | }, 260 | "Effect ➖", 261 | { 262 | "c": "#cccccc", 263 | "g": true, 264 | "a": 5, 265 | "f": 3 266 | }, 267 | "?\n/" 268 | ], 269 | [ 270 | { 271 | "x": 5, 272 | "c": "#ffccbc", 273 | "g": false, 274 | "a": 7, 275 | "f": 3, 276 | "n": true 277 | }, 278 | "Print screen", 279 | { 280 | "c": "#dcedc8", 281 | "f": 3 282 | }, 283 | "Context menu", 284 | { 285 | "c": "#ffccbc", 286 | "f": 3 287 | }, 288 | "Pause break", 289 | { 290 | "x": 1, 291 | "c": "#757575", 292 | "t": "#EEEEEE", 293 | "f": 3 294 | }, 295 | "Unlock layer", 296 | { 297 | "c": "#cccccc", 298 | "t": "#000000", 299 | "g": true, 300 | "f": 3 301 | }, 302 | "Tab\n\n\n\nMouse", 303 | { 304 | "f": 3 305 | }, 306 | "End" 307 | ] 308 | ] -------------------------------------------------------------------------------- /README/lower-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7 9 | }, 10 | "Bright ➖", 11 | "Bright ➕", 12 | "Prev track", 13 | "Next track", 14 | "Play / pause", 15 | { 16 | "x": 7 17 | }, 18 | "Mute\n\n\n\nSymbol", 19 | "Vol ➖\n\n\n\nLight", 20 | { 21 | "n": true 22 | }, 23 | "Vol ➕\n\n\n\nMouse", 24 | { 25 | "g": true 26 | }, 27 | "F9", 28 | { 29 | "g": false 30 | }, 31 | "Pause break" 32 | ], 33 | [ 34 | { 35 | "a": 5, 36 | "f": 5 37 | }, 38 | "+\n=", 39 | { 40 | "g": true, 41 | "f": 3 42 | }, 43 | "!\n1", 44 | "@\n2", 45 | "#\n3", 46 | "$\n4", 47 | { 48 | "g": false, 49 | "a": 7 50 | }, 51 | "Home", 52 | { 53 | "a": 4, 54 | "f": 4, 55 | "w": 5, 56 | "h": 4, 57 | "d": true 58 | }, 59 | "

Lower Layer

MoErgo Glove80 keyboard

", 60 | { 61 | "a": 7 62 | }, 63 | "(", 64 | { 65 | "f": 3 66 | }, 67 | "Num lock", 68 | { 69 | "a": 5 70 | }, 71 | "Num pad\n=", 72 | "Num pad\n/", 73 | "Num pad\n*", 74 | { 75 | "a": 7 76 | }, 77 | "Print screen" 78 | ], 79 | [ 80 | "Tab", 81 | { 82 | "g": true 83 | }, 84 | "B", 85 | "Y\n\n\n\nAltGr", 86 | { 87 | "g": false, 88 | "f": 9 89 | }, 90 | "↑", 91 | { 92 | "g": true, 93 | "f": 3 94 | }, 95 | "U", 96 | { 97 | "g": false 98 | }, 99 | "End", 100 | { 101 | "x": 5, 102 | "f": 4 103 | }, 104 | ")", 105 | { 106 | "a": 5, 107 | "f": 3 108 | }, 109 | "Num pad\n7", 110 | "Num pad\n8\n\n\nAltGr", 111 | "Num pad\n9", 112 | "Num pad\n-", 113 | { 114 | "a": 7 115 | }, 116 | "Scroll lock" 117 | ], 118 | [ 119 | "Escape", 120 | { 121 | "g": true 122 | }, 123 | "C\n\n\n\nWin", 124 | { 125 | "g": false, 126 | "f": 9 127 | }, 128 | "←", 129 | "↓", 130 | { 131 | "n": true 132 | }, 133 | "→", 134 | { 135 | "f": 3 136 | }, 137 | "Page up", 138 | { 139 | "x": 5, 140 | "f": 4 141 | }, 142 | "%", 143 | { 144 | "a": 5, 145 | "f": 3, 146 | "n": true 147 | }, 148 | "Num pad\n4\n\n\nShift", 149 | "Num pad\n5\n\n\nCtrl", 150 | "Num pad\n6\n\n\nAlt", 151 | "Num pad\n+\n\n\nWin", 152 | { 153 | "c": "#FFCDD2", 154 | "a": 7 155 | }, 156 | "Num lock" 157 | ], 158 | [ 159 | { 160 | "c": "#cccccc", 161 | "a": 5, 162 | "f": 5 163 | }, 164 | "~\n`", 165 | { 166 | "a": 7, 167 | "f": 3 168 | }, 169 | "Context menu", 170 | { 171 | "g": true 172 | }, 173 | "X", 174 | { 175 | "g": false 176 | }, 177 | "F11", 178 | "F12", 179 | "Page down\n\n\n\nAltGr", 180 | { 181 | "x": 5, 182 | "a": 5, 183 | "f": 4 184 | }, 185 | "<\n,", 186 | { 187 | "f": 3 188 | }, 189 | "Num pad\n1", 190 | "Num pad\n2", 191 | "Num pad\n3", 192 | "Num pad\nEnter", 193 | { 194 | "c": "#FFCCBC", 195 | "a": 7 196 | }, 197 | "Alt" 198 | ], 199 | [ 200 | { 201 | "y": -0.04999999999999982, 202 | "x": 6.95, 203 | "c": "#FFFF8D", 204 | "g": true, 205 | "p": "FLAT", 206 | "f": 2, 207 | "w": 1.1, 208 | "h": 2.7, 209 | "d": true 210 | }, 211 | "" 212 | ], 213 | [ 214 | { 215 | "y": -0.9500000000000002, 216 | "c": "#757575", 217 | "t": "#EEEEEE", 218 | "g": false, 219 | "p": "SPACE", 220 | "f": 3 221 | }, 222 | "Magic", 223 | { 224 | "c": "#cccccc", 225 | "t": "#000000", 226 | "p": "CHICKLET" 227 | }, 228 | "Caps lock", 229 | "Insert", 230 | "F11", 231 | { 232 | "c": "#D1C4E9" 233 | }, 234 | "Emoji layer lock", 235 | "Function layer lock", 236 | { 237 | "c": "#dcedc8" 238 | }, 239 | "Typing layer lock", 240 | { 241 | "c": "#ffecb3" 242 | }, 243 | "Gaming layer lock", 244 | { 245 | "x": 1 246 | }, 247 | "Gaming layer lock", 248 | { 249 | "c": "#dcedc8" 250 | }, 251 | "Typing layer lock", 252 | { 253 | "c": "#D1C4E9" 254 | }, 255 | "System layer lock", 256 | "World layer lock", 257 | { 258 | "c": "#cccccc", 259 | "a": 5 260 | }, 261 | "Num pad\n0", 262 | "Num pad\n.", 263 | "Num pad\nEnter", 264 | { 265 | "c": "#757575", 266 | "t": "#EEEEEE", 267 | "p": "SPACE", 268 | "a": 7 269 | }, 270 | "Magic" 271 | ], 272 | [ 273 | { 274 | "x": 5, 275 | "c": "#D1C4E9", 276 | "t": "#000000", 277 | "p": "CHICKLET" 278 | }, 279 | "Cursor layer lock", 280 | "Number layer lock", 281 | { 282 | "c": "#BBDEFB", 283 | "t": "#EEEEEE", 284 | "p": "SPACE", 285 | "fa": [ 286 | 9 287 | ], 288 | "n": true 289 | }, 290 | "", 291 | { 292 | "x": 1, 293 | "n": true 294 | }, 295 | "", 296 | { 297 | "c": "#D1C4E9", 298 | "t": "#000000", 299 | "p": "CHICKLET", 300 | "f": 3 301 | }, 302 | "Mouse layer lock", 303 | { 304 | "f": 3 305 | }, 306 | "Symbol layer lock" 307 | ] 308 | ] -------------------------------------------------------------------------------- /README/symbol-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7, 18 | "t": "#EEEEEE" 19 | }, 20 | "Reset", 21 | { 22 | "t": "#000000" 23 | }, 24 | "F7", 25 | "F8", 26 | "F9", 27 | { 28 | "t": "#EEEEEE" 29 | }, 30 | "Boot loader" 31 | ], 32 | [ 33 | { 34 | "c": "#d7ccc8", 35 | "t": "#000000", 36 | "f": 9 37 | }, 38 | ".", 39 | { 40 | "c": "#ffcdd2", 41 | "g": false 42 | }, 43 | "`", 44 | { 45 | "c": "#bbdefb", 46 | "f": 7 47 | }, 48 | "(", 49 | ")", 50 | { 51 | "c": "#ffecb3" 52 | }, 53 | ";", 54 | ",", 55 | { 56 | "c": "#cccccc", 57 | "a": 4, 58 | "f": 4, 59 | "w": 5, 60 | "h": 4, 61 | "d": true 62 | }, 63 | "

Symbol Layer

MoErgo Glove80 keyboard

", 64 | { 65 | "g": true, 66 | "a": 5, 67 | "f": 3 68 | }, 69 | "^\n6", 70 | "&\n7", 71 | "*\n8", 72 | "(\n9", 73 | ")\n0", 74 | "+\n=" 75 | ], 76 | [ 77 | { 78 | "c": "#e1bee7", 79 | "g": false, 80 | "a": 7, 81 | "f": 7 82 | }, 83 | "!", 84 | { 85 | "c": "#bbdefb" 86 | }, 87 | "{", 88 | { 89 | "c": "#ffcdd2" 90 | }, 91 | "'", 92 | "\"", 93 | { 94 | "c": "#bbdefb" 95 | }, 96 | "}", 97 | { 98 | "c": "#ffecb3" 99 | }, 100 | "?", 101 | { 102 | "x": 5, 103 | "c": "#BDBDBD" 104 | }, 105 | ";", 106 | { 107 | "c": "#cccccc", 108 | "f": 3 109 | }, 110 | "Shift\n\n\n\nShift", 111 | "Ctrl\n\n\n\nCtrl", 112 | "Alt\n\n\n\nAlt", 113 | "Win\n\n\n\nWin", 114 | { 115 | "g": true 116 | }, 117 | "Z" 118 | ], 119 | [ 120 | { 121 | "c": "#ffecb3", 122 | "g": false, 123 | "f": 7 124 | }, 125 | "#", 126 | "^", 127 | { 128 | "c": "#dcedc8" 129 | }, 130 | "=", 131 | { 132 | "c": "#ffccbc", 133 | "f": 9 134 | }, 135 | "_", 136 | { 137 | "c": "#ffecb3", 138 | "f": 7, 139 | "n": true 140 | }, 141 | "$", 142 | { 143 | "f": 9 144 | }, 145 | "*", 146 | { 147 | "x": 5, 148 | "c": "#BDBDBD" 149 | }, 150 | ".", 151 | { 152 | "c": "#a5d6a7", 153 | "f": 3, 154 | "n": true 155 | }, 156 | "Back space", 157 | "Tab", 158 | "Space\n\n\n\nAltGr", 159 | "Enter", 160 | { 161 | "c": "#cccccc", 162 | "g": true 163 | }, 164 | "Q" 165 | ], 166 | [ 167 | { 168 | "c": "#e1bee7", 169 | "g": false, 170 | "f": 8 171 | }, 172 | "~", 173 | { 174 | "c": "#dcedc8", 175 | "f": 7 176 | }, 177 | "<", 178 | "|", 179 | { 180 | "f": 9 181 | }, 182 | "-", 183 | { 184 | "f": 7 185 | }, 186 | ">", 187 | { 188 | "c": "#ffecb3" 189 | }, 190 | "/", 191 | { 192 | "x": 5, 193 | "c": "#BDBDBD" 194 | }, 195 | "/", 196 | { 197 | "c": "#a5d6a7", 198 | "f": 3 199 | }, 200 | "Delete", 201 | "Shift-Tab", 202 | { 203 | "c": "#cccccc", 204 | "g": true 205 | }, 206 | "F", 207 | "P", 208 | "Shift" 209 | ], 210 | [ 211 | { 212 | "y": -0.04999999999999982, 213 | "x": 6.95, 214 | "c": "#FFFF8D", 215 | "g": false, 216 | "p": "FLAT", 217 | "f": 2, 218 | "w": 1.1, 219 | "h": 2.7, 220 | "d": true 221 | }, 222 | "" 223 | ], 224 | [ 225 | { 226 | "y": -0.9500000000000002, 227 | "c": "#ffecb3", 228 | "p": "CHICKLET", 229 | "f": 7 230 | }, 231 | "@", 232 | { 233 | "c": "#ffccbc" 234 | }, 235 | "&", 236 | { 237 | "c": "#bbdefb", 238 | "f": 6 239 | }, 240 | "[", 241 | "]", 242 | { 243 | "c": "#ffccbc", 244 | "f": 8 245 | }, 246 | "+", 247 | { 248 | "c": "#e1bee7", 249 | "f": 7 250 | }, 251 | "\\", 252 | { 253 | "c": "#ffecb3", 254 | "f": 9 255 | }, 256 | ".", 257 | "*", 258 | { 259 | "x": 1, 260 | "c": "#cccccc", 261 | "g": true, 262 | "f": 3, 263 | "fa": [ 264 | 9 265 | ] 266 | }, 267 | "⇐", 268 | "⇒", 269 | { 270 | "f": 3 271 | }, 272 | "Enter\n\n\n\nSystem", 273 | { 274 | "c": "#BDBDBD", 275 | "g": false, 276 | "f": 7 277 | }, 278 | "(", 279 | { 280 | "f": 6 281 | }, 282 | "[", 283 | "]", 284 | { 285 | "f": 7 286 | }, 287 | ")", 288 | { 289 | "c": "#cccccc", 290 | "g": true, 291 | "f": 3 292 | }, 293 | "F6" 294 | ], 295 | [ 296 | { 297 | "x": 5, 298 | "c": "#ffecb3", 299 | "g": false, 300 | "f": 7, 301 | "n": true 302 | }, 303 | "%", 304 | { 305 | "f": 9 306 | }, 307 | ":", 308 | { 309 | "f": 7 310 | }, 311 | ";", 312 | { 313 | "x": 1, 314 | "c": "#757575", 315 | "t": "#EEEEEE", 316 | "f": 3 317 | }, 318 | "Unlock layer", 319 | { 320 | "c": "#cccccc", 321 | "t": "#000000", 322 | "g": true 323 | }, 324 | "Tab\n\n\n\nMouse", 325 | { 326 | "c": "#D1C4E9", 327 | "g": false, 328 | "p": "SPACE", 329 | "fa": [ 330 | 9 331 | ], 332 | "n": true 333 | }, 334 | "" 335 | ] 336 | ] -------------------------------------------------------------------------------- /README/number-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 5 10 | }, 11 | "|\n\\", 12 | { 13 | "a": 7 14 | }, 15 | "F2", 16 | "F3", 17 | "F4", 18 | { 19 | "t": "#EEEEEE" 20 | }, 21 | "Reset", 22 | { 23 | "x": 7, 24 | "t": "#000000" 25 | }, 26 | "F6", 27 | "F7", 28 | "F8", 29 | "F9", 30 | "F10" 31 | ], 32 | [ 33 | { 34 | "c": "#ffccbc", 35 | "g": false 36 | }, 37 | "Escape", 38 | "Enter", 39 | "Space", 40 | "Tab", 41 | "Delete", 42 | "Insert", 43 | { 44 | "c": "#cccccc", 45 | "a": 4, 46 | "f": 4, 47 | "w": 5, 48 | "h": 4, 49 | "d": true 50 | }, 51 | "

Number Layer

MoErgo Glove80 keyboard

", 52 | { 53 | "c": "#ffecb3", 54 | "a": 7, 55 | "f": 9 56 | }, 57 | "~", 58 | { 59 | "c": "#ffccbc", 60 | "f": 6 61 | }, 62 | "^", 63 | "#", 64 | "$", 65 | { 66 | "c": "#ffecb3" 67 | }, 68 | "!", 69 | { 70 | "c": "#C5CAE9" 71 | }, 72 | "|" 73 | ], 74 | [ 75 | { 76 | "c": "#dcedc8", 77 | "f": 5 78 | }, 79 | "a\n\n\n\nAltGr", 80 | { 81 | "c": "#cccccc", 82 | "f": 3 83 | }, 84 | "Shift (sticky)", 85 | { 86 | "c": "#e1bee7" 87 | }, 88 | "Redo", 89 | "Undo", 90 | { 91 | "c": "#ffccbc" 92 | }, 93 | "Back space", 94 | { 95 | "c": "#dcedc8", 96 | "f": 5 97 | }, 98 | "d", 99 | { 100 | "x": 5, 101 | "c": "#C5CAE9" 102 | }, 103 | "G", 104 | { 105 | "c": "#DCEDC8", 106 | "f": 6 107 | }, 108 | "7", 109 | "8", 110 | "9", 111 | { 112 | "c": "#e1bee7", 113 | "f": 9 114 | }, 115 | ":", 116 | { 117 | "f": 7 118 | }, 119 | "%" 120 | ], 121 | [ 122 | { 123 | "c": "#dcedc8", 124 | "f": 5 125 | }, 126 | "b", 127 | { 128 | "c": "#cccccc", 129 | "f": 3 130 | }, 131 | "Win\n\n\n\nWin", 132 | "Alt\n\n\n\nAlt", 133 | "Ctrl\n\n\n\nCtrl", 134 | { 135 | "n": true 136 | }, 137 | "Shift\n\n\n\nShift", 138 | { 139 | "c": "#dcedc8", 140 | "f": 5 141 | }, 142 | "e", 143 | { 144 | "x": 5, 145 | "c": "#C5CAE9" 146 | }, 147 | "k", 148 | { 149 | "c": "#DCEDC8", 150 | "f": 6, 151 | "n": true 152 | }, 153 | "4\n\n\n\nShift", 154 | "5\n\n\n\nCtrl", 155 | "6\n\n\n\nAlt", 156 | { 157 | "c": "#e1bee7", 158 | "f": 9 159 | }, 160 | "-\n\n\n\nWin", 161 | { 162 | "f": 6 163 | }, 164 | "+" 165 | ], 166 | [ 167 | { 168 | "c": "#dcedc8", 169 | "f": 5 170 | }, 171 | "c", 172 | { 173 | "c": "#bbdefb", 174 | "t": "#00000", 175 | "f": 3 176 | }, 177 | "Select all", 178 | { 179 | "t": "#000000" 180 | }, 181 | "Select line\n\n\n\nMouse", 182 | "Select word\n\n\n\nSymbol", 183 | { 184 | "c": "#ffcdd2", 185 | "f": 6 186 | }, 187 | "𝒙", 188 | { 189 | "c": "#dcedc8", 190 | "f": 5 191 | }, 192 | "f", 193 | { 194 | "x": 5, 195 | "c": "#C5CAE9" 196 | }, 197 | "j", 198 | { 199 | "c": "#DCEDC8", 200 | "f": 6 201 | }, 202 | "1", 203 | "2", 204 | "3\n\n\n\nAltGr", 205 | { 206 | "c": "#e1bee7" 207 | }, 208 | "/", 209 | { 210 | "f": 9 211 | }, 212 | "*" 213 | ], 214 | [ 215 | { 216 | "y": -0.04999999999999982, 217 | "x": 6.95, 218 | "c": "#FFFF8D", 219 | "p": "FLAT", 220 | "f": 2, 221 | "w": 1.1, 222 | "h": 2.7, 223 | "d": true 224 | }, 225 | "" 226 | ], 227 | [ 228 | { 229 | "y": -0.9500000000000002, 230 | "c": "#cccccc", 231 | "g": true, 232 | "p": "CHICKLET", 233 | "f": 3, 234 | "fa": [ 235 | 9 236 | ] 237 | }, 238 | "⇑", 239 | "⇓", 240 | { 241 | "c": "#bbdefb", 242 | "g": false, 243 | "f": 3 244 | }, 245 | "Extend line", 246 | { 247 | "f": 3 248 | }, 249 | "Extend word", 250 | { 251 | "c": "#ffcdd2", 252 | "f": 7 253 | }, 254 | "_", 255 | { 256 | "c": "#cccccc", 257 | "g": true, 258 | "f": 3 259 | }, 260 | "Alt-Tab\n\n\n\nCursor", 261 | { 262 | "a": 5 263 | }, 264 | "<\n,", 265 | { 266 | "a": 7 267 | }, 268 | "Caps word", 269 | { 270 | "x": 1, 271 | "c": "#ffccbc", 272 | "g": false, 273 | "a": 5, 274 | "f": 4 275 | }, 276 | "{\n[", 277 | "}\n]", 278 | { 279 | "c": "#ffecb3", 280 | "a": 7, 281 | "f": 8 282 | }, 283 | "=", 284 | { 285 | "f": 6 286 | }, 287 | "<", 288 | { 289 | "c": "#ffccbc", 290 | "f": 5 291 | }, 292 | "(", 293 | ")", 294 | { 295 | "c": "#ffecb3", 296 | "f": 6 297 | }, 298 | ">", 299 | { 300 | "c": "#ffccbc" 301 | }, 302 | "@" 303 | ], 304 | [ 305 | { 306 | "x": 5, 307 | "c": "#e1bee7", 308 | "f": 3 309 | }, 310 | "Num lock", 311 | { 312 | "c": "#D1C4E9", 313 | "p": "SPACE", 314 | "fa": [ 315 | 9 316 | ], 317 | "n": true 318 | }, 319 | "", 320 | { 321 | "c": "#757575", 322 | "t": "#EEEEEE", 323 | "p": "CHICKLET", 324 | "f": 3 325 | }, 326 | "Unlock layer", 327 | { 328 | "x": 1, 329 | "c": "#ffccbc", 330 | "t": "#000000", 331 | "f": 8 332 | }, 333 | ",\n\n\n\nMouse", 334 | ".\n\n\n\nLight", 335 | { 336 | "c": "#DCEDC8", 337 | "f": 6, 338 | "n": true 339 | }, 340 | "0\n\n\n\nSymbol" 341 | ] 342 | ] -------------------------------------------------------------------------------- /README/mouse-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 7, 18 | "t": "#EEEEEE" 19 | }, 20 | "Reset", 21 | { 22 | "t": "#000000" 23 | }, 24 | "F7", 25 | "F8", 26 | "F9", 27 | { 28 | "t": "#EEEEEE" 29 | }, 30 | "Boot loader" 31 | ], 32 | [ 33 | { 34 | "t": "#000000", 35 | "a": 5 36 | }, 37 | "|\n\\", 38 | "!\n1", 39 | "@\n2", 40 | "#\n3", 41 | "$\n4", 42 | "%\n5", 43 | { 44 | "g": false, 45 | "a": 4, 46 | "f": 4, 47 | "w": 5, 48 | "h": 4, 49 | "d": true 50 | }, 51 | "

Mouse Layer

MoErgo Glove80 keyboard

", 52 | { 53 | "g": true, 54 | "a": 5, 55 | "f": 3 56 | }, 57 | "^\n6", 58 | "&\n7", 59 | "*\n8", 60 | "(\n9", 61 | ")\n0", 62 | "+\n=" 63 | ], 64 | [ 65 | "~\n`", 66 | { 67 | "a": 7 68 | }, 69 | "B", 70 | { 71 | "c": "#dcedc8", 72 | "g": false 73 | }, 74 | "Wheel left", 75 | { 76 | "c": "#BBDEFB", 77 | "f": 9 78 | }, 79 | "↑", 80 | { 81 | "c": "#dcedc8", 82 | "f": 3 83 | }, 84 | "Wheel right", 85 | { 86 | "c": "#cccccc", 87 | "g": true, 88 | "a": 5 89 | }, 90 | "\"\n'", 91 | { 92 | "x": 5, 93 | "c": "#e1bee7", 94 | "g": false, 95 | "a": 7, 96 | "f": 5, 97 | "fa": [ 98 | 3 99 | ] 100 | }, 101 | "Middle click", 102 | { 103 | "c": "#cccccc", 104 | "f": 3 105 | }, 106 | "Shift\n\n\n\nShift", 107 | "Ctrl\n\n\n\nCtrl", 108 | "Alt\n\n\n\nAlt", 109 | "Win\n\n\n\nWin", 110 | { 111 | "g": true 112 | }, 113 | "Z" 114 | ], 115 | [ 116 | { 117 | "a": 5, 118 | "fa": [ 119 | 1 120 | ] 121 | }, 122 | "Caps lock\nCaps word", 123 | { 124 | "a": 7, 125 | "f": 3 126 | }, 127 | "Mouse accel 0", 128 | { 129 | "c": "#BBDEFB", 130 | "g": false, 131 | "f": 9 132 | }, 133 | "←", 134 | "↓", 135 | { 136 | "n": true 137 | }, 138 | "→", 139 | { 140 | "c": "#cccccc", 141 | "g": true, 142 | "a": 5, 143 | "f": 3 144 | }, 145 | "<\n,", 146 | { 147 | "x": 5, 148 | "c": "#ffecb3", 149 | "g": false, 150 | "a": 7, 151 | "f": 5, 152 | "fa": [ 153 | 3 154 | ] 155 | }, 156 | "Left click", 157 | { 158 | "c": "#BBDEFB", 159 | "f": 9, 160 | "n": true 161 | }, 162 | "←", 163 | "↑", 164 | "↓", 165 | "→", 166 | { 167 | "c": "#cccccc", 168 | "g": true, 169 | "f": 3 170 | }, 171 | "Q" 172 | ], 173 | [ 174 | "Shift", 175 | "Mouse accel 1", 176 | "Mouse accel 2", 177 | { 178 | "c": "#dcedc8", 179 | "g": false 180 | }, 181 | "Wheel down", 182 | "Wheel up", 183 | { 184 | "c": "#cccccc", 185 | "g": true, 186 | "a": 5 187 | }, 188 | "_\n-", 189 | { 190 | "x": 5, 191 | "c": "#ffccbc", 192 | "g": false, 193 | "a": 7, 194 | "f": 5, 195 | "fa": [ 196 | 3 197 | ] 198 | }, 199 | "Right click", 200 | { 201 | "c": "#dcedc8", 202 | "f": 3 203 | }, 204 | "Wheel left", 205 | "Wheel up", 206 | "Wheel down", 207 | "Wheel right", 208 | { 209 | "c": "#cccccc", 210 | "g": true 211 | }, 212 | "Shift" 213 | ], 214 | [ 215 | { 216 | "y": -0.04999999999999982, 217 | "x": 6.95, 218 | "c": "#FFFF8D", 219 | "p": "FLAT", 220 | "f": 2, 221 | "w": 1.1, 222 | "h": 2.7, 223 | "d": true 224 | }, 225 | "" 226 | ], 227 | [ 228 | { 229 | "y": -0.9500000000000002, 230 | "c": "#cccccc", 231 | "t": "#EEEEEE", 232 | "p": "CHICKLET", 233 | "f": 3 234 | }, 235 | "Magic", 236 | { 237 | "t": "#000000" 238 | }, 239 | "Home", 240 | "Page up", 241 | "Page down", 242 | "End", 243 | { 244 | "c": "#e1bee7", 245 | "g": false, 246 | "f": 5, 247 | "fa": [ 248 | 3 249 | ] 250 | }, 251 | "Middle click", 252 | { 253 | "c": "#cccccc", 254 | "g": true 255 | }, 256 | "Mouse button 4", 257 | "Mouse button 5", 258 | { 259 | "x": 1, 260 | "f": 3, 261 | "fa": [ 262 | 9 263 | ] 264 | }, 265 | "⇐", 266 | "⇒", 267 | { 268 | "f": 3 269 | }, 270 | "Enter\n\n\n\nSystem", 271 | { 272 | "a": 5, 273 | "f": 3 274 | }, 275 | "<\n(", 276 | { 277 | "f": 3 278 | }, 279 | "{\n[", 280 | { 281 | "f": 3 282 | }, 283 | "}\n]", 284 | { 285 | "f": 3 286 | }, 287 | ">\n)", 288 | { 289 | "a": 7, 290 | "f": 3 291 | }, 292 | "F6" 293 | ], 294 | [ 295 | { 296 | "x": 5, 297 | "c": "#ffecb3", 298 | "g": false, 299 | "f": 5, 300 | "fa": [ 301 | 3 302 | ], 303 | "n": true 304 | }, 305 | "Left click", 306 | { 307 | "c": "#ffccbc" 308 | }, 309 | "Right click", 310 | { 311 | "c": "#cccccc", 312 | "t": "#EEEEEE", 313 | "g": true, 314 | "f": 3 315 | }, 316 | "Lower", 317 | { 318 | "x": 1, 319 | "c": "#757575", 320 | "g": false 321 | }, 322 | "Unlock layer", 323 | { 324 | "c": "#D1C4E9", 325 | "t": "#000000", 326 | "p": "SPACE", 327 | "fa": [ 328 | 9 329 | ], 330 | "n": true 331 | }, 332 | "", 333 | { 334 | "c": "#cccccc", 335 | "g": true, 336 | "p": "CHICKLET", 337 | "f": 3, 338 | "n": true 339 | }, 340 | "Space\n\n\n\nSymbol" 341 | ] 342 | ] -------------------------------------------------------------------------------- /README/template-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}\nspan.left {\n display: block;\n text-align: center;\n transform: rotate(-90deg);\n padding-left: 8em;\n padding-bottom: 11em;\n}\nspan.right {\n display: block;\n text-align: center;\n transform: rotate(90deg);\n margin-left: -1.25em;\n padding-right: 9.5em;\n padding-bottom: 12em;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7 9 | }, 10 | "F1", 11 | "F2", 12 | "F3", 13 | "F4", 14 | "F5", 15 | { 16 | "x": 7 17 | }, 18 | "F6", 19 | "F7", 20 | "F8", 21 | "F9", 22 | "F10" 23 | ], 24 | [ 25 | { 26 | "a": 5, 27 | "f": 5 28 | }, 29 | "+\n=", 30 | { 31 | "f": 4 32 | }, 33 | "!\n1", 34 | "@\n2", 35 | "#\n3", 36 | "$\n4", 37 | "%\n5", 38 | { 39 | "a": 4, 40 | "w": 5, 41 | "h": 4, 42 | "d": true 43 | }, 44 | "

(Template)

MoErgo Glove80 keyboard

", 45 | { 46 | "a": 5 47 | }, 48 | "^\n6", 49 | "&\n7", 50 | "*\n8", 51 | "(\n9", 52 | ")\n0", 53 | "|\n\\" 54 | ], 55 | [ 56 | { 57 | "f": 5 58 | }, 59 | "~\n`", 60 | { 61 | "a": 7, 62 | "f": 3 63 | }, 64 | "", 65 | { 66 | "c": "#BBDEFB", 67 | "p": "SPACE" 68 | }, 69 | "\n\n\n\nAltGr", 70 | { 71 | "c": "#cccccc", 72 | "p": "CHICKLET" 73 | }, 74 | "", 75 | "", 76 | { 77 | "f": 5 78 | }, 79 | "", 80 | { 81 | "x": 5 82 | }, 83 | "", 84 | { 85 | "f": 3 86 | }, 87 | "", 88 | "", 89 | { 90 | "c": "#BBDEFB", 91 | "p": "SPACE" 92 | }, 93 | "\n\n\n\nAltGr", 94 | { 95 | "c": "#cccccc", 96 | "p": "CHICKLET" 97 | }, 98 | "", 99 | "" 100 | ], 101 | [ 102 | "Caps word", 103 | { 104 | "c": "#FFCDD2", 105 | "p": "SPACE" 106 | }, 107 | "\n\n\n\nWin", 108 | { 109 | "c": "#FFCCBC" 110 | }, 111 | "\n\n\n\nAlt", 112 | { 113 | "c": "#FFECB3" 114 | }, 115 | "\n\n\n\nCtrl", 116 | { 117 | "c": "#DCEDC8", 118 | "n": true 119 | }, 120 | "\n\n\n\nShift", 121 | { 122 | "c": "#cccccc", 123 | "f": 4 124 | }, 125 | "\n\n\n\nRaw", 126 | { 127 | "x": 5 128 | }, 129 | "\n\n\n\nRaw", 130 | { 131 | "c": "#DCEDC8", 132 | "f": 3, 133 | "n": true 134 | }, 135 | "\n\n\n\nShift", 136 | { 137 | "c": "#FFECB3" 138 | }, 139 | "\n\n\n\nCtrl", 140 | { 141 | "c": "#FFCCBC" 142 | }, 143 | "\n\n\n\nAlt", 144 | { 145 | "c": "#FFCDD2" 146 | }, 147 | "\n\n\n\nWin", 148 | { 149 | "c": "#cccccc", 150 | "p": "CHICKLET" 151 | }, 152 | "" 153 | ], 154 | [ 155 | "Shift (sticky)", 156 | "", 157 | "", 158 | "", 159 | "", 160 | { 161 | "f": 4 162 | }, 163 | "", 164 | { 165 | "x": 5 166 | }, 167 | "", 168 | { 169 | "f": 3 170 | }, 171 | "", 172 | "", 173 | "", 174 | "", 175 | "Shift (sticky)" 176 | ], 177 | [ 178 | { 179 | "y": -0.04999999999999982, 180 | "x": 4.95, 181 | "c": "#FFD180", 182 | "p": "FLAT", 183 | "a": 5, 184 | "f": 2, 185 | "w": 1.1, 186 | "h": 2.7 187 | }, 188 | "\nAlt+Tab cursor layer", 189 | { 190 | "x": 0.9000000000000004, 191 | "c": "#FFFF8D", 192 | "w": 1.1, 193 | "h": 2.7 194 | }, 195 | "\nToggle game layer", 196 | { 197 | "x": 2.9000000000000004, 198 | "c": "#FFD180", 199 | "w": 1.1, 200 | "h": 2.7 201 | }, 202 | "\nHyper (sticky)" 203 | ], 204 | [ 205 | { 206 | "y": -0.9500000000000002, 207 | "c": "#757575", 208 | "t": "#EEEEEE", 209 | "p": "SPACE", 210 | "a": 7, 211 | "f": 3 212 | }, 213 | "Magic", 214 | { 215 | "c": "#cccccc", 216 | "t": "#000000", 217 | "p": "CHICKLET" 218 | }, 219 | "Home", 220 | "Page up", 221 | "Page down", 222 | { 223 | "c": "#d1c4e9", 224 | "p": "SPACE" 225 | }, 226 | "End\n\n\n\nEmoji", 227 | { 228 | "c": "#D1C4E9" 229 | }, 230 | "Escape\n\n\n\nFunction", 231 | { 232 | "c": "#cccccc", 233 | "p": "CHICKLET", 234 | "fa": [ 235 | 9 236 | ] 237 | }, 238 | "↑", 239 | "↓", 240 | { 241 | "x": 1 242 | }, 243 | "←", 244 | "→", 245 | { 246 | "c": "#D1C4E9", 247 | "p": "SPACE", 248 | "f": 3 249 | }, 250 | "Enter\n\n\n\nSystem", 251 | { 252 | "c": "#d1c4e9", 253 | "a": 5, 254 | "f": 4 255 | }, 256 | "<\n(\n\n\nWorld", 257 | { 258 | "c": "#cccccc", 259 | "p": "CHICKLET", 260 | "f": 3 261 | }, 262 | "{\n[", 263 | "}\n]", 264 | { 265 | "f": 4 266 | }, 267 | ">\n)", 268 | { 269 | "c": "#757575", 270 | "t": "#EEEEEE", 271 | "p": "SPACE", 272 | "a": 7, 273 | "f": 3 274 | }, 275 | "Magic" 276 | ], 277 | [ 278 | { 279 | "y": -0.040000000000000036, 280 | "x": 4.45, 281 | "c": "#B9F6CA", 282 | "t": "#000000", 283 | "p": "FLAT", 284 | "f": 2, 285 | "w": 2.625, 286 | "h": 1.11 287 | }, 288 | "Ctrl+Tab
cursor layer
", 289 | { 290 | "x": 2.874999999999999, 291 | "w": 2.625, 292 | "h": 1.11 293 | }, 294 | "Meh
(sticky)
" 295 | ], 296 | [ 297 | { 298 | "y": -0.96, 299 | "x": 5, 300 | "c": "#D1C4E9", 301 | "p": "SPACE", 302 | "f": 3, 303 | "n": true 304 | }, 305 | "Back space\n\n\n\nCursor", 306 | "Delete\n\n\n\nNumber", 307 | { 308 | "c": "#757575", 309 | "t": "#EEEEEE" 310 | }, 311 | "Lower", 312 | { 313 | "x": 1 314 | }, 315 | "Lower", 316 | { 317 | "c": "#D1C4E9", 318 | "t": "#000000" 319 | }, 320 | "Tab\n\n\n\nMouse", 321 | { 322 | "n": true 323 | }, 324 | "Space\n\n\n\nSymbol" 325 | ] 326 | ] -------------------------------------------------------------------------------- /README/world-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}\nsub, sup {\n font-size: xx-small;\n margin-left: -0.25ex;\n}\naside {\n color: red;\n margin-left: 1em !important;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 7 10 | }, 11 | "F1", 12 | "F2", 13 | "F3", 14 | "F4", 15 | "F5", 16 | { 17 | "x": 1.5, 18 | "c": "#FFFDE7", 19 | "g": false, 20 | "p": "FLAT", 21 | "a": 4, 22 | "f": 6, 23 | "w": 4, 24 | "h": 1.5 25 | }, 26 | "LALT\nLCTL\nRALT\nRCTL\n️‍‍\n\n\n\nRSFT\n✨ Legend ✨\nBase", 27 | { 28 | "x": 1.5, 29 | "c": "#cccccc", 30 | "t": "#EEEEEE", 31 | "g": true, 32 | "p": "CHICKLET", 33 | "a": 7, 34 | "f": 3 35 | }, 36 | "Reset", 37 | { 38 | "t": "#000000" 39 | }, 40 | "F7", 41 | "F8", 42 | "F9", 43 | { 44 | "t": "#EEEEEE" 45 | }, 46 | "Boot loader" 47 | ], 48 | [ 49 | { 50 | "t": "#000000", 51 | "a": 5 52 | }, 53 | "+\n=", 54 | { 55 | "a": 7, 56 | "fa": [ 57 | 4 58 | ] 59 | }, 60 | "¡", 61 | "¿", 62 | { 63 | "f": 3 64 | }, 65 | "J", 66 | { 67 | "f": 3 68 | }, 69 | "K", 70 | { 71 | "a": 5, 72 | "f": 3 73 | }, 74 | "º\n5", 75 | { 76 | "g": false, 77 | "a": 4, 78 | "f": 4, 79 | "w": 5, 80 | "h": 4, 81 | "d": true 82 | }, 83 | "

World Layer

MoErgo Glove80 keyboard

", 84 | { 85 | "g": true, 86 | "a": 5, 87 | "f": 3 88 | }, 89 | "^\n6", 90 | "&\n7", 91 | "*\n8", 92 | "(\n9", 93 | ")\n0", 94 | "|\n\\" 95 | ], 96 | [ 97 | "~\n`", 98 | { 99 | "g": false, 100 | "a": 7, 101 | "f": 6 102 | }, 103 | "°", 104 | { 105 | "a": 4 106 | }, 107 | "\nÿ\n\n\n\n\n\n\n\n\ný", 108 | "õ\nö\nø\nô\n\n\n\n\nò\n\nó", 109 | "\nü\n\n\n\n\n\n\nù\n\nú", 110 | { 111 | "g": true 112 | }, 113 | "«\n“\n「\n‘\n\n\n\n\n`´\n\n'\"", 114 | { 115 | "x": 5, 116 | "a": 5, 117 | "f": 3 118 | }, 119 | ":\n;", 120 | { 121 | "a": 7 122 | }, 123 | "L", 124 | { 125 | "g": false 126 | }, 127 | "LALT (sticky)", 128 | "RALT (sticky)\n\n\n\nAltGr", 129 | { 130 | "g": true 131 | }, 132 | "V", 133 | "Z" 134 | ], 135 | [ 136 | { 137 | "g": false, 138 | "a": 4, 139 | "f": 6 140 | }, 141 | "\n\n\n\n\n\n\n\n\n\n©®", 142 | "\nñ\n\nß\nWin\n\n\n\n\n\nç", 143 | "\nï\n\nî\n\n\n\n\nì\n\ní", 144 | { 145 | "a": 0 146 | }, 147 | "\në\næ\nê\n\næ\n\n\nè\n\né\nè", 148 | { 149 | "a": 4, 150 | "n": true 151 | }, 152 | "ã\nä\nå\nâ\n\n\n\n\nà\n\ná", 153 | { 154 | "g": true, 155 | "a": 5, 156 | "f": 3 157 | }, 158 | "<\n,", 159 | { 160 | "x": 5 161 | }, 162 | ">\n.", 163 | { 164 | "c": "#bbdefb", 165 | "g": false, 166 | "a": 7, 167 | "n": true 168 | }, 169 | "Shift (sticky)", 170 | { 171 | "c": "#cccccc" 172 | }, 173 | "LCTL (sticky)\n\n\n\nCtrl", 174 | "RCTL (sticky)\n\n\n\nAlt", 175 | "RSFT (sticky)\n\n\n\nWin", 176 | { 177 | "g": true 178 | }, 179 | "P" 180 | ], 181 | [ 182 | { 183 | "g": false, 184 | "a": 4, 185 | "f": 6, 186 | "fa": [ 187 | 0, 188 | 0, 189 | 3 190 | ] 191 | }, 192 | "¥\n€\n₩\n£\n\n\n\n\n¤\n\n$¢", 193 | { 194 | "f": 6 195 | }, 196 | "\n‘\n\n‚\n\n\n\n\n`\n\n‹«", 197 | { 198 | "a": 7 199 | }, 200 | "¡", 201 | "¿", 202 | { 203 | "a": 4, 204 | "f": 6 205 | }, 206 | "\n’\n\n‚\nAltGr\n\n\n\n´\n\n›»", 207 | { 208 | "g": true, 209 | "a": 7, 210 | "f": 3 211 | }, 212 | "Shift", 213 | { 214 | "x": 5, 215 | "a": 5 216 | }, 217 | "?\n/", 218 | { 219 | "a": 7 220 | }, 221 | "R", 222 | "M", 223 | "F", 224 | "Hyper", 225 | "Shift" 226 | ], 227 | [ 228 | { 229 | "y": -0.04999999999999982, 230 | "x": 6.95, 231 | "c": "#FFFF8D", 232 | "p": "FLAT", 233 | "f": 2, 234 | "w": 1.1, 235 | "h": 2.7, 236 | "d": true 237 | }, 238 | "" 239 | ], 240 | [ 241 | { 242 | "y": -0.9500000000000002, 243 | "c": "#cccccc", 244 | "g": false, 245 | "p": "CHICKLET", 246 | "f": 6 247 | }, 248 | "µ", 249 | "§", 250 | "¶", 251 | "º", 252 | "ª", 253 | { 254 | "g": true, 255 | "f": 3 256 | }, 257 | "Escape\n\n\n\nFunction", 258 | { 259 | "fa": [ 260 | 9 261 | ] 262 | }, 263 | "⇑", 264 | "⇓", 265 | { 266 | "x": 1 267 | }, 268 | "⇐", 269 | "⇒", 270 | { 271 | "a": 5, 272 | "f": 3 273 | }, 274 | "<\n(", 275 | { 276 | "c": "#D1C4E9", 277 | "g": false, 278 | "p": "SPACE", 279 | "a": 7, 280 | "f": 9, 281 | "n": true 282 | }, 283 | "", 284 | { 285 | "c": "#cccccc", 286 | "g": true, 287 | "p": "CHICKLET", 288 | "a": 5, 289 | "f": 3 290 | }, 291 | "{\n[", 292 | "}\n]", 293 | ">\n)", 294 | { 295 | "t": "#EEEEEE", 296 | "a": 7 297 | }, 298 | "Magic" 299 | ], 300 | [ 301 | { 302 | "x": 5, 303 | "t": "#000000", 304 | "n": true 305 | }, 306 | "Back space\n\n\n\nCursor", 307 | "Delete\n\n\n\nNumber", 308 | { 309 | "c": "#757575", 310 | "t": "#EEEEEE", 311 | "g": false 312 | }, 313 | "Unlock layer", 314 | { 315 | "x": 1 316 | }, 317 | "Unlock layer", 318 | { 319 | "c": "#cccccc", 320 | "t": "#000000", 321 | "g": true 322 | }, 323 | "Tab\n\n\n\nMouse", 324 | { 325 | "n": true 326 | }, 327 | "Space\n\n\n\nSymbol" 328 | ] 329 | ] -------------------------------------------------------------------------------- /README/engrammer-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}\nspan.left {\n display: block;\n text-align: center;\n transform: rotate(-90deg);\n padding-left: 8em;\n padding-bottom: 11em;\n}\nspan.right {\n display: block;\n text-align: center;\n transform: rotate(90deg);\n margin-left: -1.25em;\n padding-right: 9.5em;\n padding-bottom: 12em;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7 9 | }, 10 | "F1", 11 | "F2", 12 | "F3", 13 | "F4", 14 | "F5", 15 | { 16 | "x": 7 17 | }, 18 | "F6", 19 | "F7", 20 | "F8", 21 | "F9", 22 | "F10" 23 | ], 24 | [ 25 | { 26 | "a": 5, 27 | "f": 5 28 | }, 29 | "+\n=", 30 | { 31 | "f": 4 32 | }, 33 | "!\n1", 34 | "@\n2", 35 | "#\n3", 36 | "$\n4", 37 | "%\n5", 38 | { 39 | "a": 4, 40 | "w": 5, 41 | "h": 4, 42 | "d": true 43 | }, 44 | "

Base Layer

MoErgo Glove80 keyboard

", 45 | { 46 | "a": 5 47 | }, 48 | "^\n6", 49 | "&\n7", 50 | "*\n8", 51 | "(\n9", 52 | ")\n0", 53 | "|\n\\" 54 | ], 55 | [ 56 | { 57 | "f": 5 58 | }, 59 | "~\n`", 60 | { 61 | "a": 7, 62 | "f": 3 63 | }, 64 | "B", 65 | { 66 | "c": "#BBDEFB", 67 | "p": "SPACE" 68 | }, 69 | "Y\n\n\n\nAltGr", 70 | { 71 | "c": "#cccccc", 72 | "p": "CHICKLET" 73 | }, 74 | "O", 75 | "U", 76 | { 77 | "a": 5, 78 | "f": 5 79 | }, 80 | "\"\n'", 81 | { 82 | "x": 5 83 | }, 84 | ":\n;", 85 | { 86 | "a": 7, 87 | "f": 3 88 | }, 89 | "L", 90 | "D", 91 | { 92 | "c": "#BBDEFB", 93 | "p": "SPACE" 94 | }, 95 | "W\n\n\n\nAltGr", 96 | { 97 | "c": "#cccccc", 98 | "p": "CHICKLET" 99 | }, 100 | "V", 101 | "Z" 102 | ], 103 | [ 104 | "Caps word", 105 | { 106 | "c": "#FFCDD2", 107 | "p": "SPACE" 108 | }, 109 | "C\n\n\n\nWin", 110 | { 111 | "c": "#FFCCBC" 112 | }, 113 | "I\n\n\n\nAlt", 114 | { 115 | "c": "#FFECB3" 116 | }, 117 | "E\n\n\n\nCtrl", 118 | { 119 | "c": "#DCEDC8", 120 | "n": true 121 | }, 122 | "A\n\n\n\nShift", 123 | { 124 | "c": "#cccccc", 125 | "a": 5, 126 | "f": 4 127 | }, 128 | "<\n,\n\n\nRaw", 129 | { 130 | "x": 5 131 | }, 132 | ">\n.\n\n\nRaw", 133 | { 134 | "c": "#DCEDC8", 135 | "a": 7, 136 | "f": 3, 137 | "n": true 138 | }, 139 | "H\n\n\n\nShift", 140 | { 141 | "c": "#FFECB3" 142 | }, 143 | "T\n\n\n\nCtrl", 144 | { 145 | "c": "#FFCCBC" 146 | }, 147 | "S\n\n\n\nAlt", 148 | { 149 | "c": "#FFCDD2" 150 | }, 151 | "N\n\n\n\nWin", 152 | { 153 | "c": "#cccccc", 154 | "p": "CHICKLET" 155 | }, 156 | "Q" 157 | ], 158 | [ 159 | "Shift (sticky)", 160 | "G", 161 | "X", 162 | "J", 163 | "K", 164 | { 165 | "a": 5, 166 | "f": 4 167 | }, 168 | "_\n-", 169 | { 170 | "x": 5 171 | }, 172 | "?\n/", 173 | { 174 | "a": 7, 175 | "f": 3 176 | }, 177 | "R", 178 | "M", 179 | "F", 180 | "P", 181 | "Shift (sticky)" 182 | ], 183 | [ 184 | { 185 | "y": -0.04999999999999982, 186 | "x": 4.95, 187 | "c": "#FFD180", 188 | "p": "FLAT", 189 | "a": 5, 190 | "f": 2, 191 | "w": 1.1, 192 | "h": 2.7 193 | }, 194 | "\nAlt+Tab cursor layer", 195 | { 196 | "x": 0.9000000000000004, 197 | "c": "#FFFF8D", 198 | "w": 1.1, 199 | "h": 2.7 200 | }, 201 | "\nToggle game layer", 202 | { 203 | "x": 2.9000000000000004, 204 | "c": "#FFD180", 205 | "w": 1.1, 206 | "h": 2.7 207 | }, 208 | "\nHyper (sticky)" 209 | ], 210 | [ 211 | { 212 | "y": -0.9500000000000002, 213 | "c": "#757575", 214 | "t": "#EEEEEE", 215 | "p": "SPACE", 216 | "a": 7, 217 | "f": 3 218 | }, 219 | "Magic", 220 | { 221 | "c": "#cccccc", 222 | "t": "#000000", 223 | "p": "CHICKLET" 224 | }, 225 | "Home", 226 | "Page up", 227 | "Page down", 228 | { 229 | "c": "#d1c4e9", 230 | "p": "SPACE" 231 | }, 232 | "End\n\n\n\nEmoji", 233 | { 234 | "c": "#D1C4E9" 235 | }, 236 | "Escape\n\n\n\nFunction", 237 | { 238 | "c": "#cccccc", 239 | "p": "CHICKLET", 240 | "fa": [ 241 | 9 242 | ] 243 | }, 244 | "↑", 245 | "↓", 246 | { 247 | "x": 1 248 | }, 249 | "←", 250 | "→", 251 | { 252 | "c": "#D1C4E9", 253 | "p": "SPACE", 254 | "f": 3 255 | }, 256 | "Enter\n\n\n\nSystem", 257 | { 258 | "c": "#d1c4e9", 259 | "a": 5, 260 | "f": 4 261 | }, 262 | "<\n(\n\n\nWorld", 263 | { 264 | "c": "#cccccc", 265 | "p": "CHICKLET", 266 | "f": 3 267 | }, 268 | "{\n[", 269 | "}\n]", 270 | { 271 | "f": 4 272 | }, 273 | ">\n)", 274 | { 275 | "c": "#757575", 276 | "t": "#EEEEEE", 277 | "p": "SPACE", 278 | "a": 7, 279 | "f": 3 280 | }, 281 | "Magic" 282 | ], 283 | [ 284 | { 285 | "y": -0.040000000000000036, 286 | "x": 4.45, 287 | "c": "#B9F6CA", 288 | "t": "#000000", 289 | "p": "FLAT", 290 | "f": 2, 291 | "w": 2.625, 292 | "h": 1.11 293 | }, 294 | "Ctrl+Tab
cursor layer
", 295 | { 296 | "x": 2.874999999999999, 297 | "w": 2.625, 298 | "h": 1.11 299 | }, 300 | "Meh
(sticky)
" 301 | ], 302 | [ 303 | { 304 | "y": -0.96, 305 | "x": 5, 306 | "c": "#D1C4E9", 307 | "p": "SPACE", 308 | "f": 3, 309 | "n": true 310 | }, 311 | "Back space\n\n\n\nCursor", 312 | "Delete\n\n\n\nNumber", 313 | { 314 | "c": "#757575", 315 | "t": "#EEEEEE" 316 | }, 317 | "Lower", 318 | { 319 | "x": 1 320 | }, 321 | "Lower", 322 | { 323 | "c": "#D1C4E9", 324 | "t": "#000000" 325 | }, 326 | "Tab\n\n\n\nMouse", 327 | { 328 | "n": true 329 | }, 330 | "Space\n\n\n\nSymbol" 331 | ] 332 | ] -------------------------------------------------------------------------------- /README/function-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}" 4 | }, 5 | [ 6 | { 7 | "g": true, 8 | "p": "CHICKLET", 9 | "a": 5 10 | }, 11 | "|\n\\", 12 | { 13 | "a": 7 14 | }, 15 | "F2", 16 | "F3", 17 | "F4", 18 | { 19 | "t": "#EEEEEE" 20 | }, 21 | "Reset", 22 | { 23 | "x": 7, 24 | "t": "#000000" 25 | }, 26 | "F6", 27 | "F7", 28 | "F8", 29 | "F9", 30 | "F10" 31 | ], 32 | [ 33 | { 34 | "c": "#ffccbc", 35 | "g": false 36 | }, 37 | "Escape", 38 | "Enter", 39 | "Space", 40 | "Tab", 41 | "Delete", 42 | "Insert", 43 | { 44 | "c": "#cccccc", 45 | "a": 4, 46 | "f": 4, 47 | "w": 5, 48 | "h": 4, 49 | "d": true 50 | }, 51 | "

Function Layer

MoErgo Glove80 keyboard

", 52 | { 53 | "c": "#bbdefb", 54 | "a": 7, 55 | "f": 3 56 | }, 57 | "Media player", 58 | "Play", 59 | "Prev track", 60 | "Next track", 61 | "Stop", 62 | "Eject" 63 | ], 64 | [ 65 | { 66 | "c": "#cccccc", 67 | "g": true, 68 | "a": 5 69 | }, 70 | "~\n`", 71 | { 72 | "g": false, 73 | "a": 7 74 | }, 75 | "Shift (sticky)", 76 | { 77 | "c": "#e1bee7" 78 | }, 79 | "Redo", 80 | "Undo", 81 | { 82 | "c": "#ffccbc" 83 | }, 84 | "Back space", 85 | { 86 | "c": "#cccccc", 87 | "g": true, 88 | "a": 5 89 | }, 90 | "\"\n'", 91 | { 92 | "x": 5, 93 | "c": "#FFECB3", 94 | "g": false, 95 | "a": 7 96 | }, 97 | "Calc-ulator", 98 | { 99 | "c": "#dcedc8", 100 | "f": 4 101 | }, 102 | "F7", 103 | "F8", 104 | "F9", 105 | { 106 | "c": "#ffccbc" 107 | }, 108 | "F10", 109 | { 110 | "f": 3, 111 | "fa": [ 112 | 4 113 | ] 114 | }, 115 | "F13" 116 | ], 117 | [ 118 | { 119 | "c": "#cccccc", 120 | "g": true, 121 | "f": 3 122 | }, 123 | "Caps lock", 124 | { 125 | "g": false, 126 | "f": 3 127 | }, 128 | "Win\n\n\n\nWin", 129 | { 130 | "f": 3 131 | }, 132 | "Alt\n\n\n\nAlt", 133 | { 134 | "f": 3 135 | }, 136 | "Ctrl\n\n\n\nCtrl", 137 | { 138 | "f": 3, 139 | "n": true 140 | }, 141 | "Shift\n\n\n\nShift", 142 | { 143 | "g": true, 144 | "a": 5, 145 | "f": 3 146 | }, 147 | "<\n,", 148 | { 149 | "x": 5, 150 | "c": "#FFECB3", 151 | "g": false, 152 | "a": 7, 153 | "f": 3 154 | }, 155 | "Web browser", 156 | { 157 | "c": "#dcedc8", 158 | "f": 4, 159 | "n": true 160 | }, 161 | "F4\n\n\n\nShift", 162 | "F5\n\n\n\nCtrl", 163 | "F6\n\n\n\nAlt", 164 | { 165 | "c": "#ffccbc" 166 | }, 167 | "F11\n\n\n\nWin", 168 | { 169 | "f": 3, 170 | "fa": [ 171 | 4 172 | ] 173 | }, 174 | "F14" 175 | ], 176 | [ 177 | { 178 | "c": "#cccccc", 179 | "g": true, 180 | "f": 3 181 | }, 182 | "Shift", 183 | { 184 | "c": "#bbdefb", 185 | "t": "#00000", 186 | "g": false, 187 | "f": 3 188 | }, 189 | "Select all", 190 | { 191 | "t": "#000000", 192 | "f": 3 193 | }, 194 | "Select line\n\n\n\nMouse", 195 | { 196 | "f": 3 197 | }, 198 | "Select word\n\n\n\nSymbol", 199 | { 200 | "c": "#cccccc", 201 | "g": true, 202 | "f": 3 203 | }, 204 | "K", 205 | { 206 | "a": 5, 207 | "f": 3 208 | }, 209 | "_\n-", 210 | { 211 | "x": 5, 212 | "c": "#FFECB3", 213 | "g": false, 214 | "a": 7, 215 | "f": 3 216 | }, 217 | "My PC", 218 | { 219 | "c": "#dcedc8", 220 | "f": 4 221 | }, 222 | "F1", 223 | "F2", 224 | "F3\n\n\n\nAltGr", 225 | { 226 | "c": "#ffccbc" 227 | }, 228 | "F12", 229 | { 230 | "f": 3, 231 | "fa": [ 232 | 4 233 | ] 234 | }, 235 | "F15" 236 | ], 237 | [ 238 | { 239 | "y": -0.04999999999999982, 240 | "x": 6.95, 241 | "c": "#FFFF8D", 242 | "p": "FLAT", 243 | "f": 2, 244 | "w": 1.1, 245 | "h": 2.7, 246 | "d": true 247 | }, 248 | "" 249 | ], 250 | [ 251 | { 252 | "y": -0.9500000000000002, 253 | "c": "#cccccc", 254 | "g": true, 255 | "p": "CHICKLET", 256 | "f": 3 257 | }, 258 | "F5", 259 | "Home", 260 | { 261 | "c": "#bbdefb", 262 | "g": false 263 | }, 264 | "Extend line", 265 | "Extend word", 266 | { 267 | "c": "#cccccc", 268 | "g": true 269 | }, 270 | "End", 271 | { 272 | "c": "#D1C4E9", 273 | "g": false, 274 | "p": "SPACE", 275 | "fa": [ 276 | 9 277 | ], 278 | "n": true 279 | }, 280 | "", 281 | { 282 | "c": "#cccccc", 283 | "g": true, 284 | "p": "CHICKLET" 285 | }, 286 | "⇑", 287 | "⇓", 288 | { 289 | "x": 1, 290 | "c": "#bbdefb", 291 | "g": false, 292 | "f": 3 293 | }, 294 | "Prev track", 295 | { 296 | "f": 3 297 | }, 298 | "Next track", 299 | { 300 | "f": 3 301 | }, 302 | "Play / pause", 303 | { 304 | "c": "#ffcdd2", 305 | "f": 3 306 | }, 307 | "Bright max", 308 | { 309 | "f": 3 310 | }, 311 | "Bright ➕", 312 | { 313 | "f": 3 314 | }, 315 | "Bright ➖", 316 | { 317 | "f": 3 318 | }, 319 | "Bright min", 320 | { 321 | "f": 3 322 | }, 323 | "Bright auto" 324 | ], 325 | [ 326 | { 327 | "x": 5, 328 | "c": "#cccccc", 329 | "g": true, 330 | "f": 3, 331 | "n": true 332 | }, 333 | "Back space\n\n\n\nCursor", 334 | { 335 | "f": 3 336 | }, 337 | "Delete\n\n\n\nNumber", 338 | { 339 | "c": "#757575", 340 | "t": "#EEEEEE", 341 | "g": false, 342 | "f": 3 343 | }, 344 | "Unlock layer", 345 | { 346 | "x": 1, 347 | "c": "#bbdefb", 348 | "t": "#000000", 349 | "f": 3 350 | }, 351 | "Mute\n\n\n\nSymbol", 352 | { 353 | "f": 3 354 | }, 355 | "Vol ➖\n\n\n\nLight", 356 | { 357 | "f": 3, 358 | "n": true 359 | }, 360 | "Vol ➕\n\n\n\nMouse" 361 | ] 362 | ] -------------------------------------------------------------------------------- /README/base-layer-diagram.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "css": "/* front legend */\n.keylabel10 div { \n font-size: xx-small;\n font-style: italic;\n text-shadow: 1px 1px 2px #FFD600;\n}\n/* description */\ncenter h2 {\n margin-top: 1em;\n font-weight: bold;\n}\ncenter ul {\n padding-left: 0;\n margin-top: 1em;\n padding-top: 1em;\n font-size: smaller;\n}\ncenter ul li {\n margin-top: 1ex;\n list-style-type: none;\n}\ncenter ul li a {\n font-weight: bold;\n}\ncenter .permalink {\n font-size: x-small;\n}\ncenter em {\n font-weight: normal;\n font-style: normal;\n}\nspan.left {\n display: block;\n text-align: center;\n transform: rotate(-90deg);\n padding-left: 8em;\n padding-bottom: 11em;\n}\nspan.right {\n display: block;\n text-align: center;\n transform: rotate(90deg);\n margin-left: -1.25em;\n padding-right: 9.5em;\n padding-bottom: 12em;\n}" 4 | }, 5 | [ 6 | { 7 | "p": "CHICKLET", 8 | "a": 7 9 | }, 10 | "Home", 11 | "End", 12 | { 13 | "f": 4 14 | }, 15 | "A", 16 | "B", 17 | "C", 18 | { 19 | "x": 7 20 | }, 21 | "D", 22 | "E", 23 | "F", 24 | { 25 | "f": 7 26 | }, 27 | "←", 28 | "→" 29 | ], 30 | [ 31 | { 32 | "f": 3 33 | }, 34 | "Page up", 35 | { 36 | "a": 5, 37 | "f": 4 38 | }, 39 | "!\n1", 40 | "@\n2", 41 | "#\n3", 42 | "$\n4", 43 | "%\n5", 44 | { 45 | "a": 4, 46 | "w": 5, 47 | "h": 4, 48 | "d": true 49 | }, 50 | "

Base Layer

MoErgo Glove80 keyboard

", 51 | { 52 | "a": 5 53 | }, 54 | "^\n6", 55 | "&\n7", 56 | "*\n8", 57 | "(\n9", 58 | ")\n0", 59 | { 60 | "a": 7, 61 | "f": 7 62 | }, 63 | "↑" 64 | ], 65 | [ 66 | { 67 | "f": 3 68 | }, 69 | "Page down", 70 | "B", 71 | { 72 | "c": "#BBDEFB", 73 | "p": "SPACE" 74 | }, 75 | "Y\n\n\n\nRight Alt", 76 | { 77 | "c": "#cccccc", 78 | "p": "CHICKLET" 79 | }, 80 | "O", 81 | "U", 82 | { 83 | "a": 5, 84 | "f": 4 85 | }, 86 | "?\n/", 87 | { 88 | "x": 5, 89 | "a": 7, 90 | "f": 3 91 | }, 92 | "X", 93 | "L", 94 | "D", 95 | { 96 | "c": "#BBDEFB", 97 | "p": "SPACE" 98 | }, 99 | "W\n\n\n\nRight Alt", 100 | { 101 | "c": "#cccccc", 102 | "p": "CHICKLET" 103 | }, 104 | "V", 105 | { 106 | "f": 7 107 | }, 108 | "↓" 109 | ], 110 | [ 111 | { 112 | "f": 3 113 | }, 114 | "Q", 115 | { 116 | "c": "#FFCDD2", 117 | "p": "SPACE" 118 | }, 119 | "C\n\n\n\nWin", 120 | { 121 | "c": "#FFCCBC" 122 | }, 123 | "I\n\n\n\nAlt", 124 | { 125 | "c": "#FFECB3" 126 | }, 127 | "E\n\n\n\nCtrl", 128 | { 129 | "c": "#DCEDC8", 130 | "n": true 131 | }, 132 | "A\n\n\n\nShift", 133 | { 134 | "c": "#cccccc", 135 | "a": 5, 136 | "f": 4 137 | }, 138 | "<\n,\n\n\nRaw", 139 | { 140 | "x": 5, 141 | "a": 7 142 | }, 143 | "K\n\n\n\nRaw", 144 | { 145 | "c": "#DCEDC8", 146 | "f": 3, 147 | "n": true 148 | }, 149 | "H\n\n\n\nShift", 150 | { 151 | "c": "#FFECB3" 152 | }, 153 | "T\n\n\n\nCtrl", 154 | { 155 | "c": "#FFCCBC" 156 | }, 157 | "N\n\n\n\nAlt", 158 | { 159 | "c": "#FFCDD2" 160 | }, 161 | "S\n\n\n\nWin", 162 | { 163 | "c": "#cccccc", 164 | "p": "CHICKLET" 165 | }, 166 | "Z" 167 | ], 168 | [ 169 | { 170 | "a": 5, 171 | "fa": [ 172 | 2, 173 | 1 174 | ] 175 | }, 176 | "Left\n(sticky)\n\n\n\n\nShift", 177 | { 178 | "f": 5 179 | }, 180 | "\"\n'", 181 | { 182 | "f": 4 183 | }, 184 | "_\n-", 185 | { 186 | "f": 5 187 | }, 188 | "+\n=", 189 | { 190 | "f": 4 191 | }, 192 | ">\n.", 193 | ":\n;", 194 | { 195 | "x": 5, 196 | "a": 7, 197 | "f": 3 198 | }, 199 | "J", 200 | "M", 201 | "G", 202 | "P", 203 | "F", 204 | { 205 | "a": 5, 206 | "fa": [ 207 | 2, 208 | 1 209 | ] 210 | }, 211 | "Right\n(sticky)\n\n\n\n\nShift" 212 | ], 213 | [ 214 | { 215 | "y": -0.04999999999999982, 216 | "x": 4.95, 217 | "c": "#FFD180", 218 | "p": "FLAT", 219 | "f": 2, 220 | "w": 1.1, 221 | "h": 2.7 222 | }, 223 | "\nAlt+Tab cursor layer", 224 | { 225 | "x": 0.9000000000000004, 226 | "c": "#FFFF8D", 227 | "w": 1.1, 228 | "h": 2.7 229 | }, 230 | "\nToggle game layer", 231 | { 232 | "x": 2.9000000000000004, 233 | "c": "#FFD180", 234 | "w": 1.1, 235 | "h": 2.7 236 | }, 237 | "\nHyper (sticky)" 238 | ], 239 | [ 240 | { 241 | "y": -0.9500000000000002, 242 | "c": "#757575", 243 | "t": "#EEEEEE", 244 | "p": "SPACE", 245 | "a": 7, 246 | "f": 3 247 | }, 248 | "Magic", 249 | { 250 | "c": "#cccccc", 251 | "t": "#000000", 252 | "p": "CHICKLET", 253 | "a": 5, 254 | "f": 5 255 | }, 256 | "~\n`", 257 | { 258 | "f": 4 259 | }, 260 | "{\n[", 261 | "}\n]", 262 | { 263 | "c": "#d1c4e9", 264 | "p": "SPACE" 265 | }, 266 | "|\n\\\n\n\nEmoji", 267 | { 268 | "c": "#D1C4E9", 269 | "a": 7, 270 | "f": 3 271 | }, 272 | "Escape\n\n\n\nFunction", 273 | { 274 | "c": "#cccccc", 275 | "p": "CHICKLET" 276 | }, 277 | "Caps word", 278 | "Caps lock", 279 | { 280 | "x": 1 281 | }, 282 | "Insert", 283 | "Delete", 284 | { 285 | "c": "#D1C4E9", 286 | "p": "SPACE" 287 | }, 288 | "Enter\n\n\n\nSystem", 289 | { 290 | "c": "#d1c4e9", 291 | "f": 4 292 | }, 293 | "<\n\n\n\nWorld", 294 | { 295 | "c": "#cccccc", 296 | "p": "CHICKLET" 297 | }, 298 | "(", 299 | ")", 300 | ">", 301 | { 302 | "c": "#757575", 303 | "t": "#EEEEEE", 304 | "p": "SPACE", 305 | "f": 3 306 | }, 307 | "Magic" 308 | ], 309 | [ 310 | { 311 | "y": -0.040000000000000036, 312 | "x": 4.45, 313 | "c": "#B9F6CA", 314 | "t": "#000000", 315 | "p": "FLAT", 316 | "f": 2, 317 | "w": 2.625, 318 | "h": 1.11 319 | }, 320 | "Ctrl+Tab
cursor layer
", 321 | { 322 | "x": 2.874999999999999, 323 | "w": 2.625, 324 | "h": 1.11 325 | }, 326 | "Meh
(sticky)
" 327 | ], 328 | [ 329 | { 330 | "y": -0.96, 331 | "x": 5, 332 | "c": "#D1C4E9", 333 | "p": "SPACE", 334 | "f": 3, 335 | "n": true 336 | }, 337 | "Space\n\n\n\nCursor", 338 | "Tab\n\n\n\nNumber", 339 | { 340 | "c": "#757575", 341 | "t": "#EEEEEE" 342 | }, 343 | "Lower", 344 | { 345 | "x": 1 346 | }, 347 | "Lower", 348 | { 349 | "c": "#D1C4E9", 350 | "t": "#000000" 351 | }, 352 | "Back space\n\n\n\nMouse", 353 | { 354 | "n": true 355 | }, 356 | "R\n\n\n\nSymbol" 357 | ] 358 | ] -------------------------------------------------------------------------------- /README/symbol-layer-video.md: -------------------------------------------------------------------------------- 1 | # Symbol Layer 2 | 3 | > Video: https://youtu.be/uuSR81wc6WQ 4 | 5 | The symbol layer is a programmer's best friend. It provides convenient access 6 | to punctuation marks and other symbols that arise frequently in computer 7 | programming and software development: such as when typing code or system 8 | commands, or even navigating & editing code in modal text editors such as Vim. 9 | 10 | In this video, I'll cover my symbol layer which is the result of hundreds of 11 | different layout variations that I've designed, tested, and refined over the 12 | course of a decade, guided by insight gained from real-world use and, more 13 | recently, with improvements based on feedback from the Glove80 community. 14 | 15 | ## Activation 16 | 17 | To activate the symbol layer momentarily, press & hold the nearest key in the 18 | lower arc of the right hand's thumb cluster. When you release this key, the 19 | symbol layer is deactivated and the keyboard goes back to your original layer. 20 | 21 | > For example, when I hold down the symbol layer key and type the left hand's 22 | > home row keys, I see symbols being typed on the screen. But when I release 23 | > the layer key and type the same home row keys again, I now see letters from 24 | > the base layer instead -- which is what you would normally expect. 25 | 26 | To keep the symbol layer activated until you choose otherwise, hold the nearest 27 | Lower key and tap the symbol layer key. This is called "layer locking" and it 28 | allows you to lock into a layer without needing to hold down the layer key. 29 | 30 | > For example, when I lock the symbol layer and type the left hand's home row 31 | > keys, I see symbols being typed on the screen even though I'm not holding 32 | > down the layer key with my right thumb anymore. 33 | 34 | To unlock a locked symbol layer, simply tap the same Lower key once again. 35 | 36 | > For example, after unlocking the symbol layer, I now see letters from the 37 | > base layer being typed on the screen when I tap through the home row keys. 38 | 39 | Now let's talk about the symbols themselves, starting with the home row. 40 | 41 | ## Home row 42 | 43 | On the middle finger, we have `_` the underscore symbol, which is used to 44 | delimit words in snake_case identifiers. 45 | 46 | Beside it, on the ring finger, we have the `=` equals sign, which is used for 47 | `x = y` variable assignment, in `>=` mathematical inequalities and `=>` arrows. 48 | In Vim, it also serves as the auto-indent operator, adjusting the indentation 49 | level of the current line or selection according to the surrounding code. 50 | 51 | Stepping out by a column on either side, we have the `^` caret symbol on the 52 | pinky finger and `$` dollar sign on the index finger. These serve as anchors 53 | in regular expressions, denoting the start of a line and the end of a line 54 | respectively. In Vim, they also serve as motion operators: with the `^` caret 55 | symbol moving your cursor to the first printable character near the start of 56 | the current line, and with `$` dollar sign moving your cursor to the end of 57 | the current line. 58 | 59 | Notice how these operators are laid out left-to-right, according to the 60 | direction in which they move your cursor. This makes them *spatially 61 | mnemonic* so they feel more natural, intuitive, and easy to remember. 62 | 63 | Finally, on the far left, we have the `#` hash symbol on the pinky finger, 64 | which serves as a comment marker in many scripting languages. And on the far 65 | right, we have the `*` star symbol on the index finger, which serves as a 66 | wildcard character in filename patterns. In Vim, these also serve as search 67 | operators: with `#` hash searching backwards for the word that is currently 68 | under your cursor, and with `*` star searching forwards for the word that is 69 | currently under your cursor. 70 | 71 | Notice how the left-to-right arrangement of these operators reflects the 72 | direction in which they move your cursor. As before, this makes them 73 | *spatially mnemonic* as well. 74 | 75 | And speaking of searching, the `*` star symbol on the home row connects us to 76 | the **Vim search cluster** that is laid out vertically along the central 77 | column of the index finger. This cluster is made of three Vim operators: 78 | 79 | * `?` question mark to search backwards using a regular expression that you supply 80 | * `*` star to search forwards for the word that is currently under your cursor 81 | * `/` slash to search forwards using a regular expression that you supply 82 | 83 | Notice how these operators are laid out top-to-bottom, according to the 84 | direction in which they move your cursor. As before, this makes them 85 | *spatially mnemonic* as well. 86 | 87 | ## Upper rows 88 | 89 | On the upper row, we have `{}` curly braces on the pinky and index fingers. 90 | In Vim, these serve as paragraph motion operators, which move the cursor 91 | between blocks of text that are separated by one or more blank lines. 92 | 93 | In the center, we have a **quotation mark cluster** composed of `'` single quote 94 | on the ring finger, `"` double quote on the middle finger, and `\`` backtick 95 | (which I also type with my ring finger) if you reach up into the number row. 96 | 97 | On the number row, we have `()` parentheses on the ring and middle fingers. In 98 | Vim, these serve as sentence motion operators, which move the cursor between 99 | sentences (defined as a run of text that is terminated by a `.` dot symbol). 100 | 101 | At the end of the number row, we have `;` semicolon and `,` comma, both on the 102 | index finger. Together with `()` parentheses, these form a **function call 103 | cluster** for zero-arity function calls: as `();` standalone statements or 104 | `(),` nested in a list. In Vim, they also serve as jump repetition operators, 105 | repeating the most recent f/F/t/T jump forwards and backwards respectively. 106 | 107 | Finally, on the outer ends of the upper row, we have the `!` exclamation mark 108 | on the pinky finger and the `?` question mark on the index finger. They are 109 | positioned for easy combination with `()` parentheses on the row above for 110 | `!()` grouped negation in Boolean expressions, for `()?` optional group 111 | captures in regular expressions as well as the ternary operator in C, and for 112 | `?()` calling predicate functions that return a Boolean value in some programming 113 | languages, like Ruby and Elixir. 114 | 115 | ## Lower rows 116 | 117 | The `=` equals sign on the home row leads us to the arrow cluster, which is 118 | highlighted in green in the layer diagram. This cluster allows us to type: 119 | 120 | * `=>` fat arrows facing right, for key/value pairs in Perl 121 | * `->` thin arrows facing right, for walking pointers in C 122 | * `<-` thin arrows facing left, for variable assignments in R 123 | * `~>` squiggly arrow, for pessimistic version number constraints 124 | * `<=` less than or equal to 125 | * `>=` greater than or equal to 126 | * `<>` not equal to in SQL 127 | * `|>` pipe operator in Elixir 128 | * and so on... 129 | 130 | On the lower row, we have the `<>` angle brackets on the pinky and index 131 | fingers mirroring the `{}` curly braces on the upper row. In Vim, angle 132 | brackets change the level of indentation in the same direction that their 133 | angle points to, so this arrangement makes them *spatially mnemonic* as well. 134 | 135 | Stepping out to the ends of the lower row, we have the `~` tidle symbol on the 136 | pinky finger and the `/` forward slash symbol on the index finger. Together, 137 | these form the `~/` filesystem path to the user's home directory in UNIX 138 | systems. 139 | 140 | Going down to the bottom row, we have `[]` square brackets located centrally 141 | on the ring and middle fingers, mirroring the arrangement of `()` parentheses 142 | way up above on the number row. In Vim, square brackets jump between things, 143 | such as syntax blocks, warning & error locations, paste boundaries, and so on. 144 | 145 | Surrounding that, we have the `&` AND symbol on the pinky finger and the `+` 146 | plus sign on the index finger. These are positioned so that they pair 147 | logically with their counterparts on the row above: the `|` OR symbol on the 148 | ring finger and the `-` minus sign on the middle finger. In addition to their 149 | vertical affinity, these pairs are also *spatially mnemonic* left-to-right: 150 | for example, the `-` minus sign precedes the `+` plus sign along both axes. 151 | 152 | ## Thumb cluster 153 | 154 | On the upper arc of the thumb cluster, we have `\` backslash for escaping all 155 | symbols on the other fingers. For example, we can use this to escape 156 | double-quotation marks inside a double-quoted string: "double \"ESC\" quotes". 157 | Similarly, we can also use this to escape regular expression delimiters when 158 | matching filesystem paths containing directory separators in UNIX: /\/home\//. 159 | Another common scenario is to escape parentheses in an extended regular 160 | expression to disable their group capture behavior: /funcall\(\)/. 161 | 162 | Next, let's finish off the upper arc *with a swipe*: leading from the `.` dot 163 | symbol in the middle of the arc onto the `*` star symbol at the end of the 164 | arc. We can also swipe back and forth when typing `*.*` star dot star, which 165 | is useful for matching filenames with extensions in a filesystem glob pattern. 166 | 167 | On we go, to the lower arc of the thumb cluster. On the nearest key of the 168 | lower arc of the thumb cluster, we have the `%` percent sign which serves as 169 | the "matchit" operator in Vim: it jumps you to the corresponding delimiter for 170 | the word under the cursor or, failing that, to nearest surrounding delimiter. 171 | 172 | On the middle key in the lower arc of the thumb cluster, we have the `:` colon 173 | symbol, which serves as a `x?y:z` ternary operator separator in C, is doubled 174 | as `::` a namespace separator in C++, and is also the command mode key in Vim. 175 | 176 | On the furthest key in the lower arc of the thumb cluster, we have the `;` 177 | semicolon, which serves as a statement separator in C and many other languages. 178 | 179 | ## Spacegrams 180 | 181 | When typing two symbols separated by a space, you normally have to first let go 182 | of the symbol layer key after you type the first symbol, and then tap it for 183 | space, and finally hold it again to reactivate the symbol layer for the second 184 | symbol. This anti-pattern is called a "spacegram" because it involves typing a 185 | space in a sequence of other characters, which can be disruptive to our typing 186 | rhythm, requiring a delicately timed dance around the spacebar. 187 | 188 | To avoid breaking our typing rhythm in such cases, we can use the additional 189 | spacebar (as well as backspace, tab, and enter) on the right hand's home row. 190 | This way, we don't need to exit the Symbol layer to type spaces, newlines, or 191 | even to correct our typing mistakes! 192 | 193 | Let's take a closer look at these keys, which I call "spacegram operators": 194 | 195 | On the index finger, we have Backspace to erase a character going to the left. 196 | This is equivalent to Ctrl+H in UNIX and reminiscent of the letter `h` in Vim, 197 | which all mnemonically coincide with the letter "H" in Arno's Engram layout 198 | (located on the right hand index finger's resting position on the home row). 199 | 200 | Directly beneath this Backspace key on the lower row, we have the Delete key. 201 | This forms an erasure cluster, with one key erasing to the left and the other 202 | erasing to the right. 203 | 204 | On the middle finger, we have Tab which is mnemonic with the letter "T" (which 205 | stands for *Tab*) in the Engram layout. This is useful for invoking tab 206 | completion, whether at a shell command line or while coding in an IDE. 207 | Similarly, we have Shift+Tab directly underneath, on the lower row, for 208 | navigating tab completion menus or choices in the opposite direction. 209 | 210 | On the ring finger, we have Spacebar, which is mnemonic with the letter "S" 211 | (which stands for *Space*) in the Engram layout. As mentioned before, this 212 | lets us type spaces without having to leave the Symbol layer. 213 | 214 | On the pinky finger, we have Enter, which is mnemonic with the letter "N" 215 | (which stands for *Newline*) in the Engram layout. Similarly, this lets us 216 | press Enter for newlines without having to leave the Symbol layer. 217 | 218 | ## Base layer symbols 219 | 220 | In the symbol layer diagram, you may notice that there are several redundant 221 | symbols on the right half of the keyboard, colored in gray. These are base 222 | layer symbols that pass through into the Symbol layer, just for convenience. 223 | For instance, you may be accustomed to using these symbols on the base layer 224 | so having them available here lets your muscle memory type them as necessary. 225 | 226 | ## Demonstration 227 | 228 | Now let's put all of these concepts to work in a demonstration, typing up some code. 229 | 230 | > Video: https://youtu.be/fPcO5NGoDao 231 | 232 | ## Conclusion 233 | 234 | This concludes the video tour of my symbol layer... But wait, there's more! 235 | There are interactive examples of typing various bigrams and other sequences 236 | on my website under the Symbol layer section, where you can see the placement 237 | of the keys involved and visualize the animated sequence of how to type them. 238 | Moreover, language specifics and my design rationale are also explained here. 239 | 240 | Thanks for watching. Stay tuned for more videos in this series coming up next. 241 | -------------------------------------------------------------------------------- /world.yaml: -------------------------------------------------------------------------------- 1 | precedence: [LSFT, LALT, RALT, LCTL, RCTL, RSFT] # latter overrides former: RSFT overrides all 2 | 3 | # 4 | # transforms: 5 | # : 6 | # base: 7 | # : 8 | # 9 | # Where is either LALT, RALT, LCTL, RCTL, or RSFT. 10 | # 11 | transforms: 12 | I: { base: acute, LCTL: diaeresis, RCTL: circumflex, RSFT: grave } 13 | E: { base: acute, LCTL: diaeresis, RCTL: circumflex, RSFT: grave, RALT: ae } 14 | A: { base: acute, LCTL: diaeresis, RCTL: circumflex, RSFT: grave, LALT: tilde, RALT: ring } 15 | Y: { base: acute, LCTL: diaeresis } 16 | O: { base: acute, LCTL: diaeresis, RCTL: circumflex, RSFT: grave, LALT: tilde, RALT: slash } 17 | U: { base: acute, LCTL: diaeresis, RCTL: circumflex, RSFT: grave } 18 | consonants: 19 | { base: cedilla, LCTL: ntilde, RCTL: eszett } 20 | quotes_left: 21 | { base: angle, LCTL: curly, RCTL: low, RSFT: grave, LALT: corner1, RALT: corner2 } 22 | quotes_right: 23 | { base: angle, LCTL: curly, RCTL: low, RSFT: grave, LALT: corner1, RALT: corner2 } 24 | currency: 25 | { base: dollar, LCTL: euro, RCTL: pound, RSFT: generic, LALT: yen, RALT: won } 26 | sign: 27 | base: copyright 28 | LCTL: trademark 29 | 30 | # 31 | # characters: 32 | # : 33 | # : { , } 34 | # 35 | characters: 36 | I: 37 | acute: { lower: "í", upper: "Í" } 38 | diaeresis: { lower: "ï", upper: "Ï" } 39 | circumflex: { lower: "î", upper: "Î" } 40 | grave: { lower: "ì", upper: "Ì" } 41 | E: 42 | acute: { lower: "é", upper: "É" } 43 | diaeresis: { lower: "ë", upper: "Ë" } 44 | circumflex: { lower: "ê", upper: "Ê" } 45 | grave: { lower: "è", upper: "È" } 46 | ae: { lower: "æ", upper: "Æ" } 47 | A: 48 | acute: { lower: "á", upper: "Á" } 49 | diaeresis: { lower: "ä", upper: "Ä" } 50 | circumflex: { lower: "â", upper: "Â" } 51 | grave: { lower: "à", upper: "À" } 52 | tilde: { lower: "ã", upper: "Ã" } 53 | ring: { lower: "å", upper: "Å" } 54 | Y: 55 | acute: { lower: "ý", upper: "Ý" } 56 | diaeresis: { lower: "ÿ", upper: "Ÿ" } 57 | O: 58 | acute: { lower: "ó", upper: "Ó" } 59 | diaeresis: { lower: "ö", upper: "Ö" } 60 | circumflex: { lower: "ô", upper: "Ô" } 61 | grave: { lower: "ò", upper: "Ò" } 62 | tilde: { lower: "õ", upper: "Õ" } 63 | slash: { lower: "ø", upper: "Ø" } 64 | U: 65 | acute: { lower: "ú", upper: "Ú" } 66 | diaeresis: { lower: "ü", upper: "Ü" } 67 | circumflex: { lower: "û", upper: "Û" } 68 | grave: { lower: "ù", upper: "Ù" } 69 | consonants: 70 | cedilla: { lower: "ç", upper: "Ç" } 71 | eszett: { lower: "ß", upper: "ẞ" } 72 | ntilde: { lower: "ñ", upper: "Ñ" } 73 | quotes_left: 74 | angle: { lower: "‹", upper: "«" } 75 | curly: { lower: "‘", upper: "“" } 76 | low: { lower: "‚", upper: "„" } 77 | corner1: { lower: "「", upper: "﹁" } 78 | corner2: { lower: "『", upper: "﹃" } 79 | grave: "`" 80 | quotes_right: 81 | angle: { lower: "›", upper: "»" } 82 | curly: { lower: "’", upper: "”" } 83 | low: { lower: "‚", upper: "„" } 84 | corner1: { lower: "」", upper: "﹂" } 85 | corner2: { lower: "』", upper: "﹄" } 86 | grave: "´" 87 | currency: 88 | dollar: { lower: "$", upper: "¢" } 89 | yen: "¥" 90 | euro: "€" 91 | won: "₩" 92 | pound: "£" 93 | generic: { lower: "¤", upper: "₿" } 94 | sign: 95 | copyright: { regular: "©", shifted: "®" } 96 | trademark: { regular: "™", shifted: "℠" } 97 | 98 | # 99 | # codepoints: 100 | # : "" 101 | # 102 | codepoints: 103 | degree_sign: "°" 104 | section_sign: "§" 105 | paragraph_sign: "¶" 106 | o_ordinal: "º" 107 | a_ordinal: "ª" 108 | exclaim_left: "¡" 109 | question_left: "¿" 110 | currency_crypto: "₿" 111 | currency_cent: "¢" 112 | currency_sign: "¤" 113 | currency_crypto: "₿" 114 | micro_sign: "µ" 115 | 116 | # 117 | # compositions: 118 | # : 119 | # linux: 120 | # macos: 121 | # windows: 122 | # 123 | # Where is composed of ZMK keycodes with some specialities: 124 | # - "COMPOSE" is a special keyword that is replaced by COMPOSE_KEY_LINUX 125 | # - "ALT+" is a special prefix that is replaced by COMPOSE_SEQ_WINDOWS() 126 | # 127 | # For reference on Compose key shortcuts and the characters they produce: 128 | # - linux: https://wiki.linuxquestions.org/wiki/Accented_Characters 129 | # - macos: https://sites.psu.edu/symbolcodes/mac/codemac/ 130 | # - windows: https://sites.psu.edu/symbolcodes/windows/codealt/ 131 | # 132 | compositions: 133 | 134 | ### 135 | ## C 136 | # 137 | 138 | "ç": 139 | linux: COMPOSE COMMA C 140 | macos: LA(C) 141 | windows: ALT+0231 142 | 143 | "Ç": 144 | linux: COMPOSE COMMA LS(C) 145 | macos: LA(LS(C)) 146 | windows: ALT+0199 147 | 148 | ### 149 | ## I 150 | # 151 | 152 | "í": 153 | linux: COMPOSE SQT I 154 | macos: LA(E) I 155 | windows: ALT+0237 156 | 157 | "Í": 158 | linux: COMPOSE SQT LS(I) 159 | macos: LA(E) LS(I) 160 | windows: ALT+0205 161 | 162 | "ï": 163 | linux: COMPOSE DQT I 164 | macos: LA(U) I 165 | windows: ALT+0239 166 | 167 | "Ï": 168 | linux: COMPOSE DQT LS(I) 169 | macos: LA(U) LS(I) 170 | windows: ALT+0207 171 | 172 | "î": 173 | linux: COMPOSE CARET I 174 | macos: LA(I) I 175 | windows: ALT+0238 176 | 177 | "Î": 178 | linux: COMPOSE CARET LS(I) 179 | macos: LA(I) LS(I) 180 | windows: ALT+0206 181 | 182 | "ì": 183 | linux: COMPOSE GRAVE I 184 | macos: LA(GRAVE) I 185 | windows: ALT+0236 186 | 187 | "Ì": 188 | linux: COMPOSE GRAVE LS(I) 189 | macos: LA(GRAVE) LS(I) 190 | windows: ALT+0206 191 | 192 | ### 193 | ## E 194 | # 195 | 196 | "é": 197 | linux: COMPOSE SQT E 198 | macos: LA(E) E 199 | windows: ALT+0233 200 | 201 | "É": 202 | linux: COMPOSE SQT LS(E) 203 | macos: LA(E) LS(E) 204 | windows: ALT+0201 205 | 206 | "ë": 207 | linux: COMPOSE DQT E 208 | macos: LA(U) E 209 | windows: ALT+0235 210 | 211 | "Ë": 212 | linux: COMPOSE DQT LS(E) 213 | macos: LA(U) LS(E) 214 | windows: ALT+0203 215 | 216 | "ê": 217 | linux: COMPOSE CARET E 218 | macos: LA(I) E 219 | windows: ALT+0234 220 | 221 | "Ê": 222 | linux: COMPOSE CARET LS(E) 223 | macos: LA(I) LS(E) 224 | windows: ALT+0202 225 | 226 | "è": 227 | linux: COMPOSE GRAVE E 228 | macos: LA(GRAVE) E 229 | windows: ALT+0232 230 | 231 | "È": 232 | linux: COMPOSE GRAVE LS(E) 233 | macos: LA(GRAVE) LS(E) 234 | windows: ALT+0200 235 | 236 | "æ": 237 | linux: COMPOSE A E 238 | macos: LA(SQT) 239 | windows: ALT+0230 240 | 241 | "Æ": 242 | linux: COMPOSE LS(A) LS(E) 243 | macos: LA(LS(SQT)) 244 | windows: ALT+0198 245 | 246 | ### 247 | ## A 248 | # 249 | 250 | "á": 251 | linux: COMPOSE SQT A 252 | macos: LA(E) A 253 | windows: ALT+0225 254 | 255 | "Á": 256 | linux: COMPOSE SQT LS(A) 257 | macos: LA(E) LS(A) 258 | windows: ALT+0193 259 | 260 | "ä": 261 | linux: COMPOSE DQT A 262 | macos: LA(U) A 263 | windows: ALT+0228 264 | 265 | "Ä": 266 | linux: COMPOSE DQT LS(A) 267 | macos: LA(U) LS(A) 268 | windows: ALT+0196 269 | 270 | "â": 271 | linux: COMPOSE CARET A 272 | macos: LA(I) A 273 | windows: ALT+0226 274 | 275 | "Â": 276 | linux: COMPOSE CARET LS(A) 277 | macos: LA(I) LS(A) 278 | windows: ALT+0194 279 | 280 | "à": 281 | linux: COMPOSE GRAVE A 282 | macos: LA(GRAVE) A 283 | windows: ALT+0224 284 | 285 | "À": 286 | linux: COMPOSE GRAVE LS(A) 287 | macos: LA(GRAVE) LS(A) 288 | windows: ALT+0192 289 | 290 | "ã": 291 | linux: COMPOSE TILDE A 292 | macos: LA(N) A 293 | windows: ALT+0227 294 | 295 | "Ã": 296 | linux: COMPOSE TILDE LS(A) 297 | macos: LA(N) LS(A) 298 | windows: ALT+0195 299 | 300 | "å": 301 | linux: COMPOSE O A 302 | macos: LA(A) 303 | windows: ALT+0229 304 | 305 | "Å": 306 | linux: COMPOSE O LS(A) 307 | macos: LA(LS(A)) 308 | windows: ALT+0197 309 | 310 | ### 311 | ## Y 312 | # 313 | 314 | "ý": 315 | linux: COMPOSE SQT Y 316 | macos: LA(E) Y 317 | windows: ALT+0253 318 | 319 | "Ý": 320 | linux: COMPOSE SQT LS(Y) 321 | macos: LA(E) LS(Y) 322 | windows: ALT+0221 323 | 324 | "ÿ": 325 | linux: COMPOSE DQT Y 326 | macos: LA(U) Y 327 | windows: ALT+0255 328 | 329 | "Ÿ": 330 | linux: COMPOSE DQT LS(Y) 331 | macos: LA(U) LS(Y) 332 | windows: ALT+0159 333 | 334 | ### 335 | ## O 336 | # 337 | 338 | "ó": 339 | linux: COMPOSE SQT O 340 | macos: LA(E) O 341 | windows: ALT+0243 342 | 343 | "Ó": 344 | linux: COMPOSE SQT LS(O) 345 | macos: LA(E) LS(O) 346 | windows: ALT+0211 347 | 348 | "ö": 349 | linux: COMPOSE DQT O 350 | macos: LA(U) O 351 | windows: ALT+0246 352 | 353 | "Ö": 354 | linux: COMPOSE DQT LS(O) 355 | macos: LA(U) LS(O) 356 | windows: ALT+0214 357 | 358 | "ô": 359 | linux: COMPOSE CARET O 360 | macos: LA(I) O 361 | windows: ALT+0244 362 | 363 | "Ô": 364 | linux: COMPOSE CARET LS(O) 365 | macos: LA(I) LS(O) 366 | windows: ALT+0212 367 | 368 | "ò": 369 | linux: COMPOSE GRAVE O 370 | macos: LA(GRAVE) O 371 | windows: ALT+0242 372 | 373 | "Ò": 374 | linux: COMPOSE GRAVE LS(O) 375 | macos: LA(GRAVE) LS(O) 376 | windows: ALT+0210 377 | 378 | "õ": 379 | linux: COMPOSE TILDE O 380 | macos: LA(N) O 381 | windows: ALT+0245 382 | 383 | "Õ": 384 | linux: COMPOSE TILDE LS(O) 385 | macos: LA(N) LS(O) 386 | windows: ALT+0213 387 | 388 | "ø": 389 | linux: COMPOSE FSLH O 390 | macos: LA(O) 391 | windows: ALT+0248 392 | 393 | "Ø": 394 | linux: COMPOSE FSLH LS(O) 395 | macos: LA(LS(O)) 396 | windows: ALT+0216 397 | 398 | ### 399 | ## U 400 | # 401 | 402 | "ú": 403 | linux: COMPOSE SQT U 404 | macos: LA(E) U 405 | windows: ALT+0250 406 | 407 | "Ú": 408 | linux: COMPOSE SQT LS(U) 409 | macos: LA(E) LS(U) 410 | windows: ALT+0218 411 | 412 | "ü": 413 | linux: COMPOSE DQT U 414 | macos: LA(U) U 415 | windows: ALT+0252 416 | 417 | "Ü": 418 | linux: COMPOSE DQT LS(U) 419 | macos: LA(U) LS(U) 420 | windows: ALT+0220 421 | 422 | "û": 423 | linux: COMPOSE CARET U 424 | macos: LA(I) U 425 | windows: ALT+0251 426 | 427 | "Û": 428 | linux: COMPOSE CARET LS(U) 429 | macos: LA(I) LS(U) 430 | windows: ALT+0219 431 | 432 | "ù": 433 | linux: COMPOSE GRAVE U 434 | macos: LA(GRAVE) U 435 | windows: ALT+0249 436 | 437 | "Ù": 438 | linux: COMPOSE GRAVE LS(U) 439 | macos: LA(GRAVE) LS(U) 440 | windows: ALT+0217 441 | 442 | ### 443 | ## S 444 | # 445 | 446 | "ß": 447 | linux: COMPOSE S S 448 | macos: LA(S) 449 | windows: ALT+0223 450 | 451 | "ẞ": 452 | linux: COMPOSE LS(S) LS(S) 453 | macos: LA(LS(S)) 454 | windows: # NOTE: U+1E9E has no alt-code per charmap.exe 455 | 456 | ### 457 | ## N 458 | # 459 | 460 | "ñ": 461 | linux: COMPOSE TILDE N 462 | macos: LA(N) N 463 | windows: ALT+0241 464 | 465 | "Ñ": 466 | linux: COMPOSE TILDE LS(N) 467 | macos: LA(N) LS(N) 468 | windows: ALT+0209 469 | 470 | ### 471 | ## signs 472 | # 473 | 474 | "€": 475 | linux: COMPOSE E EQUAL 476 | macos: LA(LS(N2)) 477 | windows: ALT+0128 478 | 479 | "°": 480 | linux: COMPOSE O O 481 | macos: LA(LS(N8)) 482 | windows: ALT+0176 483 | 484 | "¡": 485 | macos: LA(N1) 486 | windows: ALT+0161 487 | 488 | "¿": 489 | linux: COMPOSE EXCL EXCL 490 | macos: LA(LS(FSLH)) 491 | windows: ALT+0191 492 | 493 | "µ": 494 | linux: COMPOSE M U 495 | macos: LA(M) 496 | windows: ALT+0181 497 | 498 | "§": 499 | linux: COMPOSE S O 500 | macos: LA(N6) 501 | windows: ALT+0167 502 | 503 | "¶": 504 | linux: COMPOSE P EXCL 505 | macos: LA(N7) 506 | windows: ALT+0182 507 | 508 | "º": 509 | linux: COMPOSE CARET UNDER O 510 | macos: LA(N0) 511 | windows: ALT+0186 512 | 513 | "ª": 514 | linux: COMPOSE CARET UNDER A 515 | macos: LA(N9) 516 | windows: ALT+0170 517 | 518 | "©": 519 | linux: COMPOSE O C 520 | macos: LA(G) 521 | windows: ALT+0169 522 | 523 | "®": 524 | linux: COMPOSE O R 525 | macos: LA(R) 526 | windows: ALT+0174 527 | 528 | "™": 529 | linux: COMPOSE T M 530 | macos: LA(N2) 531 | windows: ALT+0153 532 | 533 | "℠": 534 | linux: COMPOSE S M 535 | -------------------------------------------------------------------------------- /define.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaults": { 3 | "OPERATING_SYSTEM": "L", 4 | "COMBO_FIRING_DECAY": 50, 5 | "TAPPING_RESOLUTION": 150, 6 | "HOMEY_HOLDING_TYPE": "tap-preferred", 7 | "HOMEY_HOLDING_TIME": 240, 8 | "INDEX_HOLDING_TIME": 240, 9 | "MIDDY_HOLDING_TIME": 240, 10 | "RING1_HOLDING_TIME": 240, 11 | "RING2_HOLDING_TIME": 240, 12 | "PINKY_HOLDING_TIME": 240, 13 | "HOMEY_STREAK_DECAY": 150, 14 | "HOMEY_REPEAT_DECAY": 300, 15 | "CHORD_HOLDING_TYPE": "tap-preferred", 16 | "CHORD_HOLDING_TIME": 150, 17 | "CHORD_STREAK_DECAY": 150, 18 | "CHORD_REPEAT_DECAY": 300, 19 | "INDEX_HOLDING_TYPE": "tap-preferred", 20 | "INDEX_STREAK_DECAY": 150, 21 | "INDEX_REPEAT_DECAY": 300, 22 | "PLAIN_HOLDING_TYPE": "tap-preferred", 23 | "PLAIN_HOLDING_TIME": 200, 24 | "PLAIN_STREAK_DECAY": 150, 25 | "PLAIN_REPEAT_DECAY": 300, 26 | "THUMB_HOLDING_TYPE": "balanced", 27 | "THUMB_HOLDING_TIME": 200, 28 | "THUMB_REPEAT_DECAY": 300, 29 | "SPACE_HOLDING_TYPE": "balanced", 30 | "SPACE_HOLDING_TIME": 170, 31 | "SPACE_REPEAT_DECAY": 150, 32 | "PINKY_HOLDING_TYPE": "tap-preferred", 33 | "PINKY_CHORD_HOLDING_TYPE": "tap-preferred", 34 | "LEFT_PINKY_CHORD_HOLDING_TYPE": "tap-preferred", 35 | "RIGHT_PINKY_CHORD_HOLDING_TYPE": "tap-preferred", 36 | "PINKY_CHORD_HOLDING_TIME": 150, 37 | "LEFT_PINKY_CHORD_HOLDING_TIME": 150, 38 | "RIGHT_PINKY_CHORD_HOLDING_TIME": 150, 39 | "PINKY_STREAK_DECAY": 150, 40 | "PINKY_CHORD_STREAK_DECAY": 150, 41 | "LEFT_PINKY_CHORD_STREAK_DECAY": 150, 42 | "RIGHT_PINKY_CHORD_STREAK_DECAY": 150, 43 | "PINKY_REPEAT_DECAY": 300, 44 | "PINKY_CHORD_REPEAT_DECAY": 300, 45 | "LEFT_PINKY_CHORD_REPEAT_DECAY": 300, 46 | "RIGHT_PINKY_CHORD_REPEAT_DECAY": 300, 47 | "RING1_HOLDING_TYPE": "tap-preferred", 48 | "RING1_CHORD_HOLDING_TYPE": "tap-preferred", 49 | "LEFT_RING1_CHORD_HOLDING_TYPE": "tap-preferred", 50 | "RIGHT_RING1_CHORD_HOLDING_TYPE": "tap-preferred", 51 | "RING1_CHORD_HOLDING_TIME": 150, 52 | "LEFT_RING1_CHORD_HOLDING_TIME": 150, 53 | "RIGHT_RING1_CHORD_HOLDING_TIME": 150, 54 | "RING1_STREAK_DECAY": 150, 55 | "RING1_CHORD_STREAK_DECAY": 150, 56 | "LEFT_RING1_CHORD_STREAK_DECAY": 150, 57 | "RIGHT_RING1_CHORD_STREAK_DECAY": 150, 58 | "RING1_REPEAT_DECAY": 300, 59 | "RING1_CHORD_REPEAT_DECAY": 300, 60 | "LEFT_RING1_CHORD_REPEAT_DECAY": 300, 61 | "RIGHT_RING1_CHORD_REPEAT_DECAY": 300, 62 | "RING2_HOLDING_TYPE": "tap-preferred", 63 | "RING2_CHORD_HOLDING_TYPE": "tap-preferred", 64 | "LEFT_RING2_CHORD_HOLDING_TYPE": "tap-preferred", 65 | "RIGHT_RING2_CHORD_HOLDING_TYPE": "tap-preferred", 66 | "RING2_CHORD_HOLDING_TIME": 150, 67 | "LEFT_RING2_CHORD_HOLDING_TIME": 150, 68 | "RIGHT_RING2_CHORD_HOLDING_TIME": 150, 69 | "RING2_STREAK_DECAY": 150, 70 | "RING2_CHORD_STREAK_DECAY": 150, 71 | "LEFT_RING2_CHORD_STREAK_DECAY": 150, 72 | "RIGHT_RING2_CHORD_STREAK_DECAY": 150, 73 | "RING2_REPEAT_DECAY": 300, 74 | "RING2_CHORD_REPEAT_DECAY": 300, 75 | "LEFT_RING2_CHORD_REPEAT_DECAY": 300, 76 | "RIGHT_RING2_CHORD_REPEAT_DECAY": 300, 77 | "MIDDY_HOLDING_TYPE": "tap-preferred", 78 | "MIDDY_CHORD_HOLDING_TYPE": "tap-preferred", 79 | "LEFT_MIDDY_CHORD_HOLDING_TYPE": "tap-preferred", 80 | "RIGHT_MIDDY_CHORD_HOLDING_TYPE": "tap-preferred", 81 | "MIDDY_CHORD_HOLDING_TIME": 150, 82 | "LEFT_MIDDY_CHORD_HOLDING_TIME": 150, 83 | "RIGHT_MIDDY_CHORD_HOLDING_TIME": 150, 84 | "MIDDY_STREAK_DECAY": 150, 85 | "MIDDY_CHORD_STREAK_DECAY": 150, 86 | "LEFT_MIDDY_CHORD_STREAK_DECAY": 150, 87 | "RIGHT_MIDDY_CHORD_STREAK_DECAY": 150, 88 | "MIDDY_REPEAT_DECAY": 300, 89 | "MIDDY_CHORD_REPEAT_DECAY": 300, 90 | "LEFT_MIDDY_CHORD_REPEAT_DECAY": 300, 91 | "RIGHT_MIDDY_CHORD_REPEAT_DECAY": 300, 92 | "INDEX_CHORD_HOLDING_TYPE": "tap-preferred", 93 | "LEFT_INDEX_CHORD_HOLDING_TYPE": "tap-preferred", 94 | "RIGHT_INDEX_CHORD_HOLDING_TYPE": "tap-preferred", 95 | "INDEX_CHORD_HOLDING_TIME": 150, 96 | "LEFT_INDEX_CHORD_HOLDING_TIME": 150, 97 | "RIGHT_INDEX_CHORD_HOLDING_TIME": 150, 98 | "INDEX_CHORD_STREAK_DECAY": 150, 99 | "LEFT_INDEX_CHORD_STREAK_DECAY": 150, 100 | "RIGHT_INDEX_CHORD_STREAK_DECAY": 150, 101 | "INDEX_CHORD_REPEAT_DECAY": 300, 102 | "LEFT_INDEX_CHORD_REPEAT_DECAY": 300, 103 | "RIGHT_INDEX_CHORD_REPEAT_DECAY": 300, 104 | "LEFT_PINKY_HOLDING_TYPE": "tap-preferred", 105 | "LEFT_PINKY_HOLDING_TIME": 240, 106 | "LEFT_PINKY_STREAK_DECAY": 150, 107 | "LEFT_PINKY_REPEAT_DECAY": 300, 108 | "RIGHT_PINKY_HOLDING_TYPE": "tap-preferred", 109 | "RIGHT_PINKY_HOLDING_TIME": 240, 110 | "RIGHT_PINKY_STREAK_DECAY": 150, 111 | "RIGHT_PINKY_REPEAT_DECAY": 300, 112 | "LEFT_RING1_HOLDING_TYPE": "tap-preferred", 113 | "LEFT_RING1_HOLDING_TIME": 240, 114 | "LEFT_RING1_STREAK_DECAY": 150, 115 | "LEFT_RING1_REPEAT_DECAY": 300, 116 | "RIGHT_RING1_HOLDING_TYPE": "tap-preferred", 117 | "RIGHT_RING1_HOLDING_TIME": 240, 118 | "RIGHT_RING1_STREAK_DECAY": 150, 119 | "RIGHT_RING1_REPEAT_DECAY": 300, 120 | "LEFT_RING2_HOLDING_TYPE": "tap-preferred", 121 | "LEFT_RING2_HOLDING_TIME": 240, 122 | "LEFT_RING2_STREAK_DECAY": 150, 123 | "LEFT_RING2_REPEAT_DECAY": 300, 124 | "RIGHT_RING2_HOLDING_TYPE": "tap-preferred", 125 | "RIGHT_RING2_HOLDING_TIME": 240, 126 | "RIGHT_RING2_STREAK_DECAY": 150, 127 | "RIGHT_RING2_REPEAT_DECAY": 300, 128 | "LEFT_MIDDY_HOLDING_TYPE": "tap-preferred", 129 | "LEFT_MIDDY_HOLDING_TIME": 240, 130 | "LEFT_MIDDY_STREAK_DECAY": 150, 131 | "LEFT_MIDDY_REPEAT_DECAY": 300, 132 | "RIGHT_MIDDY_HOLDING_TYPE": "tap-preferred", 133 | "RIGHT_MIDDY_HOLDING_TIME": 240, 134 | "RIGHT_MIDDY_STREAK_DECAY": 150, 135 | "RIGHT_MIDDY_REPEAT_DECAY": 300, 136 | "LEFT_INDEX_HOLDING_TYPE": "tap-preferred", 137 | "LEFT_INDEX_HOLDING_TIME": 240, 138 | "LEFT_INDEX_STREAK_DECAY": 150, 139 | "LEFT_INDEX_REPEAT_DECAY": 300, 140 | "RIGHT_INDEX_HOLDING_TYPE": "tap-preferred", 141 | "RIGHT_INDEX_HOLDING_TIME": 240, 142 | "RIGHT_INDEX_STREAK_DECAY": 150, 143 | "RIGHT_INDEX_REPEAT_DECAY": 300, 144 | "LEFT_RING1_PINKY_HOLDING_TYPE": "tap-preferred", 145 | "LEFT_RING1_PINKY_HOLDING_TIME": 150, 146 | "LEFT_RING1_PINKY_STREAK_DECAY": 150, 147 | "LEFT_RING1_PINKY_REPEAT_DECAY": 300, 148 | "LEFT_RING2_PINKY_HOLDING_TYPE": "tap-preferred", 149 | "LEFT_RING2_PINKY_HOLDING_TIME": 150, 150 | "LEFT_RING2_PINKY_STREAK_DECAY": 150, 151 | "LEFT_RING2_PINKY_REPEAT_DECAY": 300, 152 | "LEFT_MIDDY_PINKY_HOLDING_TYPE": "tap-preferred", 153 | "LEFT_MIDDY_PINKY_HOLDING_TIME": 150, 154 | "LEFT_MIDDY_PINKY_STREAK_DECAY": 150, 155 | "LEFT_MIDDY_PINKY_REPEAT_DECAY": 300, 156 | "LEFT_INDEX_PINKY_HOLDING_TYPE": "tap-preferred", 157 | "LEFT_INDEX_PINKY_HOLDING_TIME": 150, 158 | "LEFT_INDEX_PINKY_STREAK_DECAY": 150, 159 | "LEFT_INDEX_PINKY_REPEAT_DECAY": 300, 160 | "RIGHT_RING1_PINKY_HOLDING_TYPE": "tap-preferred", 161 | "RIGHT_RING1_PINKY_HOLDING_TIME": 150, 162 | "RIGHT_RING1_PINKY_STREAK_DECAY": 150, 163 | "RIGHT_RING1_PINKY_REPEAT_DECAY": 300, 164 | "RIGHT_RING2_PINKY_HOLDING_TYPE": "tap-preferred", 165 | "RIGHT_RING2_PINKY_HOLDING_TIME": 150, 166 | "RIGHT_RING2_PINKY_STREAK_DECAY": 150, 167 | "RIGHT_RING2_PINKY_REPEAT_DECAY": 300, 168 | "RIGHT_MIDDY_PINKY_HOLDING_TYPE": "tap-preferred", 169 | "RIGHT_MIDDY_PINKY_HOLDING_TIME": 150, 170 | "RIGHT_MIDDY_PINKY_STREAK_DECAY": 150, 171 | "RIGHT_MIDDY_PINKY_REPEAT_DECAY": 300, 172 | "RIGHT_INDEX_PINKY_HOLDING_TYPE": "tap-preferred", 173 | "RIGHT_INDEX_PINKY_HOLDING_TIME": 150, 174 | "RIGHT_INDEX_PINKY_STREAK_DECAY": 150, 175 | "RIGHT_INDEX_PINKY_REPEAT_DECAY": 300, 176 | "LEFT_PINKY_RING1_HOLDING_TYPE": "tap-preferred", 177 | "LEFT_PINKY_RING1_HOLDING_TIME": 150, 178 | "LEFT_PINKY_RING1_STREAK_DECAY": 150, 179 | "LEFT_PINKY_RING1_REPEAT_DECAY": 300, 180 | "LEFT_RING2_RING1_HOLDING_TYPE": "tap-preferred", 181 | "LEFT_RING2_RING1_HOLDING_TIME": 150, 182 | "LEFT_RING2_RING1_STREAK_DECAY": 150, 183 | "LEFT_RING2_RING1_REPEAT_DECAY": 300, 184 | "LEFT_MIDDY_RING1_HOLDING_TYPE": "tap-preferred", 185 | "LEFT_MIDDY_RING1_HOLDING_TIME": 150, 186 | "LEFT_MIDDY_RING1_STREAK_DECAY": 150, 187 | "LEFT_MIDDY_RING1_REPEAT_DECAY": 300, 188 | "LEFT_INDEX_RING1_HOLDING_TYPE": "tap-preferred", 189 | "LEFT_INDEX_RING1_HOLDING_TIME": 150, 190 | "LEFT_INDEX_RING1_STREAK_DECAY": 150, 191 | "LEFT_INDEX_RING1_REPEAT_DECAY": 300, 192 | "RIGHT_PINKY_RING1_HOLDING_TYPE": "tap-preferred", 193 | "RIGHT_PINKY_RING1_HOLDING_TIME": 150, 194 | "RIGHT_PINKY_RING1_STREAK_DECAY": 150, 195 | "RIGHT_PINKY_RING1_REPEAT_DECAY": 300, 196 | "RIGHT_RING2_RING1_HOLDING_TYPE": "tap-preferred", 197 | "RIGHT_RING2_RING1_HOLDING_TIME": 150, 198 | "RIGHT_RING2_RING1_STREAK_DECAY": 150, 199 | "RIGHT_RING2_RING1_REPEAT_DECAY": 300, 200 | "RIGHT_MIDDY_RING1_HOLDING_TYPE": "tap-preferred", 201 | "RIGHT_MIDDY_RING1_HOLDING_TIME": 150, 202 | "RIGHT_MIDDY_RING1_STREAK_DECAY": 150, 203 | "RIGHT_MIDDY_RING1_REPEAT_DECAY": 300, 204 | "RIGHT_INDEX_RING1_HOLDING_TYPE": "tap-preferred", 205 | "RIGHT_INDEX_RING1_HOLDING_TIME": 150, 206 | "RIGHT_INDEX_RING1_STREAK_DECAY": 150, 207 | "RIGHT_INDEX_RING1_REPEAT_DECAY": 300, 208 | "LEFT_PINKY_RING2_HOLDING_TYPE": "tap-preferred", 209 | "LEFT_PINKY_RING2_HOLDING_TIME": 150, 210 | "LEFT_PINKY_RING2_STREAK_DECAY": 150, 211 | "LEFT_PINKY_RING2_REPEAT_DECAY": 300, 212 | "LEFT_RING1_RING2_HOLDING_TYPE": "tap-preferred", 213 | "LEFT_RING1_RING2_HOLDING_TIME": 150, 214 | "LEFT_RING1_RING2_STREAK_DECAY": 150, 215 | "LEFT_RING1_RING2_REPEAT_DECAY": 300, 216 | "LEFT_MIDDY_RING2_HOLDING_TYPE": "tap-preferred", 217 | "LEFT_MIDDY_RING2_HOLDING_TIME": 150, 218 | "LEFT_MIDDY_RING2_STREAK_DECAY": 150, 219 | "LEFT_MIDDY_RING2_REPEAT_DECAY": 300, 220 | "LEFT_INDEX_RING2_HOLDING_TYPE": "tap-preferred", 221 | "LEFT_INDEX_RING2_HOLDING_TIME": 150, 222 | "LEFT_INDEX_RING2_STREAK_DECAY": 150, 223 | "LEFT_INDEX_RING2_REPEAT_DECAY": 300, 224 | "RIGHT_PINKY_RING2_HOLDING_TYPE": "tap-preferred", 225 | "RIGHT_PINKY_RING2_HOLDING_TIME": 150, 226 | "RIGHT_PINKY_RING2_STREAK_DECAY": 150, 227 | "RIGHT_PINKY_RING2_REPEAT_DECAY": 300, 228 | "RIGHT_RING1_RING2_HOLDING_TYPE": "tap-preferred", 229 | "RIGHT_RING1_RING2_HOLDING_TIME": 150, 230 | "RIGHT_RING1_RING2_STREAK_DECAY": 150, 231 | "RIGHT_RING1_RING2_REPEAT_DECAY": 300, 232 | "RIGHT_MIDDY_RING2_HOLDING_TYPE": "tap-preferred", 233 | "RIGHT_MIDDY_RING2_HOLDING_TIME": 150, 234 | "RIGHT_MIDDY_RING2_STREAK_DECAY": 150, 235 | "RIGHT_MIDDY_RING2_REPEAT_DECAY": 300, 236 | "RIGHT_INDEX_RING2_HOLDING_TYPE": "tap-preferred", 237 | "RIGHT_INDEX_RING2_HOLDING_TIME": 150, 238 | "RIGHT_INDEX_RING2_STREAK_DECAY": 150, 239 | "RIGHT_INDEX_RING2_REPEAT_DECAY": 300, 240 | "LEFT_PINKY_MIDDY_HOLDING_TYPE": "tap-preferred", 241 | "LEFT_PINKY_MIDDY_HOLDING_TIME": 150, 242 | "LEFT_PINKY_MIDDY_STREAK_DECAY": 150, 243 | "LEFT_PINKY_MIDDY_REPEAT_DECAY": 300, 244 | "LEFT_RING1_MIDDY_HOLDING_TYPE": "tap-preferred", 245 | "LEFT_RING1_MIDDY_HOLDING_TIME": 150, 246 | "LEFT_RING1_MIDDY_STREAK_DECAY": 150, 247 | "LEFT_RING1_MIDDY_REPEAT_DECAY": 300, 248 | "LEFT_RING2_MIDDY_HOLDING_TYPE": "tap-preferred", 249 | "LEFT_RING2_MIDDY_HOLDING_TIME": 150, 250 | "LEFT_RING2_MIDDY_STREAK_DECAY": 150, 251 | "LEFT_RING2_MIDDY_REPEAT_DECAY": 300, 252 | "LEFT_INDEX_MIDDY_HOLDING_TYPE": "tap-preferred", 253 | "LEFT_INDEX_MIDDY_HOLDING_TIME": 150, 254 | "LEFT_INDEX_MIDDY_STREAK_DECAY": 150, 255 | "LEFT_INDEX_MIDDY_REPEAT_DECAY": 300, 256 | "RIGHT_PINKY_MIDDY_HOLDING_TYPE": "tap-preferred", 257 | "RIGHT_PINKY_MIDDY_HOLDING_TIME": 150, 258 | "RIGHT_PINKY_MIDDY_STREAK_DECAY": 150, 259 | "RIGHT_PINKY_MIDDY_REPEAT_DECAY": 300, 260 | "RIGHT_RING1_MIDDY_HOLDING_TYPE": "tap-preferred", 261 | "RIGHT_RING1_MIDDY_HOLDING_TIME": 150, 262 | "RIGHT_RING1_MIDDY_STREAK_DECAY": 150, 263 | "RIGHT_RING1_MIDDY_REPEAT_DECAY": 300, 264 | "RIGHT_RING2_MIDDY_HOLDING_TYPE": "tap-preferred", 265 | "RIGHT_RING2_MIDDY_HOLDING_TIME": 150, 266 | "RIGHT_RING2_MIDDY_STREAK_DECAY": 150, 267 | "RIGHT_RING2_MIDDY_REPEAT_DECAY": 300, 268 | "RIGHT_INDEX_MIDDY_HOLDING_TYPE": "tap-preferred", 269 | "RIGHT_INDEX_MIDDY_HOLDING_TIME": 150, 270 | "RIGHT_INDEX_MIDDY_STREAK_DECAY": 150, 271 | "RIGHT_INDEX_MIDDY_REPEAT_DECAY": 300, 272 | "LEFT_PINKY_INDEX_HOLDING_TYPE": "tap-preferred", 273 | "LEFT_PINKY_INDEX_HOLDING_TIME": 150, 274 | "LEFT_PINKY_INDEX_STREAK_DECAY": 150, 275 | "LEFT_PINKY_INDEX_REPEAT_DECAY": 300, 276 | "LEFT_RING1_INDEX_HOLDING_TYPE": "tap-preferred", 277 | "LEFT_RING1_INDEX_HOLDING_TIME": 150, 278 | "LEFT_RING1_INDEX_STREAK_DECAY": 150, 279 | "LEFT_RING1_INDEX_REPEAT_DECAY": 300, 280 | "LEFT_RING2_INDEX_HOLDING_TYPE": "tap-preferred", 281 | "LEFT_RING2_INDEX_HOLDING_TIME": 150, 282 | "LEFT_RING2_INDEX_STREAK_DECAY": 150, 283 | "LEFT_RING2_INDEX_REPEAT_DECAY": 300, 284 | "LEFT_MIDDY_INDEX_HOLDING_TYPE": "tap-preferred", 285 | "LEFT_MIDDY_INDEX_HOLDING_TIME": 150, 286 | "LEFT_MIDDY_INDEX_STREAK_DECAY": 150, 287 | "LEFT_MIDDY_INDEX_REPEAT_DECAY": 300, 288 | "RIGHT_PINKY_INDEX_HOLDING_TYPE": "tap-preferred", 289 | "RIGHT_PINKY_INDEX_HOLDING_TIME": 150, 290 | "RIGHT_PINKY_INDEX_STREAK_DECAY": 150, 291 | "RIGHT_PINKY_INDEX_REPEAT_DECAY": 300, 292 | "RIGHT_RING1_INDEX_HOLDING_TYPE": "tap-preferred", 293 | "RIGHT_RING1_INDEX_HOLDING_TIME": 150, 294 | "RIGHT_RING1_INDEX_STREAK_DECAY": 150, 295 | "RIGHT_RING1_INDEX_REPEAT_DECAY": 300, 296 | "RIGHT_RING2_INDEX_HOLDING_TYPE": "tap-preferred", 297 | "RIGHT_RING2_INDEX_HOLDING_TIME": 150, 298 | "RIGHT_RING2_INDEX_STREAK_DECAY": 150, 299 | "RIGHT_RING2_INDEX_REPEAT_DECAY": 300, 300 | "RIGHT_MIDDY_INDEX_HOLDING_TYPE": "tap-preferred", 301 | "RIGHT_MIDDY_INDEX_HOLDING_TIME": 150, 302 | "RIGHT_MIDDY_INDEX_STREAK_DECAY": 150, 303 | "RIGHT_MIDDY_INDEX_REPEAT_DECAY": 300, 304 | "STICKY_1SHOT_DECAY": 500, 305 | "STICKY_HOLDING_TIME": 200, 306 | "SELECT_WORD_DELAY": 1, 307 | "UNICODE_TAP_DELAY": 1, 308 | "UNICODE_SEQ_DELAY": 10, 309 | "EMOJI_GENDER_SIGN_PRESET": "N", 310 | "EMOJI_SKIN_TONE_PRESET": "N", 311 | "EMOJI_HAIR_STYLE_PRESET": "N", 312 | "MOUSE_MOTION_DELAY": 0, 313 | "MOUSE_MOTION_ACCELERATION_EXPONENT": 1, 314 | "MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED": 300, 315 | "MOUSE_MOTION_MAXIMUM_SPEED": 600, 316 | "MOUSE_SCROLL_DELAY": 0, 317 | "MOUSE_SCROLL_ACCELERATION_EXPONENT": 0, 318 | "MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED": 300, 319 | "MOUSE_SCROLL_MAXIMUM_SPEED": 10 320 | } 321 | } -------------------------------------------------------------------------------- /define.dot: -------------------------------------------------------------------------------- 1 | digraph settings { 2 | graph [rankdir=RL] 3 | 4 | subgraph defaults { 5 | 6 | OPERATING_SYSTEM -> "'L'" 7 | 8 | COMBO_FIRING_DECAY -> NUMBER_50 9 | 10 | TAPPING_RESOLUTION -> NUMBER_150 11 | 12 | RING1_FINGER_MOD -> LALT 13 | 14 | RING2_FINGER_MOD -> RALT 15 | 16 | INDEX_FINGER_MOD -> LSFT 17 | 18 | LEFT_PINKY_MOD -> PINKY_FINGER_MOD 19 | 20 | RIGHT_PINKY_MOD -> PINKY_FINGER_MOD 21 | 22 | LEFT_RING1_MOD -> RING1_FINGER_MOD 23 | 24 | RIGHT_RING1_MOD -> RING1_FINGER_MOD 25 | 26 | LEFT_RING2_MOD -> RING2_FINGER_MOD 27 | 28 | RIGHT_RING2_MOD -> RING2_FINGER_MOD 29 | 30 | LEFT_MIDDY_MOD -> MIDDY_FINGER_MOD 31 | 32 | RIGHT_MIDDY_MOD -> MIDDY_FINGER_MOD 33 | 34 | LEFT_INDEX_MOD -> INDEX_FINGER_MOD 35 | 36 | RIGHT_INDEX_MOD -> INDEX_FINGER_MOD 37 | 38 | HOMEY_HOLDING_TYPE -> "\"tap-preferred\"" 39 | 40 | HOMEY_HOLDING_TIME -> "+90" 41 | 42 | INDEX_HOLDING_TIME -> "+20" 43 | 44 | MIDDY_HOLDING_TIME -> "+60" 45 | 46 | RING1_HOLDING_TIME -> "+90" 47 | 48 | RING2_HOLDING_TIME -> RING1_HOLDING_TIME 49 | 50 | PINKY_HOLDING_TIME -> "+110" 51 | 52 | HOMEY_STREAK_DECAY -> TAPPING_RESOLUTION 53 | 54 | HOMEY_REPEAT_DECAY -> "+150" 55 | 56 | CHORD_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 57 | 58 | CHORD_HOLDING_TIME -> TAPPING_RESOLUTION 59 | 60 | CHORD_STREAK_DECAY -> HOMEY_STREAK_DECAY 61 | 62 | CHORD_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 63 | 64 | INDEX_HOLDING_TYPE -> "\"tap-preferred\"" 65 | 66 | INDEX_STREAK_DECAY -> "-50" 67 | 68 | INDEX_REPEAT_DECAY -> "+150" 69 | 70 | PLAIN_HOLDING_TYPE -> INDEX_HOLDING_TYPE 71 | 72 | PLAIN_HOLDING_TIME -> "+50" 73 | 74 | PLAIN_STREAK_DECAY -> HOMEY_STREAK_DECAY 75 | 76 | PLAIN_REPEAT_DECAY -> "+150" 77 | 78 | THUMB_HOLDING_TYPE -> "\"balanced\"" 79 | 80 | THUMB_HOLDING_TIME -> "+50" 81 | 82 | THUMB_REPEAT_DECAY -> "+150" 83 | 84 | SPACE_HOLDING_TYPE -> THUMB_HOLDING_TYPE 85 | 86 | SPACE_HOLDING_TIME -> "+20" 87 | 88 | SPACE_REPEAT_DECAY -> TAPPING_RESOLUTION 89 | 90 | PINKY_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 91 | 92 | PINKY_CHORD_HOLDING_TYPE -> CHORD_HOLDING_TYPE 93 | 94 | LEFT_PINKY_CHORD_HOLDING_TYPE -> PINKY_CHORD_HOLDING_TYPE 95 | 96 | RIGHT_PINKY_CHORD_HOLDING_TYPE -> PINKY_CHORD_HOLDING_TYPE 97 | 98 | PINKY_HOLDING_TIME -> HOMEY_HOLDING_TIME 99 | 100 | PINKY_CHORD_HOLDING_TIME -> CHORD_HOLDING_TIME 101 | 102 | LEFT_PINKY_CHORD_HOLDING_TIME -> PINKY_CHORD_HOLDING_TIME 103 | 104 | RIGHT_PINKY_CHORD_HOLDING_TIME -> PINKY_CHORD_HOLDING_TIME 105 | 106 | PINKY_STREAK_DECAY -> HOMEY_STREAK_DECAY 107 | 108 | PINKY_CHORD_STREAK_DECAY -> CHORD_STREAK_DECAY 109 | 110 | LEFT_PINKY_CHORD_STREAK_DECAY -> PINKY_CHORD_STREAK_DECAY 111 | 112 | RIGHT_PINKY_CHORD_STREAK_DECAY -> PINKY_CHORD_STREAK_DECAY 113 | 114 | PINKY_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 115 | 116 | PINKY_CHORD_REPEAT_DECAY -> CHORD_REPEAT_DECAY 117 | 118 | LEFT_PINKY_CHORD_REPEAT_DECAY -> PINKY_CHORD_REPEAT_DECAY 119 | 120 | RIGHT_PINKY_CHORD_REPEAT_DECAY -> PINKY_CHORD_REPEAT_DECAY 121 | 122 | RING1_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 123 | 124 | RING1_CHORD_HOLDING_TYPE -> CHORD_HOLDING_TYPE 125 | 126 | LEFT_RING1_CHORD_HOLDING_TYPE -> RING1_CHORD_HOLDING_TYPE 127 | 128 | RIGHT_RING1_CHORD_HOLDING_TYPE -> RING1_CHORD_HOLDING_TYPE 129 | 130 | RING1_HOLDING_TIME -> HOMEY_HOLDING_TIME 131 | 132 | RING1_CHORD_HOLDING_TIME -> CHORD_HOLDING_TIME 133 | 134 | LEFT_RING1_CHORD_HOLDING_TIME -> RING1_CHORD_HOLDING_TIME 135 | 136 | RIGHT_RING1_CHORD_HOLDING_TIME -> RING1_CHORD_HOLDING_TIME 137 | 138 | RING1_STREAK_DECAY -> HOMEY_STREAK_DECAY 139 | 140 | RING1_CHORD_STREAK_DECAY -> CHORD_STREAK_DECAY 141 | 142 | LEFT_RING1_CHORD_STREAK_DECAY -> RING1_CHORD_STREAK_DECAY 143 | 144 | RIGHT_RING1_CHORD_STREAK_DECAY -> RING1_CHORD_STREAK_DECAY 145 | 146 | RING1_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 147 | 148 | RING1_CHORD_REPEAT_DECAY -> CHORD_REPEAT_DECAY 149 | 150 | LEFT_RING1_CHORD_REPEAT_DECAY -> RING1_CHORD_REPEAT_DECAY 151 | 152 | RIGHT_RING1_CHORD_REPEAT_DECAY -> RING1_CHORD_REPEAT_DECAY 153 | 154 | RING2_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 155 | 156 | RING2_CHORD_HOLDING_TYPE -> CHORD_HOLDING_TYPE 157 | 158 | LEFT_RING2_CHORD_HOLDING_TYPE -> RING2_CHORD_HOLDING_TYPE 159 | 160 | RIGHT_RING2_CHORD_HOLDING_TYPE -> RING2_CHORD_HOLDING_TYPE 161 | 162 | RING2_HOLDING_TIME -> HOMEY_HOLDING_TIME 163 | 164 | RING2_CHORD_HOLDING_TIME -> CHORD_HOLDING_TIME 165 | 166 | LEFT_RING2_CHORD_HOLDING_TIME -> RING2_CHORD_HOLDING_TIME 167 | 168 | RIGHT_RING2_CHORD_HOLDING_TIME -> RING2_CHORD_HOLDING_TIME 169 | 170 | RING2_STREAK_DECAY -> HOMEY_STREAK_DECAY 171 | 172 | RING2_CHORD_STREAK_DECAY -> CHORD_STREAK_DECAY 173 | 174 | LEFT_RING2_CHORD_STREAK_DECAY -> RING2_CHORD_STREAK_DECAY 175 | 176 | RIGHT_RING2_CHORD_STREAK_DECAY -> RING2_CHORD_STREAK_DECAY 177 | 178 | RING2_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 179 | 180 | RING2_CHORD_REPEAT_DECAY -> CHORD_REPEAT_DECAY 181 | 182 | LEFT_RING2_CHORD_REPEAT_DECAY -> RING2_CHORD_REPEAT_DECAY 183 | 184 | RIGHT_RING2_CHORD_REPEAT_DECAY -> RING2_CHORD_REPEAT_DECAY 185 | 186 | MIDDY_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 187 | 188 | MIDDY_CHORD_HOLDING_TYPE -> CHORD_HOLDING_TYPE 189 | 190 | LEFT_MIDDY_CHORD_HOLDING_TYPE -> MIDDY_CHORD_HOLDING_TYPE 191 | 192 | RIGHT_MIDDY_CHORD_HOLDING_TYPE -> MIDDY_CHORD_HOLDING_TYPE 193 | 194 | MIDDY_HOLDING_TIME -> HOMEY_HOLDING_TIME 195 | 196 | MIDDY_CHORD_HOLDING_TIME -> CHORD_HOLDING_TIME 197 | 198 | LEFT_MIDDY_CHORD_HOLDING_TIME -> MIDDY_CHORD_HOLDING_TIME 199 | 200 | RIGHT_MIDDY_CHORD_HOLDING_TIME -> MIDDY_CHORD_HOLDING_TIME 201 | 202 | MIDDY_STREAK_DECAY -> HOMEY_STREAK_DECAY 203 | 204 | MIDDY_CHORD_STREAK_DECAY -> CHORD_STREAK_DECAY 205 | 206 | LEFT_MIDDY_CHORD_STREAK_DECAY -> MIDDY_CHORD_STREAK_DECAY 207 | 208 | RIGHT_MIDDY_CHORD_STREAK_DECAY -> MIDDY_CHORD_STREAK_DECAY 209 | 210 | MIDDY_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 211 | 212 | MIDDY_CHORD_REPEAT_DECAY -> CHORD_REPEAT_DECAY 213 | 214 | LEFT_MIDDY_CHORD_REPEAT_DECAY -> MIDDY_CHORD_REPEAT_DECAY 215 | 216 | RIGHT_MIDDY_CHORD_REPEAT_DECAY -> MIDDY_CHORD_REPEAT_DECAY 217 | 218 | INDEX_HOLDING_TYPE -> HOMEY_HOLDING_TYPE 219 | 220 | INDEX_CHORD_HOLDING_TYPE -> CHORD_HOLDING_TYPE 221 | 222 | LEFT_INDEX_CHORD_HOLDING_TYPE -> INDEX_CHORD_HOLDING_TYPE 223 | 224 | RIGHT_INDEX_CHORD_HOLDING_TYPE -> INDEX_CHORD_HOLDING_TYPE 225 | 226 | INDEX_HOLDING_TIME -> HOMEY_HOLDING_TIME 227 | 228 | INDEX_CHORD_HOLDING_TIME -> CHORD_HOLDING_TIME 229 | 230 | LEFT_INDEX_CHORD_HOLDING_TIME -> INDEX_CHORD_HOLDING_TIME 231 | 232 | RIGHT_INDEX_CHORD_HOLDING_TIME -> INDEX_CHORD_HOLDING_TIME 233 | 234 | INDEX_STREAK_DECAY -> HOMEY_STREAK_DECAY 235 | 236 | INDEX_CHORD_STREAK_DECAY -> CHORD_STREAK_DECAY 237 | 238 | LEFT_INDEX_CHORD_STREAK_DECAY -> INDEX_CHORD_STREAK_DECAY 239 | 240 | RIGHT_INDEX_CHORD_STREAK_DECAY -> INDEX_CHORD_STREAK_DECAY 241 | 242 | INDEX_REPEAT_DECAY -> HOMEY_REPEAT_DECAY 243 | 244 | INDEX_CHORD_REPEAT_DECAY -> CHORD_REPEAT_DECAY 245 | 246 | LEFT_INDEX_CHORD_REPEAT_DECAY -> INDEX_CHORD_REPEAT_DECAY 247 | 248 | RIGHT_INDEX_CHORD_REPEAT_DECAY -> INDEX_CHORD_REPEAT_DECAY 249 | 250 | LEFT_PINKY_HOLDING_TYPE -> PINKY_HOLDING_TYPE 251 | 252 | LEFT_PINKY_HOLDING_TIME -> PINKY_HOLDING_TIME 253 | 254 | LEFT_PINKY_STREAK_DECAY -> PINKY_STREAK_DECAY 255 | 256 | LEFT_PINKY_REPEAT_DECAY -> PINKY_REPEAT_DECAY 257 | 258 | RIGHT_PINKY_HOLDING_TYPE -> PINKY_HOLDING_TYPE 259 | 260 | RIGHT_PINKY_HOLDING_TIME -> PINKY_HOLDING_TIME 261 | 262 | RIGHT_PINKY_STREAK_DECAY -> PINKY_STREAK_DECAY 263 | 264 | RIGHT_PINKY_REPEAT_DECAY -> PINKY_REPEAT_DECAY 265 | 266 | LEFT_RING1_HOLDING_TYPE -> RING1_HOLDING_TYPE 267 | 268 | LEFT_RING1_HOLDING_TIME -> RING1_HOLDING_TIME 269 | 270 | LEFT_RING1_STREAK_DECAY -> RING1_STREAK_DECAY 271 | 272 | LEFT_RING1_REPEAT_DECAY -> RING1_REPEAT_DECAY 273 | 274 | RIGHT_RING1_HOLDING_TYPE -> RING1_HOLDING_TYPE 275 | 276 | RIGHT_RING1_HOLDING_TIME -> RING1_HOLDING_TIME 277 | 278 | RIGHT_RING1_STREAK_DECAY -> RING1_STREAK_DECAY 279 | 280 | RIGHT_RING1_REPEAT_DECAY -> RING1_REPEAT_DECAY 281 | 282 | LEFT_RING2_HOLDING_TYPE -> RING2_HOLDING_TYPE 283 | 284 | LEFT_RING2_HOLDING_TIME -> RING2_HOLDING_TIME 285 | 286 | LEFT_RING2_STREAK_DECAY -> RING2_STREAK_DECAY 287 | 288 | LEFT_RING2_REPEAT_DECAY -> RING2_REPEAT_DECAY 289 | 290 | RIGHT_RING2_HOLDING_TYPE -> RING2_HOLDING_TYPE 291 | 292 | RIGHT_RING2_HOLDING_TIME -> RING2_HOLDING_TIME 293 | 294 | RIGHT_RING2_STREAK_DECAY -> RING2_STREAK_DECAY 295 | 296 | RIGHT_RING2_REPEAT_DECAY -> RING2_REPEAT_DECAY 297 | 298 | LEFT_MIDDY_HOLDING_TYPE -> MIDDY_HOLDING_TYPE 299 | 300 | LEFT_MIDDY_HOLDING_TIME -> MIDDY_HOLDING_TIME 301 | 302 | LEFT_MIDDY_STREAK_DECAY -> MIDDY_STREAK_DECAY 303 | 304 | LEFT_MIDDY_REPEAT_DECAY -> MIDDY_REPEAT_DECAY 305 | 306 | RIGHT_MIDDY_HOLDING_TYPE -> MIDDY_HOLDING_TYPE 307 | 308 | RIGHT_MIDDY_HOLDING_TIME -> MIDDY_HOLDING_TIME 309 | 310 | RIGHT_MIDDY_STREAK_DECAY -> MIDDY_STREAK_DECAY 311 | 312 | RIGHT_MIDDY_REPEAT_DECAY -> MIDDY_REPEAT_DECAY 313 | 314 | LEFT_INDEX_HOLDING_TYPE -> INDEX_HOLDING_TYPE 315 | 316 | LEFT_INDEX_HOLDING_TIME -> INDEX_HOLDING_TIME 317 | 318 | LEFT_INDEX_STREAK_DECAY -> INDEX_STREAK_DECAY 319 | 320 | LEFT_INDEX_REPEAT_DECAY -> INDEX_REPEAT_DECAY 321 | 322 | RIGHT_INDEX_HOLDING_TYPE -> INDEX_HOLDING_TYPE 323 | 324 | RIGHT_INDEX_HOLDING_TIME -> INDEX_HOLDING_TIME 325 | 326 | RIGHT_INDEX_STREAK_DECAY -> INDEX_STREAK_DECAY 327 | 328 | RIGHT_INDEX_REPEAT_DECAY -> INDEX_REPEAT_DECAY 329 | 330 | LEFT_RING1_PINKY_HOLDING_TYPE -> LEFT_RING1_CHORD_HOLDING_TYPE 331 | 332 | LEFT_RING1_PINKY_HOLDING_TIME -> LEFT_RING1_CHORD_HOLDING_TIME 333 | 334 | LEFT_RING1_PINKY_STREAK_DECAY -> LEFT_RING1_CHORD_STREAK_DECAY 335 | 336 | LEFT_RING1_PINKY_REPEAT_DECAY -> LEFT_RING1_CHORD_REPEAT_DECAY 337 | 338 | LEFT_RING2_PINKY_HOLDING_TYPE -> LEFT_RING2_CHORD_HOLDING_TYPE 339 | 340 | LEFT_RING2_PINKY_HOLDING_TIME -> LEFT_RING2_CHORD_HOLDING_TIME 341 | 342 | LEFT_RING2_PINKY_STREAK_DECAY -> LEFT_RING2_CHORD_STREAK_DECAY 343 | 344 | LEFT_RING2_PINKY_REPEAT_DECAY -> LEFT_RING2_CHORD_REPEAT_DECAY 345 | 346 | LEFT_MIDDY_PINKY_HOLDING_TYPE -> LEFT_MIDDY_CHORD_HOLDING_TYPE 347 | 348 | LEFT_MIDDY_PINKY_HOLDING_TIME -> LEFT_MIDDY_CHORD_HOLDING_TIME 349 | 350 | LEFT_MIDDY_PINKY_STREAK_DECAY -> LEFT_MIDDY_CHORD_STREAK_DECAY 351 | 352 | LEFT_MIDDY_PINKY_REPEAT_DECAY -> LEFT_MIDDY_CHORD_REPEAT_DECAY 353 | 354 | LEFT_INDEX_PINKY_HOLDING_TYPE -> LEFT_INDEX_CHORD_HOLDING_TYPE 355 | 356 | LEFT_INDEX_PINKY_HOLDING_TIME -> LEFT_INDEX_CHORD_HOLDING_TIME 357 | 358 | LEFT_INDEX_PINKY_STREAK_DECAY -> LEFT_INDEX_CHORD_STREAK_DECAY 359 | 360 | LEFT_INDEX_PINKY_REPEAT_DECAY -> LEFT_INDEX_CHORD_REPEAT_DECAY 361 | 362 | RIGHT_RING1_PINKY_HOLDING_TYPE -> RIGHT_RING1_CHORD_HOLDING_TYPE 363 | 364 | RIGHT_RING1_PINKY_HOLDING_TIME -> RIGHT_RING1_CHORD_HOLDING_TIME 365 | 366 | RIGHT_RING1_PINKY_STREAK_DECAY -> RIGHT_RING1_CHORD_STREAK_DECAY 367 | 368 | RIGHT_RING1_PINKY_REPEAT_DECAY -> RIGHT_RING1_CHORD_REPEAT_DECAY 369 | 370 | RIGHT_RING2_PINKY_HOLDING_TYPE -> RIGHT_RING2_CHORD_HOLDING_TYPE 371 | 372 | RIGHT_RING2_PINKY_HOLDING_TIME -> RIGHT_RING2_CHORD_HOLDING_TIME 373 | 374 | RIGHT_RING2_PINKY_STREAK_DECAY -> RIGHT_RING2_CHORD_STREAK_DECAY 375 | 376 | RIGHT_RING2_PINKY_REPEAT_DECAY -> RIGHT_RING2_CHORD_REPEAT_DECAY 377 | 378 | RIGHT_MIDDY_PINKY_HOLDING_TYPE -> RIGHT_MIDDY_CHORD_HOLDING_TYPE 379 | 380 | RIGHT_MIDDY_PINKY_HOLDING_TIME -> RIGHT_MIDDY_CHORD_HOLDING_TIME 381 | 382 | RIGHT_MIDDY_PINKY_STREAK_DECAY -> RIGHT_MIDDY_CHORD_STREAK_DECAY 383 | 384 | RIGHT_MIDDY_PINKY_REPEAT_DECAY -> RIGHT_MIDDY_CHORD_REPEAT_DECAY 385 | 386 | RIGHT_INDEX_PINKY_HOLDING_TYPE -> RIGHT_INDEX_CHORD_HOLDING_TYPE 387 | 388 | RIGHT_INDEX_PINKY_HOLDING_TIME -> RIGHT_INDEX_CHORD_HOLDING_TIME 389 | 390 | RIGHT_INDEX_PINKY_STREAK_DECAY -> RIGHT_INDEX_CHORD_STREAK_DECAY 391 | 392 | RIGHT_INDEX_PINKY_REPEAT_DECAY -> RIGHT_INDEX_CHORD_REPEAT_DECAY 393 | 394 | LEFT_PINKY_RING1_HOLDING_TYPE -> LEFT_PINKY_CHORD_HOLDING_TYPE 395 | 396 | LEFT_PINKY_RING1_HOLDING_TIME -> LEFT_PINKY_CHORD_HOLDING_TIME 397 | 398 | LEFT_PINKY_RING1_STREAK_DECAY -> LEFT_PINKY_CHORD_STREAK_DECAY 399 | 400 | LEFT_PINKY_RING1_REPEAT_DECAY -> LEFT_PINKY_CHORD_REPEAT_DECAY 401 | 402 | LEFT_RING2_RING1_HOLDING_TYPE -> LEFT_RING2_CHORD_HOLDING_TYPE 403 | 404 | LEFT_RING2_RING1_HOLDING_TIME -> LEFT_RING2_CHORD_HOLDING_TIME 405 | 406 | LEFT_RING2_RING1_STREAK_DECAY -> LEFT_RING2_CHORD_STREAK_DECAY 407 | 408 | LEFT_RING2_RING1_REPEAT_DECAY -> LEFT_RING2_CHORD_REPEAT_DECAY 409 | 410 | LEFT_MIDDY_RING1_HOLDING_TYPE -> LEFT_MIDDY_CHORD_HOLDING_TYPE 411 | 412 | LEFT_MIDDY_RING1_HOLDING_TIME -> LEFT_MIDDY_CHORD_HOLDING_TIME 413 | 414 | LEFT_MIDDY_RING1_STREAK_DECAY -> LEFT_MIDDY_CHORD_STREAK_DECAY 415 | 416 | LEFT_MIDDY_RING1_REPEAT_DECAY -> LEFT_MIDDY_CHORD_REPEAT_DECAY 417 | 418 | LEFT_INDEX_RING1_HOLDING_TYPE -> LEFT_INDEX_CHORD_HOLDING_TYPE 419 | 420 | LEFT_INDEX_RING1_HOLDING_TIME -> LEFT_INDEX_CHORD_HOLDING_TIME 421 | 422 | LEFT_INDEX_RING1_STREAK_DECAY -> LEFT_INDEX_CHORD_STREAK_DECAY 423 | 424 | LEFT_INDEX_RING1_REPEAT_DECAY -> LEFT_INDEX_CHORD_REPEAT_DECAY 425 | 426 | RIGHT_PINKY_RING1_HOLDING_TYPE -> RIGHT_PINKY_CHORD_HOLDING_TYPE 427 | 428 | RIGHT_PINKY_RING1_HOLDING_TIME -> RIGHT_PINKY_CHORD_HOLDING_TIME 429 | 430 | RIGHT_PINKY_RING1_STREAK_DECAY -> RIGHT_PINKY_CHORD_STREAK_DECAY 431 | 432 | RIGHT_PINKY_RING1_REPEAT_DECAY -> RIGHT_PINKY_CHORD_REPEAT_DECAY 433 | 434 | RIGHT_RING2_RING1_HOLDING_TYPE -> RIGHT_RING2_CHORD_HOLDING_TYPE 435 | 436 | RIGHT_RING2_RING1_HOLDING_TIME -> RIGHT_RING2_CHORD_HOLDING_TIME 437 | 438 | RIGHT_RING2_RING1_STREAK_DECAY -> RIGHT_RING2_CHORD_STREAK_DECAY 439 | 440 | RIGHT_RING2_RING1_REPEAT_DECAY -> RIGHT_RING2_CHORD_REPEAT_DECAY 441 | 442 | RIGHT_MIDDY_RING1_HOLDING_TYPE -> RIGHT_MIDDY_CHORD_HOLDING_TYPE 443 | 444 | RIGHT_MIDDY_RING1_HOLDING_TIME -> RIGHT_MIDDY_CHORD_HOLDING_TIME 445 | 446 | RIGHT_MIDDY_RING1_STREAK_DECAY -> RIGHT_MIDDY_CHORD_STREAK_DECAY 447 | 448 | RIGHT_MIDDY_RING1_REPEAT_DECAY -> RIGHT_MIDDY_CHORD_REPEAT_DECAY 449 | 450 | RIGHT_INDEX_RING1_HOLDING_TYPE -> RIGHT_INDEX_CHORD_HOLDING_TYPE 451 | 452 | RIGHT_INDEX_RING1_HOLDING_TIME -> RIGHT_INDEX_CHORD_HOLDING_TIME 453 | 454 | RIGHT_INDEX_RING1_STREAK_DECAY -> RIGHT_INDEX_CHORD_STREAK_DECAY 455 | 456 | RIGHT_INDEX_RING1_REPEAT_DECAY -> RIGHT_INDEX_CHORD_REPEAT_DECAY 457 | 458 | LEFT_PINKY_RING2_HOLDING_TYPE -> LEFT_PINKY_CHORD_HOLDING_TYPE 459 | 460 | LEFT_PINKY_RING2_HOLDING_TIME -> LEFT_PINKY_CHORD_HOLDING_TIME 461 | 462 | LEFT_PINKY_RING2_STREAK_DECAY -> LEFT_PINKY_CHORD_STREAK_DECAY 463 | 464 | LEFT_PINKY_RING2_REPEAT_DECAY -> LEFT_PINKY_CHORD_REPEAT_DECAY 465 | 466 | LEFT_RING1_RING2_HOLDING_TYPE -> LEFT_RING1_CHORD_HOLDING_TYPE 467 | 468 | LEFT_RING1_RING2_HOLDING_TIME -> LEFT_RING1_CHORD_HOLDING_TIME 469 | 470 | LEFT_RING1_RING2_STREAK_DECAY -> LEFT_RING1_CHORD_STREAK_DECAY 471 | 472 | LEFT_RING1_RING2_REPEAT_DECAY -> LEFT_RING1_CHORD_REPEAT_DECAY 473 | 474 | LEFT_MIDDY_RING2_HOLDING_TYPE -> LEFT_MIDDY_CHORD_HOLDING_TYPE 475 | 476 | LEFT_MIDDY_RING2_HOLDING_TIME -> LEFT_MIDDY_CHORD_HOLDING_TIME 477 | 478 | LEFT_MIDDY_RING2_STREAK_DECAY -> LEFT_MIDDY_CHORD_STREAK_DECAY 479 | 480 | LEFT_MIDDY_RING2_REPEAT_DECAY -> LEFT_MIDDY_CHORD_REPEAT_DECAY 481 | 482 | LEFT_INDEX_RING2_HOLDING_TYPE -> LEFT_INDEX_CHORD_HOLDING_TYPE 483 | 484 | LEFT_INDEX_RING2_HOLDING_TIME -> LEFT_INDEX_CHORD_HOLDING_TIME 485 | 486 | LEFT_INDEX_RING2_STREAK_DECAY -> LEFT_INDEX_CHORD_STREAK_DECAY 487 | 488 | LEFT_INDEX_RING2_REPEAT_DECAY -> LEFT_INDEX_CHORD_REPEAT_DECAY 489 | 490 | RIGHT_PINKY_RING2_HOLDING_TYPE -> RIGHT_PINKY_CHORD_HOLDING_TYPE 491 | 492 | RIGHT_PINKY_RING2_HOLDING_TIME -> RIGHT_PINKY_CHORD_HOLDING_TIME 493 | 494 | RIGHT_PINKY_RING2_STREAK_DECAY -> RIGHT_PINKY_CHORD_STREAK_DECAY 495 | 496 | RIGHT_PINKY_RING2_REPEAT_DECAY -> RIGHT_PINKY_CHORD_REPEAT_DECAY 497 | 498 | RIGHT_RING1_RING2_HOLDING_TYPE -> RIGHT_RING1_CHORD_HOLDING_TYPE 499 | 500 | RIGHT_RING1_RING2_HOLDING_TIME -> RIGHT_RING1_CHORD_HOLDING_TIME 501 | 502 | RIGHT_RING1_RING2_STREAK_DECAY -> RIGHT_RING1_CHORD_STREAK_DECAY 503 | 504 | RIGHT_RING1_RING2_REPEAT_DECAY -> RIGHT_RING1_CHORD_REPEAT_DECAY 505 | 506 | RIGHT_MIDDY_RING2_HOLDING_TYPE -> RIGHT_MIDDY_CHORD_HOLDING_TYPE 507 | 508 | RIGHT_MIDDY_RING2_HOLDING_TIME -> RIGHT_MIDDY_CHORD_HOLDING_TIME 509 | 510 | RIGHT_MIDDY_RING2_STREAK_DECAY -> RIGHT_MIDDY_CHORD_STREAK_DECAY 511 | 512 | RIGHT_MIDDY_RING2_REPEAT_DECAY -> RIGHT_MIDDY_CHORD_REPEAT_DECAY 513 | 514 | RIGHT_INDEX_RING2_HOLDING_TYPE -> RIGHT_INDEX_CHORD_HOLDING_TYPE 515 | 516 | RIGHT_INDEX_RING2_HOLDING_TIME -> RIGHT_INDEX_CHORD_HOLDING_TIME 517 | 518 | RIGHT_INDEX_RING2_STREAK_DECAY -> RIGHT_INDEX_CHORD_STREAK_DECAY 519 | 520 | RIGHT_INDEX_RING2_REPEAT_DECAY -> RIGHT_INDEX_CHORD_REPEAT_DECAY 521 | 522 | LEFT_PINKY_MIDDY_HOLDING_TYPE -> LEFT_PINKY_CHORD_HOLDING_TYPE 523 | 524 | LEFT_PINKY_MIDDY_HOLDING_TIME -> LEFT_PINKY_CHORD_HOLDING_TIME 525 | 526 | LEFT_PINKY_MIDDY_STREAK_DECAY -> LEFT_PINKY_CHORD_STREAK_DECAY 527 | 528 | LEFT_PINKY_MIDDY_REPEAT_DECAY -> LEFT_PINKY_CHORD_REPEAT_DECAY 529 | 530 | LEFT_RING1_MIDDY_HOLDING_TYPE -> LEFT_RING1_CHORD_HOLDING_TYPE 531 | 532 | LEFT_RING1_MIDDY_HOLDING_TIME -> LEFT_RING1_CHORD_HOLDING_TIME 533 | 534 | LEFT_RING1_MIDDY_STREAK_DECAY -> LEFT_RING1_CHORD_STREAK_DECAY 535 | 536 | LEFT_RING1_MIDDY_REPEAT_DECAY -> LEFT_RING1_CHORD_REPEAT_DECAY 537 | 538 | LEFT_RING2_MIDDY_HOLDING_TYPE -> LEFT_RING2_CHORD_HOLDING_TYPE 539 | 540 | LEFT_RING2_MIDDY_HOLDING_TIME -> LEFT_RING2_CHORD_HOLDING_TIME 541 | 542 | LEFT_RING2_MIDDY_STREAK_DECAY -> LEFT_RING2_CHORD_STREAK_DECAY 543 | 544 | LEFT_RING2_MIDDY_REPEAT_DECAY -> LEFT_RING2_CHORD_REPEAT_DECAY 545 | 546 | LEFT_INDEX_MIDDY_HOLDING_TYPE -> LEFT_INDEX_CHORD_HOLDING_TYPE 547 | 548 | LEFT_INDEX_MIDDY_HOLDING_TIME -> LEFT_INDEX_CHORD_HOLDING_TIME 549 | 550 | LEFT_INDEX_MIDDY_STREAK_DECAY -> LEFT_INDEX_CHORD_STREAK_DECAY 551 | 552 | LEFT_INDEX_MIDDY_REPEAT_DECAY -> LEFT_INDEX_CHORD_REPEAT_DECAY 553 | 554 | RIGHT_PINKY_MIDDY_HOLDING_TYPE -> RIGHT_PINKY_CHORD_HOLDING_TYPE 555 | 556 | RIGHT_PINKY_MIDDY_HOLDING_TIME -> RIGHT_PINKY_CHORD_HOLDING_TIME 557 | 558 | RIGHT_PINKY_MIDDY_STREAK_DECAY -> RIGHT_PINKY_CHORD_STREAK_DECAY 559 | 560 | RIGHT_PINKY_MIDDY_REPEAT_DECAY -> RIGHT_PINKY_CHORD_REPEAT_DECAY 561 | 562 | RIGHT_RING1_MIDDY_HOLDING_TYPE -> RIGHT_RING1_CHORD_HOLDING_TYPE 563 | 564 | RIGHT_RING1_MIDDY_HOLDING_TIME -> RIGHT_RING1_CHORD_HOLDING_TIME 565 | 566 | RIGHT_RING1_MIDDY_STREAK_DECAY -> RIGHT_RING1_CHORD_STREAK_DECAY 567 | 568 | RIGHT_RING1_MIDDY_REPEAT_DECAY -> RIGHT_RING1_CHORD_REPEAT_DECAY 569 | 570 | RIGHT_RING2_MIDDY_HOLDING_TYPE -> RIGHT_RING2_CHORD_HOLDING_TYPE 571 | 572 | RIGHT_RING2_MIDDY_HOLDING_TIME -> RIGHT_RING2_CHORD_HOLDING_TIME 573 | 574 | RIGHT_RING2_MIDDY_STREAK_DECAY -> RIGHT_RING2_CHORD_STREAK_DECAY 575 | 576 | RIGHT_RING2_MIDDY_REPEAT_DECAY -> RIGHT_RING2_CHORD_REPEAT_DECAY 577 | 578 | RIGHT_INDEX_MIDDY_HOLDING_TYPE -> RIGHT_INDEX_CHORD_HOLDING_TYPE 579 | 580 | RIGHT_INDEX_MIDDY_HOLDING_TIME -> RIGHT_INDEX_CHORD_HOLDING_TIME 581 | 582 | RIGHT_INDEX_MIDDY_STREAK_DECAY -> RIGHT_INDEX_CHORD_STREAK_DECAY 583 | 584 | RIGHT_INDEX_MIDDY_REPEAT_DECAY -> RIGHT_INDEX_CHORD_REPEAT_DECAY 585 | 586 | LEFT_PINKY_INDEX_HOLDING_TYPE -> LEFT_PINKY_CHORD_HOLDING_TYPE 587 | 588 | LEFT_PINKY_INDEX_HOLDING_TIME -> LEFT_PINKY_CHORD_HOLDING_TIME 589 | 590 | LEFT_PINKY_INDEX_STREAK_DECAY -> LEFT_PINKY_CHORD_STREAK_DECAY 591 | 592 | LEFT_PINKY_INDEX_REPEAT_DECAY -> LEFT_PINKY_CHORD_REPEAT_DECAY 593 | 594 | LEFT_RING1_INDEX_HOLDING_TYPE -> LEFT_RING1_CHORD_HOLDING_TYPE 595 | 596 | LEFT_RING1_INDEX_HOLDING_TIME -> LEFT_RING1_CHORD_HOLDING_TIME 597 | 598 | LEFT_RING1_INDEX_STREAK_DECAY -> LEFT_RING1_CHORD_STREAK_DECAY 599 | 600 | LEFT_RING1_INDEX_REPEAT_DECAY -> LEFT_RING1_CHORD_REPEAT_DECAY 601 | 602 | LEFT_RING2_INDEX_HOLDING_TYPE -> LEFT_RING2_CHORD_HOLDING_TYPE 603 | 604 | LEFT_RING2_INDEX_HOLDING_TIME -> LEFT_RING2_CHORD_HOLDING_TIME 605 | 606 | LEFT_RING2_INDEX_STREAK_DECAY -> LEFT_RING2_CHORD_STREAK_DECAY 607 | 608 | LEFT_RING2_INDEX_REPEAT_DECAY -> LEFT_RING2_CHORD_REPEAT_DECAY 609 | 610 | LEFT_MIDDY_INDEX_HOLDING_TYPE -> LEFT_MIDDY_CHORD_HOLDING_TYPE 611 | 612 | LEFT_MIDDY_INDEX_HOLDING_TIME -> LEFT_MIDDY_CHORD_HOLDING_TIME 613 | 614 | LEFT_MIDDY_INDEX_STREAK_DECAY -> LEFT_MIDDY_CHORD_STREAK_DECAY 615 | 616 | LEFT_MIDDY_INDEX_REPEAT_DECAY -> LEFT_MIDDY_CHORD_REPEAT_DECAY 617 | 618 | RIGHT_PINKY_INDEX_HOLDING_TYPE -> RIGHT_PINKY_CHORD_HOLDING_TYPE 619 | 620 | RIGHT_PINKY_INDEX_HOLDING_TIME -> RIGHT_PINKY_CHORD_HOLDING_TIME 621 | 622 | RIGHT_PINKY_INDEX_STREAK_DECAY -> RIGHT_PINKY_CHORD_STREAK_DECAY 623 | 624 | RIGHT_PINKY_INDEX_REPEAT_DECAY -> RIGHT_PINKY_CHORD_REPEAT_DECAY 625 | 626 | RIGHT_RING1_INDEX_HOLDING_TYPE -> RIGHT_RING1_CHORD_HOLDING_TYPE 627 | 628 | RIGHT_RING1_INDEX_HOLDING_TIME -> RIGHT_RING1_CHORD_HOLDING_TIME 629 | 630 | RIGHT_RING1_INDEX_STREAK_DECAY -> RIGHT_RING1_CHORD_STREAK_DECAY 631 | 632 | RIGHT_RING1_INDEX_REPEAT_DECAY -> RIGHT_RING1_CHORD_REPEAT_DECAY 633 | 634 | RIGHT_RING2_INDEX_HOLDING_TYPE -> RIGHT_RING2_CHORD_HOLDING_TYPE 635 | 636 | RIGHT_RING2_INDEX_HOLDING_TIME -> RIGHT_RING2_CHORD_HOLDING_TIME 637 | 638 | RIGHT_RING2_INDEX_STREAK_DECAY -> RIGHT_RING2_CHORD_STREAK_DECAY 639 | 640 | RIGHT_RING2_INDEX_REPEAT_DECAY -> RIGHT_RING2_CHORD_REPEAT_DECAY 641 | 642 | RIGHT_MIDDY_INDEX_HOLDING_TYPE -> RIGHT_MIDDY_CHORD_HOLDING_TYPE 643 | 644 | RIGHT_MIDDY_INDEX_HOLDING_TIME -> RIGHT_MIDDY_CHORD_HOLDING_TIME 645 | 646 | RIGHT_MIDDY_INDEX_STREAK_DECAY -> RIGHT_MIDDY_CHORD_STREAK_DECAY 647 | 648 | RIGHT_MIDDY_INDEX_REPEAT_DECAY -> RIGHT_MIDDY_CHORD_REPEAT_DECAY 649 | 650 | STICKY_1SHOT_DECAY -> NUMBER_500 651 | 652 | STICKY_HOLDING_TIME -> "+50" 653 | 654 | SELECT_WORD_DELAY -> NUMBER_1 655 | 656 | UNICODE_TAP_DELAY -> NUMBER_1 657 | 658 | UNICODE_SEQ_DELAY -> NUMBER_10 659 | 660 | COMPOSE_KEY_LINUX -> RALT 661 | 662 | EMOJI_GENDER_SIGN_PRESET -> "'N'" 663 | 664 | EMOJI_SKIN_TONE_PRESET -> "'N'" 665 | 666 | EMOJI_HAIR_STYLE_PRESET -> "'N'" 667 | 668 | MOUSE_MOTION_DELAY -> NUMBER_0 669 | 670 | MOUSE_MOTION_ACCELERATION_EXPONENT -> NUMBER_1 671 | 672 | MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED -> NUMBER_300 673 | 674 | MOUSE_MOTION_MAXIMUM_SPEED -> NUMBER_600 675 | 676 | MOUSE_SCROLL_DELAY -> NUMBER_0 677 | 678 | MOUSE_SCROLL_ACCELERATION_EXPONENT -> NUMBER_0 679 | 680 | MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED -> NUMBER_300 681 | 682 | MOUSE_SCROLL_MAXIMUM_SPEED -> NUMBER_10 683 | 684 | 685 | "+90" -> TAPPING_RESOLUTION [color=red] 686 | 687 | "+20" -> TAPPING_RESOLUTION [color=red] 688 | 689 | "+60" -> TAPPING_RESOLUTION [color=red] 690 | 691 | "+110" -> TAPPING_RESOLUTION [color=red] 692 | 693 | "+150" -> TAPPING_RESOLUTION [color=red] 694 | 695 | "-50" -> TAPPING_RESOLUTION [color=red] 696 | 697 | "+50" -> TAPPING_RESOLUTION [color=red] 698 | 699 | } 700 | 701 | subgraph values { 702 | graph [rank=same] 703 | 704 | 705 | "'L'" [label="'L'", style=filled, fillcolor=cyan, shape=signature] 706 | 707 | "\"tap-preferred\"" [label="\"tap-preferred\"", style=filled, fillcolor=cyan, shape=signature] 708 | 709 | "+90" [label="+90", style=filled, fillcolor=cyan, shape=signature] 710 | 711 | "+150" [label="+150", style=filled, fillcolor=cyan, shape=signature] 712 | 713 | "+50" [label="+50", style=filled, fillcolor=cyan, shape=signature] 714 | 715 | "\"balanced\"" [label="\"balanced\"", style=filled, fillcolor=cyan, shape=signature] 716 | 717 | "+20" [label="+20", style=filled, fillcolor=cyan, shape=signature] 718 | 719 | "'N'" [label="'N'", style=filled, fillcolor=cyan, shape=signature] 720 | 721 | 722 | 723 | NUMBER_50 [label="50", style=filled, fillcolor=yellow, shape=signature] 724 | 725 | NUMBER_150 [label="150", style=filled, fillcolor=yellow, shape=signature] 726 | 727 | NUMBER_500 [label="500", style=filled, fillcolor=yellow, shape=signature] 728 | 729 | NUMBER_1 [label="1", style=filled, fillcolor=yellow, shape=signature] 730 | 731 | NUMBER_10 [label="10", style=filled, fillcolor=yellow, shape=signature] 732 | 733 | NUMBER_0 [label="0", style=filled, fillcolor=yellow, shape=signature] 734 | 735 | NUMBER_300 [label="300", style=filled, fillcolor=yellow, shape=signature] 736 | 737 | NUMBER_600 [label="600", style=filled, fillcolor=yellow, shape=signature] 738 | 739 | 740 | 741 | "+90" [label="+90", style=filled, fillcolor=salmon, shape=lpromoter] 742 | 743 | "+20" [label="+20", style=filled, fillcolor=salmon, shape=lpromoter] 744 | 745 | "+60" [label="+60", style=filled, fillcolor=salmon, shape=lpromoter] 746 | 747 | "+110" [label="+110", style=filled, fillcolor=salmon, shape=lpromoter] 748 | 749 | "+150" [label="+150", style=filled, fillcolor=salmon, shape=lpromoter] 750 | 751 | "-50" [label="-50", style=filled, fillcolor=salmon, shape=lpromoter] 752 | 753 | "+50" [label="+50", style=filled, fillcolor=salmon, shape=lpromoter] 754 | 755 | } 756 | } 757 | -------------------------------------------------------------------------------- /device.dtsi: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Mouse keys (control mouse via keyboard) -- requires PR23 beta firmware: 4 | // select "community.pr23.mouse-keys" from the drop-down menu located at 5 | // Glove80 Layout Editor > Settings > Advanced Settings > Firmware Version 6 | // 7 | // - https://github.com/moergo-sc/zmk/pull/23 8 | // - https://gist.github.com/krissen/dd27082e7ab0575619c7a31f4d2ec7ae 9 | // - https://github.com/zmkfirmware/zmk/compare/main...urob:zmk:mouse-3.2 10 | // 11 | ////////////////////////////////////////////////////////////////////////// 12 | 13 | // 14 | // MOUSE_MOTION_DELAY defines how long to wait (milliseconds) before starting 15 | // to move the mouse pointer. 16 | // 17 | #ifndef MOUSE_MOTION_DELAY 18 | #define MOUSE_MOTION_DELAY 0 19 | #endif 20 | 21 | // 22 | // MOUSE_MOTION_ACCELERATION_EXPONENT sets how the mouse pointer accelerates: 23 | // 24 | // acceleration exponent 0: uniform speed 25 | // acceleration exponent 1: uniform acceleration 26 | // acceleration exponent 2: uniform jerk 27 | // 28 | #ifndef MOUSE_MOTION_ACCELERATION_EXPONENT 29 | #define MOUSE_MOTION_ACCELERATION_EXPONENT 1 30 | #endif 31 | 32 | // 33 | // MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds) 34 | // before the mouse pointer speed is suddenly boosted to the maximum value. 35 | // 36 | #ifndef MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED 37 | #define MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED 300 38 | #endif 39 | 40 | // 41 | // MOUSE_MOTION_MAXIMUM_SPEED defines how quickly the mouse pointer can move. 42 | // 43 | #ifndef MOUSE_MOTION_MAXIMUM_SPEED 44 | #define MOUSE_MOTION_MAXIMUM_SPEED 600 45 | #endif 46 | 47 | // 48 | // MOUSE_SCROLL_DELAY defines how long to wait (milliseconds) before starting 49 | // to move the mouse pointer. 50 | // 51 | #ifndef MOUSE_SCROLL_DELAY 52 | #define MOUSE_SCROLL_DELAY 0 53 | #endif 54 | 55 | // 56 | // MOUSE_SCROLL_ACCELERATION_EXPONENT sets how the mouse pointer accelerates: 57 | // 58 | // acceleration exponent 0: uniform speed 59 | // acceleration exponent 1: uniform acceleration 60 | // acceleration exponent 2: uniform jerk 61 | // 62 | #ifndef MOUSE_SCROLL_ACCELERATION_EXPONENT 63 | #define MOUSE_SCROLL_ACCELERATION_EXPONENT 0 64 | #endif 65 | 66 | // 67 | // MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds) 68 | // before the mouse pointer speed is suddenly boosted to the maximum value. 69 | // 70 | #ifndef MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED 71 | #define MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED 300 72 | #endif 73 | 74 | // 75 | // MOUSE_SCROLL_MAXIMUM_SPEED defines how quickly the mouse wheel can scroll. 76 | // 77 | #ifndef MOUSE_SCROLL_MAXIMUM_SPEED 78 | #define MOUSE_SCROLL_MAXIMUM_SPEED 10 79 | #endif 80 | 81 | #if __has_include() 82 | // ==== MOUSE-KEY
==== 83 | #define ZMK_MOUSE_DEFAULT_MOVE_VAL MOUSE_MOTION_MAXIMUM_SPEED 84 | #define ZMK_MOUSE_DEFAULT_SCRL_VAL MOUSE_SCROLL_MAXIMUM_SPEED 85 | #include 86 | &mmv { 87 | delay-ms = ; 88 | acceleration-exponent = ; 89 | time-to-max-speed-ms = ; 90 | }; 91 | &msc { 92 | delay-ms = ; 93 | acceleration-exponent = ; 94 | time-to-max-speed-ms = ; 95 | }; 96 | // ==== MOUSE-KEY
===== 97 | #else 98 | #define mkp none 99 | #define mmv none 100 | #define msc none 101 | #define LCLK 102 | #define MCLK 103 | #define RCLK 104 | #define MB1 105 | #define MB2 106 | #define MB3 107 | #define MB4 108 | #define MB5 109 | #define MB6 110 | #define MB7 111 | #define MB8 112 | #define MOVE_UP 113 | #define MOVE_DOWN 114 | #define MOVE_LEFT 115 | #define MOVE_RIGHT 116 | #define SCRL_UP 117 | #define SCRL_DOWN 118 | #define SCRL_LEFT 119 | #define SCRL_RIGHT 120 | #endif 121 | 122 | ////////////////////////////////////////////////////////////////////////// 123 | // 124 | // Per-key RGB indicators for layers & mods -- requires PR30 beta firmware: 125 | // select "community.pr30.per-key-rgb" from the drop-down menu located at 126 | // Glove80 Layout Editor > Settings > Advanced Settings > Firmware Version 127 | // 128 | ////////////////////////////////////////////////////////////////////////// 129 | 130 | // 131 | // color definitions from QMK 132 | // https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h 133 | // 134 | #define AZURE 0x99F5FF // #99F5FF 135 | #define BLACK 0x000000 // #000000 136 | #define BLUE 0x0000FF // #0000FF 137 | #define CHARTRSE 0x80FF00 // #80FF00 138 | #define CORAL 0xFF7C4D // #FF7C4D 139 | #define CYAN 0x00FFFF // #00FFFF 140 | #define GOLD 0xFFD900 // #FFD900 141 | #define GOLDNROD 0xD9A521 // #D9A521 142 | #define GREEN 0x00FF00 // #00FF00 143 | #define MAGENTA 0xFF00FF // #FF00FF 144 | #define ORANGE 0xFF8000 // #FF8000 145 | #define PINK 0xFF80BF // #FF80BF 146 | #define PURPLE 0x7A00FF // #7A00FF 147 | #define RED 0xFF0000 // #FF0000 148 | #define SPRINGRN 0x00FF80 // #00FF80 149 | #define TEAL 0x008080 // #008080 150 | #define TURQUOIS 0x476E6A // #476E6A 151 | #define WHITE 0xFFFFFF // #FFFFFF 152 | #define YELLOW 0xFFFF00 // #FFFF00 153 | #define ________ BLACK // #000000 154 | 155 | #if __has_include() 156 | // ==== PER-KEY-RGB
==== 157 | #include 158 | / { 159 | underglow-layer { 160 | compatible = "zmk,underglow-layer"; 161 | 162 | /* 163 | Template { 164 | bindings = < 165 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 166 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 167 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 168 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 169 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 170 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 171 | >; 172 | layer-id = ; 173 | }; 174 | */ 175 | 176 | LeftPinky { 177 | bindings = < 178 | ________ MAGENTA ________ ________ ________ ________ ________ ________ MAGENTA ________ 179 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 180 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 181 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 182 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 183 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 184 | >; 185 | layer-id = ; 186 | }; 187 | 188 | LeftRing1 { 189 | bindings = < 190 | ________ ________ CYAN ________ ________ ________ ________ CYAN ________ ________ 191 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 192 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 193 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 194 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 195 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 196 | >; 197 | layer-id = ; 198 | }; 199 | 200 | LeftRing2 { 201 | bindings = < 202 | ________ ________ BLUE ________ ________ ________ ________ BLUE ________ ________ 203 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 204 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 205 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 206 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 207 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 208 | >; 209 | layer-id = ; 210 | }; 211 | 212 | LeftMiddy { 213 | bindings = < 214 | ________ ________ ________ GREEN ________ ________ GREEN ________ ________ ________ 215 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 216 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 217 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 218 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 219 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 220 | >; 221 | layer-id = ; 222 | }; 223 | 224 | LeftIndex { 225 | bindings = < 226 | ________ ________ ________ ________ YELLOW YELLOW ________ ________ ________ ________ 227 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 228 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 229 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 230 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 231 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 232 | >; 233 | layer-id = ; 234 | }; 235 | 236 | RightIndex { 237 | bindings = < 238 | ________ ________ ________ ________ YELLOW YELLOW ________ ________ ________ ________ 239 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 240 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 241 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 242 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 243 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 244 | >; 245 | layer-id = ; 246 | }; 247 | 248 | RightMiddy { 249 | bindings = < 250 | ________ ________ ________ GREEN ________ ________ GREEN ________ ________ ________ 251 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 252 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 253 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 254 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 255 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 256 | >; 257 | layer-id = ; 258 | }; 259 | 260 | RightRing1 { 261 | bindings = < 262 | ________ ________ CYAN ________ ________ ________ ________ CYAN ________ ________ 263 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 264 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 265 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 266 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 267 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 268 | >; 269 | layer-id = ; 270 | }; 271 | 272 | RightRing2 { 273 | bindings = < 274 | ________ ________ BLUE ________ ________ ________ ________ BLUE ________ ________ 275 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 276 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 277 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 278 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 279 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 280 | >; 281 | layer-id = ; 282 | }; 283 | 284 | RightPinky { 285 | bindings = < 286 | ________ MAGENTA ________ ________ ________ ________ ________ ________ MAGENTA ________ 287 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 288 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 289 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 290 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 291 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 292 | >; 293 | layer-id = ; 294 | }; 295 | 296 | Cursor { 297 | bindings = < 298 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 299 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 300 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 301 | ________ ________ ________ ________ ________ ________ ________ CYAN CYAN CYAN CYAN ________ 302 | ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 303 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 304 | >; 305 | layer-id = ; 306 | }; 307 | 308 | Number { 309 | bindings = < 310 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 311 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 312 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 313 | ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ 314 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 315 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 316 | >; 317 | layer-id = ; 318 | }; 319 | 320 | Function { 321 | bindings = < 322 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 323 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 324 | ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ 325 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 326 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 327 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 328 | >; 329 | layer-id = ; 330 | }; 331 | 332 | Emoji { 333 | bindings = < 334 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 335 | ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ 336 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 337 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 338 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 339 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 340 | >; 341 | layer-id = ; 342 | }; 343 | 344 | Symbol { 345 | bindings = < 346 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 347 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 348 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 349 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 350 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ 351 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 352 | >; 353 | layer-id = ; 354 | }; 355 | 356 | Mouse { 357 | bindings = < 358 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 359 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 360 | ________ ________ ________ CYAN ________ ________ ________ ________ ________ ________ ________ ________ 361 | ________ ________ CYAN CYAN CYAN ________ YELLOW ________ ________ ________ ________ ________ 362 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 363 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 364 | >; 365 | layer-id = ; 366 | }; 367 | 368 | System { 369 | bindings = < 370 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 371 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 372 | ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ 373 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 374 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 375 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 376 | >; 377 | layer-id = ; 378 | }; 379 | 380 | World { 381 | bindings = < 382 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 383 | ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ 384 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 385 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 386 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 387 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 388 | >; 389 | layer-id = ; 390 | }; 391 | 392 | Typing { 393 | bindings = < 394 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 395 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 396 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 397 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 398 | ________ ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 399 | ________ ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ ________ ________ 400 | >; 401 | layer-id = ; 402 | }; 403 | 404 | Gaming { 405 | bindings = < 406 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 407 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 408 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 409 | ________ ________ ________ CYAN ________ ________ ________ ________ ________ ________ ________ ________ 410 | ________ ________ CYAN CYAN CYAN ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ ________ ________ ________ 411 | ________ ________ ________ ________ ________ ________ ________ YELLOW ________ ________ ________ ________ ________ ________ ________ ________ 412 | >; 413 | layer-id = ; 414 | }; 415 | 416 | Lower { 417 | bindings = < 418 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 419 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 420 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 421 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 422 | ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ ________ 423 | ________ ________ ________ ________ ________ ________ ________ RED RED ________ ________ ________ ________ ________ ________ ________ 424 | >; 425 | layer-id = ; 426 | }; 427 | 428 | }; 429 | }; 430 | // ==== PER-KEY-RGB
===== 431 | #endif 432 | --------------------------------------------------------------------------------