From 42e42822a12a931097ac7233f6caa1fbee814f20 Mon Sep 17 00:00:00 2001
From: "Peter J. A. Cock"
Date: Fri, 14 Feb 2025 11:02:20 +0000
Subject: [PATCH] Qwerty layout split 3x5 keyboard with 3 thumb keys each.
Typically small split keyboards like this use assorted key combinations
to access additional symbols, numbers, or navigation keys like cursors.
Very often this includes tap-vs-hold behaviour, whereby for example a
thumb key might be space if tapped, but shift if held. That complexity
seems beyond what this keyboard heatmap tool attempts to display.
Therefore the layout here as been simiplified to just use two modifiers,
left-shift on a left-thumb key, and AltGr on a right-thumb key. Then:
* Base layer, lower case Qwerty
* Shift layer, upper case Qwerty
* AltGr layer, ANSI number row symbols along top, digits on middle
row, and misc other punctuation from right side on bottom row
including tab and escape.
* Shift+AltGr layer, misc symbols including those top left/top right
on ANSI/ISO (like back-tick, minus, equals) and currency symbols
as the top row, and a vi-style row of cursors. Rest unused.
The thumb keys have been simplified to just left-shift, backspace,
delete (on left) and then enter, space, AltGr (on right).
This means there is no ctrl, nor meta/command/windows, nor left-alt.
i.e. This would not actually be practical for real use as standard
keyboard shortcuts would be impossible. However, the goal was mainly
to visualise the Qwerty part of the keyboard - and everything else
tends to be highly personalised in the ergonomic keyboard community.
---
split_3x5_3t_KeycodeMapping.json | 13 ++++++++++
split_3x5_3t_KeycodesToStrings.json | 38 +++++++++++++++++++++++++++++
split_3x5_3t_Layout.tsv | 37 ++++++++++++++++++++++++++++
3 files changed, 88 insertions(+)
create mode 100644 split_3x5_3t_KeycodeMapping.json
create mode 100644 split_3x5_3t_KeycodesToStrings.json
create mode 100644 split_3x5_3t_Layout.tsv
diff --git a/split_3x5_3t_KeycodeMapping.json b/split_3x5_3t_KeycodeMapping.json
new file mode 100644
index 0000000..27ac827
--- /dev/null
+++ b/split_3x5_3t_KeycodeMapping.json
@@ -0,0 +1,13 @@
+{
+ "hardwareKeycodeMapping": [
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35
+],
+ "displayMapping": {
+ "30": "⇧",
+ "34": "␣",
+ "35": "⇮"
+ }
+}
diff --git a/split_3x5_3t_KeycodesToStrings.json b/split_3x5_3t_KeycodesToStrings.json
new file mode 100644
index 0000000..08ecd43
--- /dev/null
+++ b/split_3x5_3t_KeycodesToStrings.json
@@ -0,0 +1,38 @@
+{
+ "0":["q", "Q", "!", "`"],
+ "1":["w", "W", "@", "€"],
+ "2":["e", "E", "#", "£"],
+ "3":["r", "R", "$", "¥"],
+ "4":["t", "T", "%", "¢"],
+ "5":["y", "Y", "^", "~"],
+ "6":["u", "U", "&", "_"],
+ "7":["i", "I", "*", "+"],
+ "8":["o", "O", "(", "-"],
+ "9":["p", "P", ")", "="],
+ "10":["a", "A", "1", ""],
+ "11":["s", "S", "2", ""],
+ "12":["d", "D", "3", ""],
+ "13":["f", "F", "4", ""],
+ "14":["g", "G", "5", ""],
+ "15":["h", "H", "6", "←"],
+ "16":["j", "J", "7", "↓"],
+ "17":["k", "K", "8", "↑"],
+ "18":["l", "L", "9", "→"],
+ "19":[";", ":", "0", ""],
+ "20":["z", "Z", "|", ""],
+ "21":["x", "X", "'", ""],
+ "22":["c", "C", "\"", ""],
+ "23":["v", "V", "⇥", "⇥"],
+ "24":["b", "B", "Esc", "Esc"],
+ "25":["n", "N", "{", ""],
+ "26":["m", "M", "}", ""],
+ "27":[",", "<", "[", ""],
+ "28":[".", ">", "]", ""],
+ "29":["/", "?" , "\\", ""],
+ "30":"left shift",
+ "31":"⌫",
+ "32":"⌦",
+ "33":"↩",
+ "34":"space",
+ "35":"altGr"
+}
diff --git a/split_3x5_3t_Layout.tsv b/split_3x5_3t_Layout.tsv
new file mode 100644
index 0000000..391a06e
--- /dev/null
+++ b/split_3x5_3t_Layout.tsv
@@ -0,0 +1,37 @@
+x y kind
+0 0.5 1x1
+1 0.2 1x1
+2 0 1x1
+3 0.2 1x1
+4 0.3 1x1
+9 0.3 1x1
+10 0.2 1x1
+11 0 1x1
+12 0.2 1x1
+13 0.5 1x1
+0 1.5 1x1
+1 1.2 1x1
+2 1 1x1
+3 1.2 1x1
+4 1.3 1x1
+9 1.3 1x1
+10 1.2 1x1
+11 1 1x1
+12 1.2 1x1
+13 1.5 1x1
+0 2.5 1x1
+1 2.2 1x1
+2 2 1x1
+3 2.2 1x1
+4 2.3 1x1
+9 2.3 1x1
+10 2.2 1x1
+11 2 1x1
+12 2.2 1x1
+13 2.5 1x1
+2.5 3.2 1x1
+3.5 3.3 1x1
+4.5 3.3 1x1.5
+8.5 3.3 1x1.5
+9.5 3.3 1x1
+10.5 3.2 1x1