aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpacebarRacecar <42380065+SpacebarRacecar@users.noreply.github.com>2018-10-22 22:23:22 +0200
committerDrashna Jaelre <drashna@live.com>2018-10-22 13:23:22 -0700
commit704a2e8d3c0bd15f6c8accd5a39fb88ca6c9e2d5 (patch)
treee3ed96d6cc1d4a78c65db1dc571956feeaef83e6
parente7451448361b0d1490f74aae6dfe4f80e86ea1ca (diff)
downloadqmk_firmware-704a2e8d3c0bd15f6c8accd5a39fb88ca6c9e2d5.tar.gz
qmk_firmware-704a2e8d3c0bd15f6c8accd5a39fb88ca6c9e2d5.zip
Keymap: Updates to personal userspace and keymaps (#4206)
* - updated personal userspace - updated fc660c, niu mini and planck keymaps - added prime_o keymap * Rename README.md to readme.md
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/README.md4
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/config.h11
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/keymap.c6
-rw-r--r--keyboards/fc660c/keymaps/spacebarracecar/readme.md5
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/config.h1
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/keymap.c17
-rw-r--r--keyboards/niu_mini/keymaps/spacebarracecar/readme.md6
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/config.h2
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/keymap.c19
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/readme.md7
-rw-r--r--keyboards/primekb/prime_o/keymaps/spacebarracecar/config.h1
-rw-r--r--keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c286
-rw-r--r--keyboards/primekb/prime_o/keymaps/spacebarracecar/readme.md6
-rw-r--r--keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk22
-rw-r--r--users/spacebarracecar/spacebarracecar.c47
-rw-r--r--users/spacebarracecar/spacebarracecar.h25
16 files changed, 411 insertions, 54 deletions
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/README.md b/keyboards/fc660c/keymaps/spacebarracecar/README.md
deleted file mode 100644
index 7d87ef8cf..000000000
--- a/keyboards/fc660c/keymaps/spacebarracecar/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
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
index 9c9b00656..9d83a2700 100644
--- a/keyboards/fc660c/keymaps/spacebarracecar/config.h
+++ b/keyboards/fc660c/keymaps/spacebarracecar/config.h
@@ -1,9 +1,8 @@
1#pragma once 1#pragma once
2 2
3// higher value means deeper actuation point, less sensitive 3/*
4// be careful and only make small adjustments (steps of 1 or 2). 4higher value means deeper actuation point, less sensitive
5// too high and keys will fail to actuate. too low and keys will actuate spontaneously. 5this should probably stay in the range +/-5.
6// test all keys before further adjustment. 6*/
7// this should probably stay in the range +/-5.
8#undef ACTUATION_DEPTH_ADJUSTMENT 7#undef ACTUATION_DEPTH_ADJUSTMENT
9#define ACTUATION_DEPTH_ADJUSTMENT +2 8#define ACTUATION_DEPTH_ADJUSTMENT -1
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/keymap.c b/keyboards/fc660c/keymaps/spacebarracecar/keymap.c
index 2cbef10bb..760b83b9f 100644
--- a/keyboards/fc660c/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/fc660c/keymaps/spacebarracecar/keymap.c
@@ -28,11 +28,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 _______,KC_PGDN,KC_UP, KC_PGUP,KC_HOME,XXXXXXX,XXXXXXX,XXXXXXX,GUIU, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, CU_ESCT, 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, 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, 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 31 RESET, _______,_______, KC_SPC, _______,_______,_______, KC_HOME,KC_PGDN,KC_END
32 ) 32 )
33 33
34}; 34};
35 35
36bool process_record_user(uint16_t keycode, keyrecord_t *record) { 36bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
37 return process_record_userspace(keycode, record); 37 return true;
38} 38}
diff --git a/keyboards/fc660c/keymaps/spacebarracecar/readme.md b/keyboards/fc660c/keymaps/spacebarracecar/readme.md
new file mode 100644
index 000000000..88c447e75
--- /dev/null
+++ b/keyboards/fc660c/keymaps/spacebarracecar/readme.md
@@ -0,0 +1,5 @@
1# SpacebarRacecar US-International FC660C Keymap for German PCs
2
3This keymap emulates most keys of the US-International layout on PCs that have German set as input language.
4This allows the use of the keyboard on any PC in Germany without the need to change any settings.
5The keymap is mostly based on the US-International layout.
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/config.h b/keyboards/niu_mini/keymaps/spacebarracecar/config.h
index e69de29bb..6f70f09be 100644
--- a/keyboards/niu_mini/keymaps/spacebarracecar/config.h
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/config.h
@@ -0,0 +1 @@
#pragma once
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c b/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c
index b850e5fda..c3f6fb09a 100644
--- a/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/keymap.c
@@ -12,7 +12,7 @@ enum layers {
12 12
13const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 13const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
14 14
15/* Base Layer 15/* Base
16,-----------------------------------------------------------------------------------------------------------------------. 16,-----------------------------------------------------------------------------------------------------------------------.
17|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace| 17|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
18|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 18|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
69), 69),
70 70
71/* Dead-Key 71/* Deadkey
72,-----------------------------------------------------------------------------------------------------------------------. 72,-----------------------------------------------------------------------------------------------------------------------.
73| | | | | | | |Ü | |Ö | | | 73| | | | | | | |Ü | |Ö | | |
74|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 74|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
@@ -87,15 +87,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
87 _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______ 87 _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______
88), 88),
89 89
90/* Nav 90/* Navigation
91,-----------------------------------------------------------------------------------------------------------------------. 91,-----------------------------------------------------------------------------------------------------------------------.
92|Caps Lock|PageDown |Up |PageUp |Home | | | |Win+Up | | |Del | 92|ESCT |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
93|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 93|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
94| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter | 94| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
95|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 95|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
96| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | | 96| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
97|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 97|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
98| | | | | | | | | | |RESET | | 98|RESET | | | | | | | | | | |Game |
99`-----------------------------------------------------------------------------------------------------------------------' 99`-----------------------------------------------------------------------------------------------------------------------'
100*/ 100*/
101 101
@@ -103,12 +103,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
103 CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, 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, 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, _______, 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 106 RESET, _______, _______, _______, _______, KC_SPC, KC_ENT, _______, _______, _______, _______, CU_GAME
107) 107)
108 108
109}; 109};
110 110
111bool process_record_user(uint16_t keycode, keyrecord_t *record) { 111bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
112switch (keycode) { 112switch (keycode) {
113 case MO(_LOWER): 113 case MO(_LOWER):
114 if (game){ 114 if (game){
@@ -121,6 +121,7 @@ switch (keycode) {
121 } else { 121 } else {
122 return true; 122 return true;
123 } 123 }
124 default:
125 return true;
124 } 126 }
125 return process_record_userspace(keycode, record);
126} 127}
diff --git a/keyboards/niu_mini/keymaps/spacebarracecar/readme.md b/keyboards/niu_mini/keymaps/spacebarracecar/readme.md
index 88d722186..967274381 100644
--- a/keyboards/niu_mini/keymaps/spacebarracecar/readme.md
+++ b/keyboards/niu_mini/keymaps/spacebarracecar/readme.md
@@ -1,3 +1,5 @@
1# US-International like Niu Mini layout for PCs with German set as input language 1# SpacebarRacecar US-International NIU Mini Keymap for German PCs
2 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 ä, ö, ü. 3This keymap emulates most keys of the US-International layout on PCs that have German set as input language.
4This allows the use of the keyboard on any PC in Germany without the need to change any settings.
5The keymap is mostly based on the Planck default layout but adds essential features for german input, like access to Ä, Ö, Ü, ß.
diff --git a/keyboards/planck/keymaps/spacebarracecar/config.h b/keyboards/planck/keymaps/spacebarracecar/config.h
index 9b55fa93a..4f48857fe 100644
--- a/keyboards/planck/keymaps/spacebarracecar/config.h
+++ b/keyboards/planck/keymaps/spacebarracecar/config.h
@@ -1,3 +1,5 @@
1#pragma once
2
1#ifdef AUDIO_ENABLE 3#ifdef AUDIO_ENABLE
2 #define STARTUP_SONG SONG(NO_SOUND) 4 #define STARTUP_SONG SONG(NO_SOUND)
3#endif 5#endif
diff --git a/keyboards/planck/keymaps/spacebarracecar/keymap.c b/keyboards/planck/keymaps/spacebarracecar/keymap.c
index 705f78f8e..db91231bf 100644
--- a/keyboards/planck/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/planck/keymaps/spacebarracecar/keymap.c
@@ -13,7 +13,7 @@ enum layers {
13 13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 15
16/* Base Layer 16/* Base
17,-----------------------------------------------------------------------------------------------------------------------. 17,-----------------------------------------------------------------------------------------------------------------------.
18|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace| 18|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
19|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 19|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
76 KC_LCTL, KC_LALT, KC_LGUI, KC_DOWN, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_MOD, MU_OFF 76 KC_LCTL, KC_LALT, KC_LGUI, KC_DOWN, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_MOD, MU_OFF
77), 77),
78 78
79/* Dead-Key 79/* Deadkey
80,-----------------------------------------------------------------------------------------------------------------------. 80,-----------------------------------------------------------------------------------------------------------------------.
81| | | | | | | |Ü | |Ö | | | 81| | | | | | | |Ü | |Ö | | |
82|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 82|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
@@ -92,18 +92,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, 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, 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, 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 95 KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, CU_DDQ, CU_DDQ, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
96), 96),
97 97
98/* Nav 98/* Navigation
99,-----------------------------------------------------------------------------------------------------------------------. 99,-----------------------------------------------------------------------------------------------------------------------.
100|Caps Lock|PageDown |Up |PageUp |Home | | | |Win+Up | | |Del | 100|ESCT |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
101|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 101|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
102| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter | 102| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
103|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 103|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
104| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | | 104| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
105|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| 105|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
106| | | | | | | | | | |RESET | | 106|RESET | | | | | | | | | | |Game |
107`-----------------------------------------------------------------------------------------------------------------------' 107`-----------------------------------------------------------------------------------------------------------------------'
108*/ 108*/
109 109
@@ -111,12 +111,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
111 CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, 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, 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, _______, 113 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
114 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CU_GAME 114 RESET, _______, _______, _______, _______, KC_SPC, KC_ENT, _______, _______, _______, _______, CU_GAME
115) 115)
116 116
117}; 117};
118 118
119bool process_record_user(uint16_t keycode, keyrecord_t *record) { 119bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
120switch (keycode) { 120switch (keycode) {
121 case MO(_LOWER): 121 case MO(_LOWER):
122 if (game){ 122 if (game){
@@ -143,6 +143,7 @@ switch (keycode) {
143 layer_off(_MUSICMODE); 143 layer_off(_MUSICMODE);
144 } 144 }
145 return true; 145 return true;
146 default:
147 return true;
146 } 148 }
147 return process_record_userspace(keycode, record);
148} 149}
diff --git a/keyboards/planck/keymaps/spacebarracecar/readme.md b/keyboards/planck/keymaps/spacebarracecar/readme.md
index daa9c4ad2..c8e8134ca 100644
--- a/keyboards/planck/keymaps/spacebarracecar/readme.md
+++ b/keyboards/planck/keymaps/spacebarracecar/readme.md
@@ -1,4 +1,5 @@
1# US-International like Planck layout for PCs with German set as input language 1# SpacebarRacecar US-International Planck Keymap for German PCs
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 2
3This keymap emulates most keys of the US-International layout on PCs that have German set as input language.
4This allows the use of the keyboard on any PC in Germany without the need to change any settings.
5The keymap is mostly based on the Planck default layout but adds essential features for german input, like access to Ä, Ö, Ü, ß.
diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/config.h b/keyboards/primekb/prime_o/keymaps/spacebarracecar/config.h
new file mode 100644
index 000000000..6f70f09be
--- /dev/null
+++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/config.h
@@ -0,0 +1 @@
#pragma once
diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c
new file mode 100644
index 000000000..d38ff0d1d
--- /dev/null
+++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c
@@ -0,0 +1,286 @@
1#include QMK_KEYBOARD_H
2#include "spacebarracecar.h"
3
4#define LOWER MO(_LOWER)
5#define RAISE MO(_RAISE)
6
7#define LEFTNUM
8
9enum layers {
10 _BASE,
11 _LOWER,
12 _RAISE,
13 _GAME = _NAV+1
14};
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17
18#ifndef LEFTNUM
19/* Base
20,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
21|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |Numlock |/ |* |= |
22|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
23|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|7 |8 |9 |- |
24|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
25|Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |4 |5 |6 |+ |
26|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
27|(/LShift |Y |X |C |V |B |N |M |, |. |/ |)/RShift |1 |2 |3 |Enter |
28|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
29|RCtrl | |Alt |Win |Lower |Space |Enter |Raise |Win |AltGr | |LCtrl |00 |0 |. |Tab |
30`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
31*/
32
33[_BASE] = LAYOUT(
34 CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_BSLS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
35 KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS,
36 CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT, KC_P4, KC_P5, KC_P6, KC_PEQL,
37 CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT,
38 KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_P00, KC_P0, KC_PDOT, KC_TAB
39),
40
41/* Lower
42,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
43|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |Numlock |/ |* |- |
44|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
45|~ |! |" |# |$ |% |^ |& |* |( |) | |7 |8 |9 |+ |
46|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
47| |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |4 |5 |6 |= |
48|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
49| |? | | | | | | | | | | |1 |2 |3 |Enter |
50|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
51| | | | | | | | | | | | |00 |0 |. |Tab |
52`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
53*/
54
55[_LOWER] = LAYOUT(
56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
57 DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, _______, _______, _______, _______,
58 _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE, _______, _______, _______, _______,
59 _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______,
60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
61),
62
63/* Raise
64,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
65|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |Numlock |/ |* |- |
66|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
67|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |7 |8 |9 |+ |
68|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
69| |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |4 |5 |6 |= |
70|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
71| |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |1 |2 |3 |Enter |
72|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
73| | | | | | | | | | | | |00 |0 |. |Tab |
74`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
75*/
76
77[_RAISE] = LAYOUT(
78 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
79 CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______, _______, _______, _______, _______,
80 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS, _______, _______, _______, _______,
81 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______,
82 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
83),
84
85/* Deadkey
86,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
87| | | | | | | | | | | | |Numlock |/ |* |- |
88|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
89| | | | | | | |Ü | |Ö | | |7 |8 |9 |+ |
90|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
91| |Ä |ß | | | | | | | | | |4 |5 |6 |= |
92|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
93| | | | | | | | | | | | |1 |2 |3 |Enter |
94|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
95| | | | | |" |" | | | | | |00 |0 |. |Tab |
96`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
97*/
98
99[_DEADKEY] = LAYOUT(
100 CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______, _______, _______, _______,
101 KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, _______, _______, _______, _______, _______,
102 _______, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ, _______, _______, _______, _______,
103 _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______, _______, _______, _______, _______,
104 _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______, _______, _______, _______, _______
105),
106
107/* Navigation
108,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
109|Escape | | | | | | | | | | | |Numlock |/ |* |- |
110|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
111|ESCT |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |7 |8 |9 |+ |
112|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
113| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |4 |5 |6 |= |
114|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
115| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |1 |2 |3 |Enter |
116|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
117|RESET | | | | | | | | | | |Game |00 |0 |. |Tab |
118`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
119*/
120
121[_NAV] = LAYOUT(
122 KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
123 CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, _______, _______, _______,
124 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, XXXXXXX, KC_ENT, _______, _______, _______, _______,
125 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______,
126 RESET, _______, _______, _______, _______, KC_SPC, KC_ENT, _______, _______, _______, _______, CU_GAME, _______, _______, _______, _______
127),
128
129// Can be used to place macros on the numpad
130[_GAME] = LAYOUT(
131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
133 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
134 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
135 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
136)
137#endif
138
139#ifdef LEFTNUM
140/* Base
141,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
142|- |* |/ |Numlock |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |
143|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
144|+ |7 |8 |9 |Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
145|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
146|= |4 |5 |6 |Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |
147|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
148|Enter |1 |2 |3 |(/LShift |Y |X |C |V |B |N |M |, |. |/ |)/RShift |
149|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
150|Backspace|. |0 |00 |RCtrl | |Alt |Win |Lower |Space |Enter |Raise |Win |AltGr | |LCtrl |
151`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
152*/
153
154[_BASE] = LAYOUT(
155 KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_BSLS,
156 KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
157 KC_PEQL, KC_P4, KC_P5, KC_P6, CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT,
158 KC_PENT, KC_P1, KC_P2, KC_P3, CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT,
159 KC_BSPC, KC_PDOT, KC_P0, KC_P00, KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
160),
161
162/* Lower
163,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
164|- |* |/ |Numlock |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
165|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
166|+ |7 |8 |9 |~ |! |" |# |$ |% |^ |& |* |( |) | |
167|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
168|= |4 |5 |6 | |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |
169|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
170|Enter |1 |2 |3 | |? | | | | | | | | | | |
171|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
172|Backspace|. |0 |00 | | | | | | | | | | | | |
173`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
174*/
175
176[_LOWER] = LAYOUT(
177 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
178 _______, _______, _______, _______, DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______,
179 _______, _______, _______, _______, _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE,
180 _______, _______, _______, _______, _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
181 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
182),
183
184/* Raise
185,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
186|- |* |/ |Numlock |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
187|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
188|+ |7 |8 |9 |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
189|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
190|= |4 |5 |6 | |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |
191|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
192|Enter |1 |2 |3 | |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |
193|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
194|Backspace|. |0 |00 | | | | | | | | | | | | |
195`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
196*/
197
198[_RAISE] = LAYOUT(
199 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
200 _______, _______, _______, _______, CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______,
201 _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS,
202 _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
203 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
204),
205
206/* Deadkey
207,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
208|- |* |/ |Numlock | | | | | | | | | | | | |
209|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
210|+ |7 |8 |9 | | | | | | | |Ü | |Ö | | |
211|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
212|= |4 |5 |6 | |Ä |ß | | | | | | | | | |
213|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
214|Enter |1 |2 |3 | | | | | | | | | | | | |
215|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
216|Backspace|. |0 |00 | | | | | |" |" | | | | | |
217`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
218*/
219
220[_DEADKEY] = LAYOUT(
221 _______, _______, _______, _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED,
222 _______, _______, _______, _______, KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, _______,
223 _______, _______, _______, _______, _______, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ,
224 _______, _______, _______, _______, _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______,
225 _______, _______, _______, _______, _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______
226),
227
228/* Navigation
229,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
230|- |* |/ |Numlock |Escape | | | | | | | | | | | |
231|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
232|+ |7 |8 |9 |ESCT |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
233|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
234|= |4 |5 |6 | |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
235|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
236|Enter |1 |2 |3 | |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
237|---------+---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
238|Backspace|. |0 |00 |RESET | | | | | | | | | | |Game |
239`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
240*/
241
242[_NAV] = LAYOUT(
243 _______, _______, _______, _______, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
244 _______, _______, _______, _______, CU_ESCT, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
245 _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, XXXXXXX, KC_ENT,
246 _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
247 _______, _______, _______, _______, RESET, _______, _______, _______, _______, KC_SPC, KC_ENT, _______, _______, _______, _______, CU_GAME
248),
249
250// Can be used to place macros on the numpad
251[_GAME] = LAYOUT(
252 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
253 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
254 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
255 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
256 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
257)
258#endif
259
260};
261
262bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
263switch (keycode) {
264 case MO(_LOWER):
265 if (game){
266 if(record->event.pressed) {
267 register_code(KC_SPC);
268 } else {
269 unregister_code(KC_SPC);
270 }
271 return false;
272 } else {
273 return true;
274 }
275 case CU_GAME:
276 if(record->event.pressed) {
277 if (game)
278 layer_on(_GAME);
279 else
280 layer_off(_GAME);
281 }
282 return false;
283 default:
284 return true;
285 }
286}
diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/readme.md b/keyboards/primekb/prime_o/keymaps/spacebarracecar/readme.md
new file mode 100644
index 000000000..eb8da3fa7
--- /dev/null
+++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/readme.md
@@ -0,0 +1,6 @@
1# SpacebarRacecar US-International Prime_O Keymap for German PCs
2
3This keymap emulates most keys of the US-International layout on PCs that have German set as input language.
4This allows the use of the keyboard on any PC in Germany without the need to change any settings.
5The keymap is mostly based on the Planck default layout but adds essential features for german input, like access to Ä, Ö, Ü, ß.
6Righthand Numpad is enabled by default, enable lefthand Numpad with #define LEFTNUM.
diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk b/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk
new file mode 100644
index 000000000..f50334d5e
--- /dev/null
+++ b/keyboards/primekb/prime_o/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 = 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
diff --git a/users/spacebarracecar/spacebarracecar.c b/users/spacebarracecar/spacebarracecar.c
index 404331f8d..f7048869e 100644
--- a/users/spacebarracecar/spacebarracecar.c
+++ b/users/spacebarracecar/spacebarracecar.c
@@ -1,18 +1,29 @@
1#include "spacebarracecar.h" 1#include "spacebarracecar.h"
2 2
3#ifdef GERMAN_ENABLE 3#ifdef GERMAN_ENABLE
4// These indicate if left and right shift are physically pressed
4bool lshift = false; 5bool lshift = false;
5bool rshift = false; 6bool rshift = false;
7
8// Interrupt and times for space cadet shift
6bool lshiftp = false; 9bool lshiftp = false;
7bool rshiftp = false; 10bool rshiftp = false;
8uint16_t lshift_timer = 0; 11uint16_t lshift_timer = 0;
9uint16_t rshift_timer = 0; 12uint16_t rshift_timer = 0;
10 13
14// Number of items that are saved in prev_kcs
11uint8_t prev_indx = 0; 15uint8_t prev_indx = 0;
16// Used to save the last 6 actual keycodes activated by frankenkeycodes
12uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0}; 17uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0};
13 18
19// If true the deadkey characters grave and circonflexe are not automatically escaped
14bool esct = false; 20bool esct = false;
15 21
22/*
23Used to add a keycode to a prev_kcs to remember it.
24When full the last code gets discarded and replaced by
25the new one.
26*/
16void add_to_prev(uint16_t kc){ 27void add_to_prev(uint16_t kc){
17 for (int i=0; i<prev_indx; i++){ 28 for (int i=0; i<prev_indx; i++){
18 if (kc == prev_kcs[i]) 29 if (kc == prev_kcs[i])
@@ -29,6 +40,13 @@ void add_to_prev(uint16_t kc){
29 } 40 }
30} 41}
31 42
43/*
44Unregisters all codes saved in prev_kcs and resets prev_indx.
45gets called on multiple occasions mainly when shift is released
46and when frankenkeycodes are pressed. Prevents output of
47wrong characters when really specific key combinations
48that would never occur during normal usage are pressed.
49*/
32void unreg_prev(void){ 50void unreg_prev(void){
33 if (prev_indx == 0) 51 if (prev_indx == 0)
34 return; 52 return;
@@ -39,11 +57,14 @@ void unreg_prev(void){
39} 57}
40#endif 58#endif
41 59
42// stuff for nav esc 60// Interrupt and times for Nav/Esc
43bool navesc = false; 61bool navesc = false;
44uint16_t navesc_timer = 0; 62uint16_t navesc_timer = 0;
63
64// If true Gui keys and Space Cadet Shift get disabled
45bool game = false; 65bool game = false;
46 66
67// Interrupts all timers
47void timer_timeout(void){ 68void timer_timeout(void){
48 #ifdef GERMAN_ENABLE 69 #ifdef GERMAN_ENABLE
49 lshiftp = false; 70 lshiftp = false;
@@ -52,15 +73,19 @@ void timer_timeout(void){
52 navesc = false; 73 navesc = false;
53} 74}
54 75
55bool process_record_userspace(uint16_t keycode, keyrecord_t *record) { 76bool process_record_user(uint16_t keycode, keyrecord_t *record) {
56 switch (keycode) { 77 switch (keycode) {
57 case CU_GAME: 78 case CU_GAME:
58 if(record->event.pressed) { 79 if(record->event.pressed) {
80 timer_timeout();
59 game = !game; 81 game = !game;
60 } 82 }
61 return false; 83 // allows keymap to execute further commands when CU_GAME is pressed, for example enabling a macro layer
84 return process_record_keymap(keycode, record) && false;
62 case KC_LGUI: 85 case KC_LGUI:
63 case KC_RGUI: 86 case KC_RGUI:
87 if (record->event.pressed)
88 timer_timeout();
64 if (game) 89 if (game)
65 return false; 90 return false;
66 else 91 else
@@ -77,11 +102,21 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
77 } 102 }
78 layer_off(_NAV); 103 layer_off(_NAV);
79 } 104 }
80 return false; 105 return false;
106 case KC_P00:
107 if(record->event.pressed) {
108 timer_timeout();
109 register_code(KC_P0);
110 unregister_code(KC_P0);
111 register_code(KC_P0);
112 unregister_code(KC_P0);
113 }
114 return false;
81 115
82 #ifdef RGBLIGHT_ENABLE 116 #ifdef RGBLIGHT_ENABLE
83 case CU_RGBV: 117 case CU_RGBV:
84 if(record->event.pressed) { 118 if(record->event.pressed) {
119 timer_timeout();
85 if (rgblight_get_val()+32>255) 120 if (rgblight_get_val()+32>255)
86 rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), 31); 121 rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), 31);
87 else 122 else
@@ -133,6 +168,7 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
133 return false; 168 return false;
134 case CU_ESCT: 169 case CU_ESCT:
135 if(record->event.pressed) { 170 if(record->event.pressed) {
171 timer_timeout();
136 esct = !esct; 172 esct = !esct;
137 } 173 }
138 return false; 174 return false;
@@ -282,6 +318,7 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
282 case KC_LCTL: 318 case KC_LCTL:
283 case KC_RCTL: 319 case KC_RCTL:
284 if(!record->event.pressed) { 320 if(!record->event.pressed) {
321 timer_timeout();
285 unregister_code(KC_Z); 322 unregister_code(KC_Z);
286 unregister_code(KC_Y); 323 unregister_code(KC_Y);
287 } 324 }
@@ -300,6 +337,6 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record) {
300 #endif 337 #endif
301 338
302 } 339 }
303 return true; 340 return process_record_keymap(keycode, record);
304 } 341 }
305} 342}
diff --git a/users/spacebarracecar/spacebarracecar.h b/users/spacebarracecar/spacebarracecar.h
index 42879d2ef..1e1825351 100644
--- a/users/spacebarracecar/spacebarracecar.h
+++ b/users/spacebarracecar/spacebarracecar.h
@@ -4,13 +4,14 @@
4#include "keymap_german.h" 4#include "keymap_german.h"
5 5
6enum userspace_layers { 6enum userspace_layers {
7 _DEADKEY = 14, //change if more than 16 layers are required 7 _DEADKEY = 14, // Change if more than 16 layers are required
8 _NAV 8 _NAV
9}; 9};
10 10
11enum userspace_custom_keycodes { 11enum userspace_custom_keycodes {
12 CU_GAME = SAFE_RANGE, // Toggle game mode on/off 12 CU_GAME = SAFE_RANGE, // Toggle game mode on/off
13 CU_NAV, // NAV | ESC 13 CU_NAV, // NAV | ESC
14 KC_P00, // Numpad double zero
14 15
15 #ifdef GERMAN_ENABLE 16 #ifdef GERMAN_ENABLE
16 CU_LSFT, // LSFT | ( 17 CU_LSFT, // LSFT | (
@@ -52,10 +53,8 @@ enum userspace_custom_keycodes {
52}; 53};
53 54
54#ifdef GERMAN_ENABLE 55#ifdef GERMAN_ENABLE
55// these save the current shift status
56extern bool lshift; 56extern bool lshift;
57extern bool rshift; 57extern bool rshift;
58// stuff for custom space cadet shift
59extern bool lshiftp; 58extern bool lshiftp;
60extern bool rshiftp; 59extern bool rshiftp;
61extern uint16_t lshift_timer; 60extern uint16_t lshift_timer;
@@ -63,14 +62,12 @@ extern uint16_t rshift_timer;
63 62
64extern uint8_t prev_indx; 63extern uint8_t prev_indx;
65extern uint16_t prev_kcs[6]; 64extern uint16_t prev_kcs[6];
66
67void add_to_prev(uint16_t kc); 65void add_to_prev(uint16_t kc);
68void unreg_prev(void); 66void unreg_prev(void);
69 67
70extern bool esct; 68extern bool esct;
71#endif 69#endif
72 70
73// stuff for nav esc
74extern bool navesc; 71extern bool navesc;
75extern uint16_t navesc_timer; 72extern uint16_t navesc_timer;
76 73
@@ -78,7 +75,7 @@ extern bool game;
78 75
79void timer_timeout(void); 76void timer_timeout(void);
80 77
81bool process_record_userspace(uint16_t keycode, keyrecord_t *record); 78bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
82 79
83#define CTRLX LCTL(KC_X) 80#define CTRLX LCTL(KC_X)
84#define CTRLC LCTL(KC_C) 81#define CTRLC LCTL(KC_C)
@@ -89,9 +86,9 @@ bool process_record_userspace(uint16_t keycode, keyrecord_t *record);
89#define GUIL LGUI(KC_LEFT) 86#define GUIL LGUI(KC_LEFT)
90#define GUIR RGUI(KC_RIGHT) 87#define GUIR RGUI(KC_RIGHT)
91 88
92// 89/*
93// Templates for Keys, with custom shifted and non shifted Characters 90Templates for Keys, with custom shifted and non shifted Characters
94// 91*/
95 92
96// Normal shift status 93// Normal shift status
97#define SHIFT_NORM(kc1, kc2) \ 94#define SHIFT_NORM(kc1, kc2) \
@@ -139,7 +136,7 @@ if (record->event.pressed) { \
139} \ 136} \
140return false; 137return false;
141 138
142// All shift 139// Always shifted
143#define SHIFT_ALL(kc1, kc2) \ 140#define SHIFT_ALL(kc1, kc2) \
144if (record->event.pressed) { \ 141if (record->event.pressed) { \
145 timer_timeout(); \ 142 timer_timeout(); \
@@ -164,7 +161,7 @@ if (record->event.pressed) { \
164} \ 161} \
165return false; 162return false;
166 163
167// All no shift 164// Never shifted
168#define SHIFT_NO(kc1, kc2) \ 165#define SHIFT_NO(kc1, kc2) \
169if (record->event.pressed) { \ 166if (record->event.pressed) { \
170 timer_timeout(); \ 167 timer_timeout(); \
@@ -188,7 +185,7 @@ if (record->event.pressed) { \
188} \ 185} \
189return false; 186return false;
190 187
191// All algr 188// Always AltGr
192#define SHIFT_ALGR(kc1, kc2) \ 189#define SHIFT_ALGR(kc1, kc2) \
193if (record->event.pressed) { \ 190if (record->event.pressed) { \
194 timer_timeout(); \ 191 timer_timeout(); \
@@ -208,7 +205,7 @@ if (record->event.pressed) { \
208} \ 205} \
209return false; 206return false;
210 207
211// Different keycode for ctrl 208// Different keycode when Ctrl is pressed
212#define CTRL(kc1, kc2) \ 209#define CTRL(kc1, kc2) \
213if(record->event.pressed) { \ 210if(record->event.pressed) { \
214 timer_timeout(); \ 211 timer_timeout(); \
@@ -227,7 +224,7 @@ if(record->event.pressed) { \
227} \ 224} \
228return false; 225return false;
229 226
230// Umlaute for deadkey layer 227// Template for keys on deadkey layer (mostly Umlaute)
231#define UML(kc) \ 228#define UML(kc) \
232if(record->event.pressed) { \ 229if(record->event.pressed) { \
233 timer_timeout(); \ 230 timer_timeout(); \