aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano <warste@gmail.com>2019-08-24 18:08:54 +0200
committerDrashna Jaelre <drashna@live.com>2019-08-24 09:08:54 -0700
commitc9c33978ce4a86452503711a580107af13fa947d (patch)
tree4ed7c7ad29f785788ce8107af666e4661b082aea
parent2c8d8be7187e800cfd465674449255b25e5d02b9 (diff)
downloadqmk_firmware-c9c33978ce4a86452503711a580107af13fa947d.tar.gz
qmk_firmware-c9c33978ce4a86452503711a580107af13fa947d.zip
[Keymap] a keymap to "transform" a jj40 info a simil Alpha28, to enjoy its simplicity and power (#6599)
-rw-r--r--keyboards/jj40/keymaps/stevexyz/config.h45
-rw-r--r--keyboards/jj40/keymaps/stevexyz/keyboard-layout-editor-raw-data.txt4
-rw-r--r--keyboards/jj40/keymaps/stevexyz/keymap.c292
-rw-r--r--keyboards/jj40/keymaps/stevexyz/readme.md20
-rw-r--r--keyboards/jj40/keymaps/stevexyz/rules.mk22
5 files changed, 383 insertions, 0 deletions
diff --git a/keyboards/jj40/keymaps/stevexyz/config.h b/keyboards/jj40/keymaps/stevexyz/config.h
new file mode 100644
index 000000000..4d4825f9b
--- /dev/null
+++ b/keyboards/jj40/keymaps/stevexyz/config.h
@@ -0,0 +1,45 @@
1
2// Behaviors That Can Be Configured
3
4#define TAPPING_TERM 250
5 // how long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
6
7#define PERMISSIVE_HOLD
8 // makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM
9#define IGNORE_MOD_TAP_INTERRUPT
10 // makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys.
11
12/*
13 #define TAPPING_TERM_PER_KEY
14 // enables handling for per key TAPPING_TERM settings
15 #define RETRO_TAPPING
16 // tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
17 // See Retro Tapping for details
18 #define TAPPING_TOGGLE 2
19 // how many taps before triggering the toggle
20 #define TAPPING_FORCE_HOLD
21 // makes it possible to use a dual role key as modifier shortly after having been tapped
22 // See Hold after tap
23 // Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle)
24 #define LEADER_TIMEOUT 300
25 // how long before the leader key times out
26 // If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped.
27 #define LEADER_PER_KEY_TIMING
28 // sets the timer for leader key chords to run on each key press rather than overall
29 #define LEADER_KEY_STRICT_KEY_PROCESSING
30 // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
31 #define ONESHOT_TIMEOUT 300
32 // how long before oneshot times out
33 #define ONESHOT_TAP_TOGGLE 2
34 // how many taps before oneshot toggle is triggered
35 #define QMK_KEYS_PER_SCAN 4
36 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
37 #define COMBO_COUNT 2
38 // Set this to the number of combos that you're using in the Combo feature.
39 #define COMBO_TERM 200
40 // how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
41 #define TAP_CODE_DELAY 100
42 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
43 #define TAP_HOLD_CAPS_DELAY 80
44 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
45*/
diff --git a/keyboards/jj40/keymaps/stevexyz/keyboard-layout-editor-raw-data.txt b/keyboards/jj40/keymaps/stevexyz/keyboard-layout-editor-raw-data.txt
new file mode 100644
index 000000000..0117b5e2e
--- /dev/null
+++ b/keyboards/jj40/keymaps/stevexyz/keyboard-layout-editor-raw-data.txt
@@ -0,0 +1,4 @@
1[{c:"#eeddcc",g:true,a:7},"","","","","","","","","","","",""],
2["",{c:"#cccccc",g:false,a:4,fa:[2,1,5,5,8]},"F11\nF1\n!\n1\nQ","F12\nF2\n@\n2\nW","Layer Num\nF3\n#\n3\nE","Layer Light\nF4\n$\n4\nR","\nF5\n%\n5\nT","\nF6\n^\n6\nY","\nF7\n&\n7\nU","\nF8\n*\n8\nI","Layer Mouse\nF9\n(\n9\nO","\nF10\n)\n0\nP",{c:"#eeddcc",g:true,a:7},""],
3["",{c:"#cccccc",t:"#000000\n\n\n\n\n\n\n\n\n\n#804020",g:false,a:4,fa:[2,1,5,5,8,0,2,2,0,0,1]},"Caps\n\n\n\nA\n\nEsc\nTab\n\n\nshift",{fa:[2,2,5,5,8,0,2,2,0,0,1]},"<i class='fa fa-volume-off'></i>\n<i class='fa fa-angle-double-left'></i>\n~\n`\nS\n\n\n\n\n\nfn","<i class='fa fa-volume-down'></i>\n<i class='fa fa-angle-double-down'></i>\n_\n-\nD\n\n\n\n\n\nnum",{t:"#000000"},"<i class='fa fa-volume-up'></i>\n<i class='fa fa-angle-double-up'></i>\n+\n=\nF",{t:"#000000\n\n\n\n\n\n\n\n\n\n#804020"},"<i class='fa fa-play'></i>\n<i class='fa fa-angle-double-right'></i>\n{\n[\nG\n\n\n\n\n\n<i class='fa fa-apple'></i>","<i class='fa fa-step-forward'></i>\n<i class='fa fa-arrow-left'></i>\n}\n]\nH\n\n\n\n\n\n<i class='fa fa-apple'></i>",{t:"#000000"},"\n<i class='fa fa-arrow-down'></i>\n|\n\\\nJ",{t:"#000000\n\n\n\n\n\n\n\n\n\n#804020"},"\n<i class='fa fa-arrow-up'></i>\n:\n;\nK\n\n\n\n\n\nfn","\n<i class='fa fa-arrow-right'></i>\n\"\n'\nL\n\n\n\n\n\nnum",{c:"#eeddcc",f:1,fa:[2,2,5,5,8,0,2,2,0,0,0]},"Ins\n\n\n\n\n\nBS\nDel\n\n\nshift",{t:"#000000",g:true,a:7,f:3},""],
4["","",{c:"#cccccc",t:"#000000\n#804020",g:false,a:5,fa:[0,1,0,0,8]},"\nctrl\n\n\nZ","\nalt\n\n\nX",{t:"#000000\n\n\n\n\n\n\n\n\n\n#804020",a:4,fa:[2,1,0,0,8,0,0,0,0,0,1]},"^\n\n\n\nC\n\n\n\n\n\nfn","^\n\n\n\nV\n\n\n\n\n\nnum",{fa:[2,1,5,5,8,0,0,0,0,0,1]},"Prnt Scrn\n\n<\n,\nB\n\n\n\n\n\nshift","Scr Lock\n\n>\n.\nN\n\n\n\n\n\nalt","Paus\n\n?\n/\nM\n\n\n\n\n\nctrl",{t:"#000000\n#804020",a:5},"\nshift",{c:"#eeddcc",t:"#000000",g:true,a:7},"",""]
diff --git a/keyboards/jj40/keymaps/stevexyz/keymap.c b/keyboards/jj40/keymaps/stevexyz/keymap.c
new file mode 100644
index 000000000..4045d0710
--- /dev/null
+++ b/keyboards/jj40/keymaps/stevexyz/keymap.c
@@ -0,0 +1,292 @@
1/* Copyright 2019 Stefano Marago'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17
18/*
19 * This file is the QMK keymap to configure an ortholinear 40% keyboard
20 * (with 48 keys) into an ortholinear alpha-vderm 28 keys inspired layout
21 * "rules.mk" and "config.h" complete the configuration
22 */
23
24
25#include QMK_KEYBOARD_H
26
27enum layers {
28 LAYER_HOME, // home base layer
29 LAYER_FUNC, // function keys and cursors
30 LAYER_NUMSYM, // numbers and other characters
31 LAYER_SYST, // media and other system keys
32 LAYER_NUMONLY, // numeric keypad
33 LAYER_LIGHTS, // numeric keypad
34 LAYER_MOUSE, // mouse layer
35};
36
37enum custom_keycodes {
38 CK_TRIPLEZERO = SAFE_RANGE,
39};
40
41enum {
42 TD_ENT_BSPC = 0,
43 TD_KPENT_BSPC,
44 TD_E_GRAVE,
45 TD_A_GRAVE,
46 TD_O_GRAVE,
47 TD_U_GRAVE,
48 TD_I_GRAVE,
49 TD_E_ACUTE,
50};
51qk_tap_dance_action_t tap_dance_actions[] = {
52 [TD_ENT_BSPC] = ACTION_TAP_DANCE_DOUBLE(KC_ENT, KC_BSPC),
53 [TD_KPENT_BSPC] = ACTION_TAP_DANCE_DOUBLE(KC_KP_ENTER, KC_BSPC),
54 [TD_E_GRAVE] = ACTION_TAP_DANCE_DOUBLE(KC_E, KC_E),
55};
56
57
58const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
59
60/*
61 * LEGEND:
62 *
63 * ,--------------------------------.
64 * | Top row: shifted character |
65 * | Central row: standard char |
66 * | Bottom row: hold modifier |
67 * `--------------------------------'
68 *
69 * "____" means free to be assigned
70 *
71 */
72
73
74/* Qwerty Home Layer
75 * ,-----------------------------------------------------------------------------------.
76 * | | | | | | | | | | | | |
77 * | | | | | | | | | | | | |
78 * | | | | | | | | | | | | |
79 * |------+------+------+------+------+------+------+------+------+------+------+------|
80 * | | | | | | | | | | | | |
81 * | | Q | W | E | R | T | Y | U | I | O | P | |
82 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
83 * |------+------+------+------+------+-------------+------+------+------+------+------|
84 * | | | | | | | | | | | | |
85 * | | A | S | D | F | G | H | J | K | L | Enter| |
86 * | | Shift| FnNav|NumSym| ____ | OSkey| OSkey| ____ | FnNav|NumSym| Shift| |
87 * |------+------+------+------+------+------+------|------+------+------+------+------+
88 * | | | | | | | | | | | | |
89 * | | | Z | X | C | V | B | N | M | Space| | |
90 * | | | Ctrl | Alt | FnNav|NumSym| Shift| Alt | Ctrl | Shift| | |
91 * `-----------------------------------------------------------------------------------'
92 */
93 [LAYER_HOME] = LAYOUT_ortho_4x12(
94 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
95 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, XXXXXXX,
96 XXXXXXX, MT(MOD_LSFT, KC_A), LT(LAYER_FUNC, KC_S), LT(LAYER_NUMSYM, KC_D), KC_F, MT(MOD_LGUI, KC_G), MT(MOD_RGUI, KC_H), KC_J, LT(LAYER_FUNC, KC_K), LT(LAYER_NUMSYM, KC_L), MT(MOD_RSFT, KC_ENT), XXXXXXX,
97 XXXXXXX, XXXXXXX, MT(MOD_LCTL, KC_Z), MT(MOD_LALT, KC_X), LT(LAYER_FUNC, KC_C), LT(LAYER_NUMSYM, KC_V), MT(MOD_LSFT, KC_B), MT(MOD_RALT, KC_N), MT(MOD_RCTL, KC_M), MT(MOD_RSFT, KC_SPC), XXXXXXX, XXXXXXX ),
98
99/* Function and Navigation Layer
100 * ,-----------------------------------------------------------------------------------.
101 * | | | | | | | | | | | | |
102 * | | | | | | | | | | | | |
103 * | | | | | | | | | | | | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | | | | | | | | | | |
106 * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
107 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
108 * |------+------+------+------+------+-------------+------+------+------+------+------|
109 * | | | | | | | | | | | | |
110 * | | ESC | Home | PgDn | PgUp | End | Left | Down | Up | Right| Baksp| |
111 * | | Shift|xxxxxx|SysLay| ____ | ____ | ____ | ____ |xxxxxx|SysLay| Shift| |
112 * |------+------+------+------+------+------+------|------+------+------+------+------+
113 * | | | | | | | | | | | | |
114 * | | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | | |
115 * | | | Ctrl | Alt |xxxxxx|SysLay| Shift| Alt | Ctrl | Shift| | |
116 * `-----------------------------------------------------------------------------------'
117 */
118 [LAYER_FUNC] = LAYOUT_ortho_4x12(
119 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
120 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
121 XXXXXXX, MT(MOD_LSFT, KC_ESC), KC_HOME, LT(LAYER_SYST, KC_PGDN), KC_PGUP, KC_END, KC_LEFT, KC_DOWN, KC_UP, LT(LAYER_SYST, KC_RGHT), MT(MOD_RSFT, KC_BSPC), XXXXXXX,
122 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, KC_TRNS, MO(LAYER_SYST), KC_LSFT, KC_RALT, KC_RCTL, MT(MOD_RSFT, KC_SPC), XXXXXXX, XXXXXXX ),
123
124/* Number and Symbols Layer
125 * ,-----------------------------------------------------------------------------------.
126 * | | | | | | | | | | | | |
127 * | | | | | | | | | | | | |
128 * | | | | | | | | | | | | |
129 * |------+------+------+------+------+------+------+------+------+------+------+------|
130 * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
131 * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
132 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
133 * |------+------+------+------+------+-------------+------+------+------+------+------|
134 * | | | ~ | _ | + | { | } | | | : | " | | |
135 * | | TAB | ` | - | = | [ | ] | \ | ; | ' | | |
136 * | | Shift|SysLay|xxxxxx| ____ | ____ | ____ | ____ |SysLay|xxxxxx| Shift| |
137 * |------+------+------+------+------+------+------|------+------+------+------+------+
138 * | | | | | | | < | > | ? | | | |
139 * | | | ____ | ____ | ____ | ____ | , | . | / | ____ | | |
140 * | | | Ctrl | Alt |SysLay|xxxxxx| Shift| ____ | ____ | Shift| | |
141 * `-----------------------------------------------------------------------------------'
142 */
143 [LAYER_NUMSYM] = LAYOUT_ortho_4x12(
144 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
145 XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
146 XXXXXXX, MT(MOD_LSFT, KC_TAB), LT(LAYER_SYST, KC_GRV), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, LT(LAYER_SYST, KC_SCLN), KC_QUOT, MT(MOD_RSFT, KC_DEL), XXXXXXX,
147 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, MO(LAYER_SYST), KC_TRNS, MT(MOD_LSFT, KC_COMM), KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_SPC), XXXXXXX, XXXXXXX ),
148
149/* System Layer
150 * ,-----------------------------------------------------------------------------------.
151 * | | | | | | | | | | | | |
152 * | | | | | | | | | | | | |
153 * | | | | | | | | | | | | |
154 * |------+------+------+------+------+------+------+------+------+------+------+------|
155 * | | | | | | | | | | | | |
156 * | | F11 | F12 |NumLay|LghLay| ____ | ____ | ____ | ____ |MouLay|Backsp| |
157 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
158 * |------+------+------+------+------+-------------+------+------+------+------+------|
159 * | | | | | | | | | | | | |
160 * | | Caps | Mute | Vol- | Vol+ | Play | Next | ____ | ____ | ____ | Ins | |
161 * | | Shift| ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | Shift| |
162 * |------+------+------+------+------+------+------|------+------+------+------+------+
163 * | | | | | | | | | | | | |
164 * | | | ____ | ____ | ____ | ____ |PrnScr|ScrLck|Pause | ____ | | |
165 * | | | Ctrl | Alt | ____ | ____ | ____ | ____ | ____ | Shift| | |
166 * `-----------------------------------------------------------------------------------'
167 */
168 [LAYER_SYST] = LAYOUT_ortho_4x12(
169 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
170 XXXXXXX, KC_F11, KC_F12, TG(LAYER_NUMONLY), TG(LAYER_LIGHTS), KC_NO, KC_NO, KC_NO, KC_NO, TG(LAYER_MOUSE), KC_BSPC, XXXXXXX,
171 XXXXXXX, MT(MOD_LSFT, KC_CAPS), KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, MT(MOD_RSFT, KC_INS), XXXXXXX,
172 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, MT(MOD_RSFT, KC_SPC), XXXXXXX, XXXXXXX ),
173
174/* Numeric Keypad
175 * ,-----------------------------------------------------------------------------------.
176 * | | | | | | | | | | | | |
177 * | | | | | | | | | | | | |
178 * | | | | | | | | | | | | |
179 * |------+------+------+------+------+------+------+------+------+------+------+------|
180 * | | | | | | | | | | | | |
181 * | |NumLck| ____ |NumLay| / | * | - | 7 | 8 | 9 |Backsp| |
182 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
183 * |------+------+------+------+------+-------------+------+------+------+------+------|
184 * | | | | | | | | | | | | |
185 * | | Tab | ( | ) | = | , | + | 4 | 5 | 6 | Enter| |
186 * | | Shift| ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | Shift| |
187 * |------+------+------+------+------+------+------|------+------+------+------+------+
188 * | | | | | | | | | | | | |
189 * | | | ____ | ____ | 000 | . | 0 | 1 | 2 | 3 | | |
190 * | | | Ctrl | Alt | ____ | ____ | ____ | ____ | ____ | Shift| | |
191 * `-----------------------------------------------------------------------------------'
192 */
193 [LAYER_NUMONLY] = LAYOUT_ortho_4x12(
194 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
195 XXXXXXX, KC_NLCK, KC_NO, TG(LAYER_NUMONLY), KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_P7, KC_P8, KC_P9, KC_BSPC, XXXXXXX,
196 XXXXXXX, MT(MOD_LSFT, KC_TAB), KC_LPRN, KC_RPRN, KC_EQUAL, KC_KP_COMMA, KC_KP_PLUS, KC_P4, KC_P5, KC_P6, MT(MOD_LSFT, KC_KP_ENTER), XXXXXXX,
197 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, CK_TRIPLEZERO, KC_KP_DOT, KC_P0, KC_P1, KC_P2, MT(MOD_LSFT, KC_P3), XXXXXXX, XXXXXXX ),
198
199/* Backlight adjustment Layer
200 * ,-----------------------------------------------------------------------------------.
201 * | | | | | | | | | | | | |
202 * | | | | | | | | | | | | |
203 * | | | | | | | | | | | | |
204 * |------+------+------+------+------+------+------+------+------+------+------+------|
205 * | | | | | | | | | | | | |
206 * | | ____ | ____ | ____ |LghLay| ____ | Hue+ | Sat+ | Val+ | ____ | Plain| |
207 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
208 * |------+------+------+------+------+-------------+------+------+------+------+------|
209 * | | | | | | | | | | | | |
210 * | | ____ | ____ |ModeFw|ModeBw| ____ | Hue- | Sat- | Val- | ____ |Toggle| |
211 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
212 * |------+------+------+------+------+------+------|------+------+------+------+------+
213 * | | | | | | | | | | | | |
214 * | | |Breath|Rainbw| Swirl| Snake|Knight| XMas |Gradnt| Test | | |
215 * | | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | | |
216 * `-----------------------------------------------------------------------------------'
217 */
218 [LAYER_LIGHTS] = LAYOUT_ortho_4x12(
219 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
220 XXXXXXX, KC_NO, KC_NO, KC_NO, TG(LAYER_LIGHTS), KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, RGB_M_P, XXXXXXX,
221 XXXXXXX, KC_NO, KC_NO, RGB_MOD, RGB_RMOD, KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, RGB_TOG, XXXXXXX,
222 XXXXXXX, XXXXXXX, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_SNAKE, RGB_MODE_KNIGHT, RGB_MODE_XMAS, RGB_MODE_GRADIENT, RGB_MODE_RGBTEST, XXXXXXX, XXXXXXX ),
223
224/* Mouse emulation Layer
225 * ,-----------------------------------------------------------------------------------.
226 * | | | | | | | | | | | | |
227 * | | | | | | | | | | | | |
228 * | | | | | | | | | | | | |
229 * |------+------+------+------+------+------+------+------+------+------+------+------|
230 * | | | | | | | | | | | | |
231 * | | Btn1 | Up | Btn2 | Whl+ | Accl0| Accl1| Accl2| ____ |MouLay| ____ | |
232 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
233 * |------+------+------+------+------+-------------+------+------+------+------+------|
234 * | | | | | | | | | | | | |
235 * | | Left | Down | Right| Whl- | ____ | ____ | ____ | ____ | ____ | Enter| |
236 * | | ____ | ____ | ____ | ____ | OSkey| OSkey| ____ | ____ | ____ | ____ | |
237 * |------+------+------+------+------+------+------|------+------+------+------+------+
238 * | | | | | | | | | | | | |
239 * | | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | Space| | |
240 * | | | Ctrl | Alt | ____ | ____ | Shift| Alt | Ctrl | Shift| | |
241 * `-----------------------------------------------------------------------------------'
242 */
243 [LAYER_MOUSE] = LAYOUT_ortho_4x12(
244 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
245 XXXXXXX, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, KC_NO, TG(LAYER_MOUSE), KC_NO, XXXXXXX,
246 XXXXXXX, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_LGUI, KC_RGUI, KC_NO, KC_NO, KC_NO, KC_ENT, XXXXXXX,
247 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_LSFT, KC_RALT, KC_RCTL, MT(MOD_RSFT, KC_SPC), XXXXXXX, XXXXXXX ),
248
249};
250
251
252void matrix_init_user(void) {
253 // set num lock on at start independently of state (for numonly layer to work)
254 if (!(host_keyboard_leds() & (1<<USB_LED_NUM_LOCK))) {
255 SEND_STRING(SS_TAP(X_NUMLOCK)); //register_code(KC_NUMLOCK); unregister_code(KC_NUMLOCK);
256 }
257}
258
259void matrix_scan_user(void) {
260}
261
262bool process_record_user(uint16_t keycode, keyrecord_t *record) {
263 switch (keycode) {
264 case CK_TRIPLEZERO:
265 if (record->event.pressed) {
266 SEND_STRING("000");
267 } // else { when released... }
268 break;
269 }
270 return true;
271};
272
273
274/* Empty keyboard template
275 * ,-----------------------------------------------------------------------------------.
276 * | | | | | | | | | | | | |
277 * | | | | | | | | | | | | |
278 * | | | | | | | | | | | | |
279 * |------+------+------+------+------+------+------+------+------+------+------+------|
280 * | | | | | | | | | | | | |
281 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
282 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
283 * |------+------+------+------+------+-------------+------+------+------+------+------|
284 * | | | | | | | | | | | | |
285 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
286 * | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | |
287 * |------+------+------+------+------+------+------|------+------+------+------+------+
288 * | | | | | | | | | | | | |
289 * | | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | | |
290 * | | | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | | |
291 * `-----------------------------------------------------------------------------------'
292 */
diff --git a/keyboards/jj40/keymaps/stevexyz/readme.md b/keyboards/jj40/keymaps/stevexyz/readme.md
new file mode 100644
index 000000000..d404bcc0b
--- /dev/null
+++ b/keyboards/jj40/keymaps/stevexyz/readme.md
@@ -0,0 +1,20 @@
1# jj28 (aka jj40 super micro edition :))
2
3With this configuration a 4x12 jj40 (with 48 keys) is transformed into an ortholinear PyroL-vderm 28 keys inspired layout one. This keyboard can be actually called jj28!
4
5![Bare layout](https://i.ibb.co/7GK1LY7/layout-0.jpg)
6
7![Fully described](https://i.ibb.co/kxTfTXH/layout-4.jpg)
8
9Why you should want to do something like this?
10There are many valid reasons.
11The main one to me might just be to be able to test such an "extreme" configuration for real if you have this easily available board on hand.
12But also because this setup might be even more confortable than the original 2u space one (for muscle memory having bnm letters nearer to zxcv).
13Or just more nice looking.
14Surely you have an additional option, and personally, after using it as a daily driver, I liked it, even if I was a bit slower in processing complicated sequences! :)
15
16Notes on layout:
17After few tests I found out that the space at the end is the best for people that are very used to “standard” keyboards (basically almost everybody), retaining years of muscle memory.
18Moreover, also shift, fn and numsym layer keys are good to be replicated on central line (and also keeping in the order will allow a single finger shift+fn on the left and also shift+num on the right).
19
20[Keyboard layout editor](http://www.keyboard-layout-editor.com/#/) raw data in keyboard-layout-editor-raw-data.txt file.
diff --git a/keyboards/jj40/keymaps/stevexyz/rules.mk b/keyboards/jj40/keymaps/stevexyz/rules.mk
new file mode 100644
index 000000000..612e5d775
--- /dev/null
+++ b/keyboards/jj40/keymaps/stevexyz/rules.mk
@@ -0,0 +1,22 @@
1# Build Options (yes/no)
2#
3BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
4MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
5EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
6CONSOLE_ENABLE = no # Console for debug(+400)
7COMMAND_ENABLE = no # Commands for debug and configuration
8NKRO_ENABLE = no # USB Nkey Rollover (see: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work)
9BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
10RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
11RGBLIGHT_CUSTOM_DRIVER = yes
12MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
13UNICODE_ENABLE = no # Unicode
14BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
15AUDIO_ENABLE = no # Audio output on port C6
16FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
17HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
18
19TAP_DANCE_ENABLE = yes
20
21# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
22SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend