aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpacebarRacecar <42380065+SpacebarRacecar@users.noreply.github.com>2018-10-05 00:00:33 +0200
committerDrashna Jaelre <drashna@live.com>2018-10-04 15:00:33 -0700
commit26adf3706a7822e05977c0eadb6963c0db2e1c3b (patch)
tree39fe2ec31b10c3b03a305c2cb3c34490fff9a9cc
parentdad579c8f81bdde08e598f9d99249893d5d779a8 (diff)
downloadqmk_firmware-26adf3706a7822e05977c0eadb6963c0db2e1c3b.tar.gz
qmk_firmware-26adf3706a7822e05977c0eadb6963c0db2e1c3b.zip
Keymap: Added personal userspace and keymaps. (#4073)
* added personal userspace, niu mini, planck and fc660c keymaps * removed unnecessary include and some other minor corrections
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/README.md4
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/config.h9
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/keymap.c38
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/rules.mk6
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/config.h0
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/keymap.c126
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/readme.md3
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/rules.mk22
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/config.h3
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/keymap.c148
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/readme.md4
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/rules.mk23
-rw-r--r--users/spacebarracecar/config.h0
-rw-r--r--users/spacebarracecar/rules.mk5
-rw-r--r--users/spacebarracecar/spacebarracecar.c305
-rw-r--r--users/spacebarracecar/spacebarracecar.h242
16 files changed, 938 insertions, 0 deletions
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/README.md b/keyboards/fc660c/keymaps/spacebarracecar/README.md
new file mode 100644
index 000000000..7d87ef8cf
--- /dev/null
+++ b/keyboards/fc660c/keymaps/spacebarracecar/README.md
@@ -0,0 +1,4 @@
1# US International keymap for PCs with German set as input language
2
3This keymap emulates a US International layout including a deadkey layer on PCs that have German set as the input language.
4This allows the use of the keyboard on any PC in Germany without the need of changing the input language.
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/config.h b/keyboards/fc660c/keymaps/spacebarracecar/config.h
new file mode 100644
index 000000000..9c9b00656
--- /dev/null
+++ b/keyboards/fc660c/keymaps/spacebarracecar/config.h
@@ -0,0 +1,9 @@
1#pragma once
2
3// higher value means deeper actuation point, less sensitive
4// be careful and only make small adjustments (steps of 1 or 2).
5// too high and keys will fail to actuate. too low and keys will actuate spontaneously.
6// test all keys before further adjustment.
7// this should probably stay in the range +/-5.
8#undef ACTUATION_DEPTH_ADJUSTMENT
9#define ACTUATION_DEPTH_ADJUSTMENT +2
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/keymap.c b/keyboards/fc660c/keymaps/spacebarracecar/keymap.c
new file mode 100644
index 000000000..2cbef10bb
--- /dev/null
+++ b/keyboards/fc660c/keymaps/spacebarracecar/keymap.c
@@ -0,0 +1,38 @@
1#include QMK_KEYBOARD_H
2#include "spacebarracecar.h"
3
4enum layers {
5 _BASE
6};
7
8const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
9
10 [_BASE] = LAYOUT(
11 KC_ESC, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, DE_MINS,CU_EQL, KC_BSPC, KC_INS,
12 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, CU_Z, KC_U, KC_I, KC_O, KC_P, CU_LBRC,CU_RBRC,CU_BSLS, KC_DEL,
13 CU_NAV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, CU_SCLN,CU_QUOT, KC_ENT,
14 CU_LSFT,CU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, CU_COMM,CU_DOT, CU_SLSH,CU_RSFT, KC_UP,
15 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
16 ),
17
18 [_DEADKEY] = LAYOUT(
19 CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______, CU_ED,
20 _______,CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED,
21 _______,CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ, CU_DDQ ,
22 _______,CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______, _______,
23 _______,_______,_______, CU_DDQ, _______,_______,_______, _______,_______,_______
24 ),
25
26 [_NAV] = LAYOUT(
27 CU_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, CU_GAME,
28 _______,KC_PGDN,KC_UP, KC_PGUP,KC_HOME,XXXXXXX,XXXXXXX,XXXXXXX,GUIU, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, CU_ESCT,
29 _______,KC_LEFT,KC_DOWN,KC_RGHT,KC_END, XXXXXXX,XXXXXXX,GUIL, GUID, GUIR, XXXXXXX,XXXXXXX, KC_ENT,
30 _______,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,KC_MUTE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, KC_PGUP,
31 RESET, _______,_______, _______, _______,_______,_______, KC_HOME,KC_PGDN,KC_END
32 )
33
34};
35
36bool process_record_user(uint16_t keycode, keyrecord_t *record) {
37 return process_record_userspace(keycode, record);
38}
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/rules.mk b/keyboards/fc660c/keymaps/spacebarracecar/rules.mk
new file mode 100644
index 000000000..8ee642a4a
--- /dev/null
+++ b/keyboards/fc660c/keymaps/spacebarracecar/rules.mk
@@ -0,0 +1,6 @@
1BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
2EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
3NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
4
5# Userspace defines
6GERMAN_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with German set as input language
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/config.h b/keyboards/niu_mini/keymaps/spacebarracecar/config.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/config.h
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c b/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c
new file mode 100644
index 000000000..b850e5fda
--- /dev/null
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c
@@ -0,0 +1,126 @@
1#include QMK_KEYBOARD_H
2#include "spacebarracecar.h"
3
4#define LOWER MO(_LOWER)
5#define RAISE MO(_RAISE)
6
7enum layers {
8 _BASE,
9 _LOWER,
10 _RAISE
11};
12
13const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
14
15/* Base Layer
16,-----------------------------------------------------------------------------------------------------------------------.
17|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
18|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
19|Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |
20|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
21|Shift |Y |X |C |V |B |N |M |, |. |/ |Shift |
22|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
23|LCtrl | |Win |Alt |Lower |Space |Enter |Raise |AltGr |Win |Menu |RCtrl |
24`-----------------------------------------------------------------------------------------------------------------------'
25*/
26
27[_BASE] = LAYOUT_ortho_4x12(
28 KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
29 CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT,
30 CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT,
31 KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
32),
33
34/* Lower
35,-----------------------------------------------------------------------------------------------------------------------.
36|~ |! |" |# |$ |% |^ |& |* |( |) | |
37|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
38| |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |
39|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
40| |? | | | | | | | | | | |
41|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
42| | | | | | | | | | | | |
43`-----------------------------------------------------------------------------------------------------------------------'
44*/
45[_LOWER] = LAYOUT_ortho_4x12(
46 DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______,
47 _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE,
48 _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
50),
51
52/* Raise
53,-----------------------------------------------------------------------------------------------------------------------.
54|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
55|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
56| |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |
57|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
58| |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |
59|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
60| | | | | | | | | | | | |
61`-----------------------------------------------------------------------------------------------------------------------'
62*/
63
64[_RAISE] = LAYOUT_ortho_4x12(
65 CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______,
66 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS,
67 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
69),
70
71/* Dead-Key
72,-----------------------------------------------------------------------------------------------------------------------.
73| | | | | | | |Ü | |Ö | | |
74|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
75| |Ä |ß | | | | | | | | | |
76|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
77| | | | | | | | | | | | |
78|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
79| | | | | |" |" | | | | | |
80`-----------------------------------------------------------------------------------------------------------------------'
81*/
82
83[_DEADKEY] = LAYOUT_ortho_4x12(
84 KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, _______,
85 _______, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ,
86 _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______,
87 _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______
88),
89
90/* Nav
91,-----------------------------------------------------------------------------------------------------------------------.
92|Caps Lock|PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
93|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
94| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
95|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
96| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
97|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
98| | | | | | | | | | |RESET | |
99`-----------------------------------------------------------------------------------------------------------------------'
100*/
101
102[_NAV] = LAYOUT_ortho_4x12(
103 CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
104 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, RGB_M_P, KC_ENT,
105 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, RGB_TOG, RGB_MOD, RGB_HUI, CU_RGBV, _______,
106 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CU_GAME
107)
108
109};
110
111bool process_record_user(uint16_t keycode, keyrecord_t *record) {
112switch (keycode) {
113 case MO(_LOWER):
114 if (game){
115 if(record->event.pressed) {
116 register_code(KC_SPC);
117 } else {
118 unregister_code(KC_SPC);
119 }
120 return false;
121 } else {
122 return true;
123 }
124 }
125 return process_record_userspace(keycode, record);
126}
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/readme.md b/keyboards/niu_mini/keymaps/spacebarracecar/readme.md
new file mode 100644
index 000000000..88d722186
--- /dev/null
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/readme.md
@@ -0,0 +1,3 @@
1# US-International like Niu Mini layout for PCs with German set as input language
2
3This layout aims to provide a US-International like layout for PCs that have German set as Input Language. This is useful for users living in germany, because it enables the use of the Niu Mini on any pc without having to switch the input language. It's mostly based on the Planck default layout, but adds essential features for german input, like a dead key layer to access ä, ö, ü.
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/rules.mk b/keyboards/niu_mini/keymaps/spacebarracecar/rules.mk
new file mode 100644
index 000000000..b1d7055da
--- /dev/null
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/rules.mk
@@ -0,0 +1,22 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = no # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20
21# Userspace defines
22GERMAN_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with German set as input language
diff --git a/keyboards/planck/keymaps/spacebarracecar/config.h b/keyboards/planck/keymaps/spacebarracecar/config.h
new file mode 100644
index 000000000..9b55fa93a
--- /dev/null
+++ b/keyboards/planck/keymaps/spacebarracecar/config.h
@@ -0,0 +1,3 @@
1#ifdef AUDIO_ENABLE
2 #define STARTUP_SONG SONG(NO_SOUND)
3#endif
diff --git a/keyboards/planck/keymaps/spacebarracecar/keymap.c b/keyboards/planck/keymaps/spacebarracecar/keymap.c
new file mode 100644
index 000000000..705f78f8e
--- /dev/null
+++ b/keyboards/planck/keymaps/spacebarracecar/keymap.c
@@ -0,0 +1,148 @@
1#include QMK_KEYBOARD_H
2#include "spacebarracecar.h"
3
4#define LOWER MO(_LOWER)
5#define RAISE MO(_RAISE)
6
7enum layers {
8 _BASE,
9 _LOWER,
10 _RAISE,
11 _MUSICMODE
12};
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15
16/* Base Layer
17,-----------------------------------------------------------------------------------------------------------------------.
18|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
19|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
20|Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |
21|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
22|Shift |Y |X |C |V |B |N |M |, |. |/ |Shift |
23|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
24|LCtrl | |Win |Alt |Lower |Space |Enter |Raise |AltGr |Win |Menu |RCtrl |
25`-----------------------------------------------------------------------------------------------------------------------'
26*/
27
28[_BASE] = LAYOUT_ortho_4x12(
29 KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
30 CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT,
31 CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT,
32 KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
33),
34
35/* Lower
36,-----------------------------------------------------------------------------------------------------------------------.
37|~ |! |" |# |$ |% |^ |& |* |( |) | |
38|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
39| |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |
40|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
41| |? | | | | | | | | | | |
42|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
43| | | | | | | | | | | | |
44`-----------------------------------------------------------------------------------------------------------------------'
45*/
46[_LOWER] = LAYOUT_ortho_4x12(
47 DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______,
48 _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE,
49 _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
51),
52
53/* Raise
54,-----------------------------------------------------------------------------------------------------------------------.
55|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
56|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
57| |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |
58|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
59| |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |
60|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
61| | | | | | | | | | | | |
62`-----------------------------------------------------------------------------------------------------------------------'
63*/
64
65[_RAISE] = LAYOUT_ortho_4x12(
66 CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______,
67 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS,
68 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
70),
71
72[_MUSICMODE] = LAYOUT_ortho_4x12(
73 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
74 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
75 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
76 KC_LCTL, KC_LALT, KC_LGUI, KC_DOWN, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_MOD, MU_OFF
77),
78
79/* Dead-Key
80,-----------------------------------------------------------------------------------------------------------------------.
81| | | | | | | |Ü | |Ö | | |
82|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
83| |Ä |ß | | | | | | | | | |
84|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
85| | | | | | | | | | | | |
86|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
87| | | | | |" |" | | | | | |
88`-----------------------------------------------------------------------------------------------------------------------'
89*/
90
91[_DEADKEY] = LAYOUT_ortho_4x12(
92 KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, KC_BSPC,
93 CU_NAV, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ,
94 CU_LSFT, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_RSFT,
95 KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
96),
97
98/* Nav
99,-----------------------------------------------------------------------------------------------------------------------.
100|Caps Lock|PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
101|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
102| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
103|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
104| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
105|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
106| | | | | | | | | | |RESET | |
107`-----------------------------------------------------------------------------------------------------------------------'
108*/
109
110[_NAV] = LAYOUT_ortho_4x12(
111 CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
112 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, XXXXXXX, KC_ENT,
113 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
114 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CU_GAME
115)
116
117};
118
119bool process_record_user(uint16_t keycode, keyrecord_t *record) {
120switch (keycode) {
121 case MO(_LOWER):
122 if (game){
123 if(record->event.pressed) {
124 register_code(KC_SPC);
125 } else {
126 unregister_code(KC_SPC);
127 }
128 return false;
129 } else {
130 return true;
131 }
132 case MU_ON:
133 if(record->event.pressed) {
134 layer_off(_LOWER);
135 layer_off(_RAISE);
136 layer_off(_NAV);
137 layer_off(_DEADKEY);
138 layer_on(_MUSICMODE);
139 }
140 return true;
141 case MU_OFF:
142 if(record->event.pressed) {
143 layer_off(_MUSICMODE);
144 }
145 return true;
146 }
147 return process_record_userspace(keycode, record);
148}
diff --git a/keyboards/planck/keymaps/spacebarracecar/readme.md b/keyboards/planck/keymaps/spacebarracecar/readme.md
new file mode 100644
index 000000000..daa9c4ad2
--- /dev/null
+++ b/keyboards/planck/keymaps/spacebarracecar/readme.md
@@ -0,0 +1,4 @@
1# US-International like Planck layout for PCs with German set as input language
2
3This layout aims to provide a US-International like layout for PCs that have German set as Input Language. This is useful for users living in germany, because it enables the use of the planck on any pc without having to switch the input language. It's mostly based on the Planck default layout, but adds essential features for german input, like a dead key layer to access ä, ö, ü.
4
diff --git a/keyboards/planck/keymaps/spacebarracecar/rules.mk b/keyboards/planck/keymaps/spacebarracecar/rules.mk
new file mode 100644
index 000000000..fbdd1217c
--- /dev/null
+++ b/keyboards/planck/keymaps/spacebarracecar/rules.mk
@@ -0,0 +1,23 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = no # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = yes # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20
21# Userspace defines
22GERMAN_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with German set as input language
23
diff --git a/users/spacebarracecar/config.h b/users/spacebarracecar/config.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/users/spacebarracecar/config.h
diff --git a/users/spacebarracecar/rules.mk b/users/spacebarracecar/rules.mk
new file mode 100644
index 000000000..319e887ae
--- /dev/null
+++ b/users/spacebarracecar/rules.mk
@@ -0,0 +1,5 @@
1SRC += spacebarracecar.c
2
3ifeq ($(strip $(GERMAN_ENABLE)), yes)
4 OPT_DEFS += -DGERMAN_ENABLE
5endif
diff --git a/users/spacebarracecar/spacebarracecar.c b/users/spacebarracecar/spacebarracecar.c
new file mode 100644
index 000000000..404331f8d
--- /dev/null
+++ b/users/spacebarracecar/spacebarracecar.c
@@ -0,0 +1,305 @@
1#include "spacebarracecar.h"
2
3#ifdef GERMAN_ENABLE
4bool lshift = false;
5bool rshift = false;
6bool lshiftp = false;
7bool rshiftp = false;
8uint16_t lshift_timer = 0;
9uint16_t rshift_timer = 0;
10
11uint8_t prev_indx = 0;
12uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0};
13
14bool esct = false;
15
16void add_to_prev(uint16_t kc){
17 for (int i=0; i<prev_indx; i++){
18 if (kc == prev_kcs[i])
19 return;
20 }
21 if (prev_indx == 6){
22 for (int i=5; i>0; i--){
23 prev_kcs[i] = prev_kcs[i-1];
24 }
25 prev_kcs[0] = kc;
26 } else {
27 prev_kcs[prev_indx] = kc;
28 prev_indx++;
29 }
30}
31
32void unreg_prev(void){
33 if (prev_indx == 0)
34 return;
35 for (int i=0; i<prev_indx; i++){
36 unregister_code(prev_kcs[i]);
37 }
38 prev_indx = 0;
39}
40#endif
41
42// stuff for nav esc
43bool navesc = false;
44uint16_t navesc_timer = 0;
45bool game = false;
46
47void timer_timeout(void){
48 #ifdef GERMAN_ENABLE
49 lshiftp = false;
50 rshiftp = false;
51 #endif
52 navesc = false;
53}
54
55bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
56 switch (keycode) {
57 case CU_GAME:
58 if(record->event.pressed) {
59 game = !game;
60 }
61 return false;
62 case KC_LGUI:
63 case KC_RGUI:
64 if (game)
65 return false;
66 else
67 return true;
68 case CU_NAV:
69 if(record->event.pressed) {
70 navesc = true;
71 navesc_timer = timer_read();
72 layer_on(_NAV);
73 } else {
74 if (timer_elapsed(navesc_timer) < 200 && navesc) {
75 register_code(KC_ESC);
76 unregister_code(KC_ESC);
77 }
78 layer_off(_NAV);
79 }
80 return false;
81
82 #ifdef RGBLIGHT_ENABLE
83 case CU_RGBV:
84 if(record->event.pressed) {
85 if (rgblight_get_val()+32>255)
86 rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), 31);
87 else
88 rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()+32);
89 }
90 return false;
91 #endif
92
93 #ifdef GERMAN_ENABLE
94 case CU_LSFT:
95 if(record->event.pressed) {
96 lshiftp = true;
97 lshift_timer = timer_read();
98 unregister_code(KC_LSFT);
99 register_code(KC_LSFT);
100 lshift = true;
101 } else {
102 if (timer_elapsed(lshift_timer) < 200 && lshiftp && !game) {
103 register_code(KC_LSFT);
104 register_code(KC_8);
105 unregister_code(KC_8);
106 unregister_code(KC_LSFT);
107 }
108 unreg_prev();
109 if (!rshift)
110 unregister_code(KC_LSFT);
111 lshift = false;
112 }
113 return false;
114 case CU_RSFT:
115 if(record->event.pressed) {
116 rshiftp = true;
117 rshift_timer = timer_read();
118 unregister_code(KC_LSFT);
119 register_code(KC_LSFT);
120 rshift = true;
121 } else {
122 if (timer_elapsed(rshift_timer) < 200 && rshiftp && !game) {
123 register_code(KC_LSFT);
124 register_code(KC_9);
125 unregister_code(KC_9);
126 unregister_code(KC_LSFT);
127 }
128 unreg_prev();
129 if (!lshift)
130 unregister_code(KC_LSFT);
131 rshift = false;
132 }
133 return false;
134 case CU_ESCT:
135 if(record->event.pressed) {
136 esct = !esct;
137 }
138 return false;
139 case CU_AE:
140 UML(DE_AE)
141 case CU_OE:
142 UML(DE_OE)
143 case CU_UE:
144 UML(DE_UE)
145 case CU_SS:
146 if(record->event.pressed) {
147 timer_timeout();
148 unregister_code(KC_LSFT);
149 register_code(DE_SS);
150 unregister_code(DE_SS);
151 if (lshift || rshift)
152 register_code(KC_LSFT);
153 layer_off(_DEADKEY);
154 }
155 return false;
156 case CU_DDQ:
157 if(record->event.pressed) {
158 timer_timeout();
159 register_code(KC_LSFT);
160 register_code(KC_2);
161 unregister_code(KC_2);
162 if (!lshift && !rshift)
163 unregister_code(KC_LSFT);
164 layer_off(_DEADKEY);
165 }
166 return false;
167 case CU_ED:
168 if(record->event.pressed) {
169 timer_timeout();
170 layer_off(_DEADKEY);
171 }
172 return false;
173 case CU_GRV:
174 if(record->event.pressed) {
175 timer_timeout();
176 if (lshift || rshift){
177 unregister_code(KC_LSFT);
178 register_code(DE_ALGR);
179 unregister_code(DE_PLUS);
180 register_code(DE_PLUS);
181 unregister_code(DE_PLUS);
182 unregister_code(DE_ALGR);
183 register_code(KC_LSFT);
184 } else {
185 register_code(KC_LSFT);
186 unregister_code(DE_ACUT);
187 register_code(DE_ACUT);
188 unregister_code(DE_ACUT);
189 unregister_code(KC_LSFT);
190 if (!esct) {
191 register_code(KC_SPC);
192 unregister_code(KC_SPC);
193 }
194 }
195 }
196 return false;
197 case CU_CIRC:
198 if(record->event.pressed) {
199 timer_timeout();
200 unregister_code(KC_LSFT);
201 unregister_code(DE_CIRC);
202 register_code(DE_CIRC);
203 unregister_code(DE_CIRC);
204 if (!esct) {
205 register_code(KC_SPC);
206 unregister_code(KC_SPC);
207 }
208 if (lshift || rshift)
209 register_code(KC_LSFT);
210 }
211 return false;
212 case CU_QUOT:
213 if(record->event.pressed){
214 timer_timeout();
215 register_code(KC_LSFT);
216 if (lshift || rshift){
217 layer_on(_DEADKEY);
218 } else {
219 unregister_code(DE_HASH);
220 register_code(DE_HASH);
221 add_to_prev(DE_HASH);
222 }
223 } else {
224 unregister_code(DE_HASH);
225 unreg_prev();
226 if (lshift || rshift)
227 register_code(KC_LSFT);
228 else
229 unregister_code(KC_LSFT);
230 }
231 return false;
232 case CU_6:
233 if(record->event.pressed){
234 timer_timeout();
235 unregister_code(KC_LSFT);
236 if (lshift || rshift){
237 unregister_code(DE_CIRC);
238 register_code(DE_CIRC);
239 unregister_code(DE_CIRC);
240 if (!esct) {
241 register_code(KC_SPC);
242 unregister_code(KC_SPC);
243 }
244 register_code(KC_LSFT);
245 } else {
246 register_code(DE_6);
247 }
248 } else {
249 unregister_code(DE_6);
250 }
251 return false;
252 case CU_COMM:
253 SHIFT_NO(DE_COMM, DE_LESS)
254 case CU_DOT:
255 SHIFT_NORM(DE_DOT, DE_LESS)
256 case CU_SLSH:
257 SHIFT_ALL(DE_7, DE_SS)
258 case CU_SCLN:
259 SHIFT_ALL(DE_COMM, DE_DOT)
260 case CU_3:
261 SHIFT_NO(DE_3, DE_HASH)
262 case CU_7:
263 SHIFT_NORM(DE_7, DE_6)
264 case CU_8:
265 SHIFT_NORM(DE_8, DE_PLUS)
266 case CU_9:
267 SHIFT_NORM(DE_9, DE_8)
268 case CU_0:
269 SHIFT_NORM(DE_0, DE_9)
270 case CU_EQL:
271 SHIFT_SWITCH(DE_0, DE_PLUS)
272 case CU_LBRC:
273 SHIFT_ALGR(DE_8, DE_7)
274 case CU_RBRC:
275 SHIFT_ALGR(DE_9, DE_0)
276 case CU_BSLS:
277 SHIFT_ALGR(DE_SS, DE_LESS)
278 case CU_Z:
279 CTRL(DE_Z, KC_Z)
280 case CU_Y:
281 CTRL(DE_Y, KC_Y)
282 case KC_LCTL:
283 case KC_RCTL:
284 if(!record->event.pressed) {
285 unregister_code(KC_Z);
286 unregister_code(KC_Y);
287 }
288 return true;
289 #endif
290
291 default:
292 if(record->event.pressed) {
293 timer_timeout();
294
295 #ifdef GERMAN_ENABLE
296 if (lshift || rshift)
297 register_code(KC_LSFT);
298 else
299 unregister_code(KC_LSFT);
300 #endif
301
302 }
303 return true;
304 }
305}
diff --git a/users/spacebarracecar/spacebarracecar.h b/users/spacebarracecar/spacebarracecar.h
new file mode 100644
index 000000000..42879d2ef
--- /dev/null
+++ b/users/spacebarracecar/spacebarracecar.h
@@ -0,0 +1,242 @@
1#pragma once
2
3#include "quantum.h"
4#include "keymap_german.h"
5
6enum userspace_layers {
7 _DEADKEY = 14, //change if more than 16 layers are required
8 _NAV
9};
10
11enum userspace_custom_keycodes {
12 CU_GAME = SAFE_RANGE, // Toggle game mode on/off
13 CU_NAV, // NAV | ESC
14
15 #ifdef GERMAN_ENABLE
16 CU_LSFT, // LSFT | (
17 CU_RSFT, // LSFT | )
18 CU_COMM, // , | <
19 CU_DOT, // . | >
20 CU_SLSH, // / | ?
21 CU_SCLN, // ; | :
22 CU_QUOT, // ' | Enable deadkey layer
23 CU_GRV, // ` | ~
24 CU_CIRC, // ^
25 CU_3, // 3 | #
26 CU_6, // 6 | ^
27 CU_7, // 7 | &
28 CU_8, // 8 | *
29 CU_9, // 9 | (
30 CU_0, // 0 | )
31 CU_EQL, // = | +
32 CU_LBRC, // [ | {
33 CU_RBRC, // ] | }
34 CU_BSLS, // \ | |
35 CU_Z, // Z | Y in conjunction with ctrl
36 CU_Y, // Y | Z in conjunction wiht ctrl
37 CU_ESCT, // Toggle escape of grv and circ on/off
38 // Deadkey Layer
39 CU_AE, // Ä
40 CU_OE, // Ö
41 CU_UE, // Ü
42 CU_SS, // ß
43 CU_DDQ, // "
44 CU_ED, // Escape deadkey layer
45 #endif
46
47 #ifdef RGBLIGHT_ENABLE
48 CU_RGBV, // Cycle through RGB brightness
49 #endif
50
51 NEW_SAFE_RANGE // Use for keymap specific keycodes
52};
53
54#ifdef GERMAN_ENABLE
55// these save the current shift status
56extern bool lshift;
57extern bool rshift;
58// stuff for custom space cadet shift
59extern bool lshiftp;
60extern bool rshiftp;
61extern uint16_t lshift_timer;
62extern uint16_t rshift_timer;
63
64extern uint8_t prev_indx;
65extern uint16_t prev_kcs[6];
66
67void add_to_prev(uint16_t kc);
68void unreg_prev(void);
69
70extern bool esct;
71#endif
72
73// stuff for nav esc
74extern bool navesc;
75extern uint16_t navesc_timer;
76
77extern bool game;
78
79void timer_timeout(void);
80
81bool process_record_userspace(uint16_t keycode, keyrecord_t *record);
82
83#define CTRLX LCTL(KC_X)
84#define CTRLC LCTL(KC_C)
85#define CTRLV LCTL(KC_V)
86
87#define GUIU LGUI(KC_UP)
88#define GUID LGUI(KC_DOWN)
89#define GUIL LGUI(KC_LEFT)
90#define GUIR RGUI(KC_RIGHT)
91
92//
93// Templates for Keys, with custom shifted and non shifted Characters
94//
95
96// Normal shift status
97#define SHIFT_NORM(kc1, kc2) \
98if (record->event.pressed) { \
99 timer_timeout(); \
100 if (lshift || rshift) { \
101 register_code(KC_LSFT); \
102 unregister_code(kc2); \
103 register_code(kc2); \
104 add_to_prev(kc2); \
105 } else { \
106 unregister_code(KC_LSFT); \
107 unregister_code(kc1); \
108 register_code(kc1); \
109 } \
110} else { \
111 unregister_code(kc1); \
112 unregister_code(kc2); \
113} \
114return false;
115
116// Inverted shift status
117#define SHIFT_SWITCH(kc1, kc2) \
118if (record->event.pressed) { \
119 timer_timeout(); \
120 if (lshift || rshift) { \
121 unregister_code(KC_LSFT); \
122 unregister_code(kc2); \
123 register_code(kc2); \
124 add_to_prev(kc2); \
125 } else { \
126 register_code(KC_LSFT); \
127 unregister_code(kc1); \
128 register_code(kc1); \
129 add_to_prev(kc1); \
130 } \
131} else { \
132 unregister_code(kc1); \
133 unregister_code(kc2); \
134 unreg_prev(); \
135 if (lshift || rshift) \
136 register_code(KC_LSFT); \
137 else \
138 unregister_code(KC_LSFT); \
139} \
140return false;
141
142// All shift
143#define SHIFT_ALL(kc1, kc2) \
144if (record->event.pressed) { \
145 timer_timeout(); \
146 register_code(KC_LSFT); \
147 if (lshift || rshift) { \
148 unregister_code(kc2); \
149 register_code(kc2); \
150 add_to_prev(kc2); \
151 } else { \
152 unregister_code(kc1); \
153 register_code(kc1); \
154 add_to_prev(kc1); \
155 } \
156} else { \
157 unregister_code(kc1); \
158 unregister_code(kc2); \
159 unreg_prev(); \
160 if (lshift || rshift) \
161 register_code(KC_LSFT); \
162 else \
163 unregister_code(KC_LSFT); \
164} \
165return false;
166
167// All no shift
168#define SHIFT_NO(kc1, kc2) \
169if (record->event.pressed) { \
170 timer_timeout(); \
171 unregister_code(KC_LSFT); \
172 if (lshift || rshift) { \
173 unregister_code(kc2); \
174 register_code(kc2); \
175 add_to_prev(kc2); \
176 } else { \
177 unregister_code(kc1); \
178 register_code(kc1); \
179 } \
180} else { \
181 unregister_code(kc1); \
182 unregister_code(kc2); \
183 unreg_prev(); \
184 if (lshift || rshift) \
185 register_code(KC_LSFT); \
186 else \
187 unregister_code(KC_LSFT); \
188} \
189return false;
190
191// All algr
192#define SHIFT_ALGR(kc1, kc2) \
193if (record->event.pressed) { \
194 timer_timeout(); \
195 unregister_code(KC_LSFT); \
196 register_code(DE_ALGR); \
197 if (lshift || rshift) { \
198 unregister_code(kc2); \
199 register_code(kc2); \
200 unregister_code(kc2); \
201 register_code(KC_LSFT); \
202 } else { \
203 unregister_code(kc1); \
204 register_code(kc1); \
205 unregister_code(kc1); \
206 } \
207 unregister_code(DE_ALGR); \
208} \
209return false;
210
211// Different keycode for ctrl
212#define CTRL(kc1, kc2) \
213if(record->event.pressed) { \
214 timer_timeout(); \
215 if (lshift || rshift) \
216 register_code(KC_LSFT); \
217 else \
218 unregister_code(KC_LSFT); \
219 if (keyboard_report->mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))){ \
220 register_code(kc2); \
221 } else { \
222 register_code(kc1); \
223 } \
224} else { \
225 unregister_code(kc1); \
226 unregister_code(kc2); \
227} \
228return false;
229
230// Umlaute for deadkey layer
231#define UML(kc) \
232if(record->event.pressed) { \
233 timer_timeout(); \
234 if (lshift || rshift) \
235 register_code(KC_LSFT); \
236 else \
237 unregister_code(KC_LSFT); \
238 register_code(kc); \
239 unregister_code(kc); \
240 layer_off(_DEADKEY); \
241} \
242return false;