aboutsummaryrefslogtreecommitdiff
path: root/keyboards/comet46/keymaps/satt/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/comet46/keymaps/satt/keymap.c')
-rw-r--r--keyboards/comet46/keymaps/satt/keymap.c256
1 files changed, 164 insertions, 92 deletions
diff --git a/keyboards/comet46/keymaps/satt/keymap.c b/keyboards/comet46/keymaps/satt/keymap.c
index 7e728e5d0..eec40eff4 100644
--- a/keyboards/comet46/keymaps/satt/keymap.c
+++ b/keyboards/comet46/keymaps/satt/keymap.c
@@ -4,64 +4,96 @@
4#include QMK_KEYBOARD_H 4#include QMK_KEYBOARD_H
5#include "keymap_jis2us.h" 5#include "keymap_jis2us.h"
6#include "action_pseudo_lut.h" 6#include "action_pseudo_lut.h"
7#include "keymap_jp.h"
8#ifdef SSD1306OLED
9 #include "ssd1306.h"
10#endif
7 11
8// Each layer gets a name for readability, which is then used in the keymap matrix below. 12// Each layer gets a name for readability, which is then used in the keymap matrix below.
9// The underscores don't mean anything - you can have a layer called STUFF or any other name. 13// The underscores don't mean anything - you can have a layer called STUFF or any other name.
10// Layer names don't all need to be of the same length, obviously, and you can also skip them 14// Layer names don't all need to be of the same length, obviously, and you can also skip them
11// entirely and just use numbers. 15// entirely and just use numbers.
12enum comet46_layers { 16enum comet46_layers {
13 _QWERTY, 17 _QWERTY,
14 _LOWER, 18 _LOWER,
15 _RAISE, 19 _RAISE,
16 _PSEUDO_US, 20 _PSEUDO_US,
17 _PSEUDO_US_LOWER, 21 _PSEUDO_US_LOWER,
18 _PSEUDO_US_RAISE, 22 _PSEUDO_US_RAISE,
19 _ADJUST 23 _ADJUST
20}; 24};
21 25
22enum custom_keycodes { 26enum custom_keycodes {
23 QWERTY = SAFE_RANGE, 27 QWERTY = SAFE_RANGE,
24 PSEUDO_US, 28 PSEUDO_US,
29 JIS2US,
25}; 30};
26 31
27#define KC_LWR MO(_LOWER) 32// JIS keycodes
28#define KC_RSE MO(_RAISE) 33#define KC_JZHT JP_ZHTG // hankaku/zenkaku|kanzi
34#define KC_JCIR JP_CIRC // ^, ~
35#define KC_JAT JP_AT // @, `
36#define KC_JLBR JP_LBRC // [, {
37#define KC_JCOL JP_COLN // :, *
38#define KC_JRBR JP_RBRC // ], }
39#define KC_JBSL JP_BSLS // \, _
40#define KC_JMHE JP_MHEN // muhenkan
41#define KC_JHEN JP_HENK // henkan
42#define KC_JKAN JP_KANA // katakana/hiragana|ro-mazi
43#define KC_JMKA JP_MKANA //kana on MacOSX
44#define KC_JMEI JP_MEISU //eisu on MacOSX
45#define KC_JAMP JP_AMPR // &
46#define KC_JQUO JP_QUOT // '
47#define KC_JLPR JP_LPRN // (
48#define KC_JRPR JP_RPRN // )
49#define KC_JEQL JP_EQL // =
50#define KC_JTIL JP_TILD // ~
51#define KC_JPIP JP_PIPE // |
52#define KC_JGRV JP_GRV // `
53#define KC_JLCB JP_LCBR // {
54#define KC_JPLU JP_PLUS // +
55#define KC_JAST JP_ASTR // *
56#define KC_JRCB JP_RCBR // }
57#define KC_JUND JP_UNDS // _
58
59// Layer related keycodes
60#define KC_LWR MO(_LOWER)
61#define KC_RSE MO(_RAISE)
29#define KC_P_LW MO(_PSEUDO_US_LOWER) 62#define KC_P_LW MO(_PSEUDO_US_LOWER)
30#define KC_P_RS MO(_PSEUDO_US_RAISE) 63#define KC_P_RS MO(_PSEUDO_US_RAISE)
31#define KC_QWRT QWERTY 64#define KC_QWRT QWERTY
32#define KC_P_US PSEUDO_US 65#define KC_P_US PSEUDO_US
66#define KC_J2US JIS2US
67
68// Special keycodes
33#define KC_SPCT CTL_T(KC_SPC) 69#define KC_SPCT CTL_T(KC_SPC)
34#define KC_ENSF SFT_T(KC_ENT) 70#define KC_ENSF SFT_T(KC_ENT)
35#define KC_SFTA SFT_T(KC_A) 71#define KC_CAEC MT(MOD_LCTL | MOD_LALT, KC_ESC)
36#define KC_CTSF S(KC_LCTL) 72#define KC_CSTB C_S_T(KC_TAB)
37#define KC_IMON ALT_T(KC_F13) 73#define KC_IMON ALT_T(KC_F13)
38#define KC_IMOF GUI_T(KC_F14) 74#define KC_IMOF GUI_T(KC_F14)
39#define KC_SRO S(KC_RO)
40#define KC_SYEN S(KC_JYEN)
41#define KC_CAD LCA(KC_DEL) 75#define KC_CAD LCA(KC_DEL)
42#define KC_RST RESET 76#define KC_RST RESET
43 77
44#define LONGPRESS_DELAY 150
45
46// Fillers to make layering more clear 78// Fillers to make layering more clear
47#define KC_ KC_TRNS 79#define KC_ KC_TRNS
48#define KC_XXXX KC_NO 80#define KC_XXXX KC_NO
49 81
50const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 82const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
51 83
52 [_QWERTY] = LAYOUT_kc( 84 [_QWERTY] = LAYOUT_kc(
53 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 85 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
54 ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL , 86 CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL ,
55 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 87 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
56 TAB ,SFTA, S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC, 88 CSTB, A , S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC,
57 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 89 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
58 CTSF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT, 90 LSFT, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT,
59 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 91 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
60 IMOF,LWR ,SPCT, ENSF,RSE ,IMON 92 IMOF,LWR ,SPCT, ENSF,RSE ,IMON
61 // +----+----+---/ \---+----+----+ 93 // +----+----+---/ \---+----+----+
62 ), 94 ),
63 95
64 [_LOWER] = LAYOUT_kc( 96 [_LOWER] = LAYOUT_kc(
65 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 97 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
66 ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , 98 ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
67 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 99 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
@@ -69,60 +101,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
69 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 101 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
70 , F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, , 102 , F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, ,
71 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 103 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
72 , , , , , 104 , , , , ,
73 // +----+----+---/ \---+----+----+ 105 // +----+----+---/ \---+----+----+
74 ), 106 ),
75 107
76 [_RAISE] = LAYOUT_kc( 108 [_RAISE] = LAYOUT_kc(
77 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 109 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
78 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , 110 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
79 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 111 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
80 , , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , , 112 , , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , ,
81 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 113 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
82 , , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, , 114 , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, ,
83 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 115 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
84 , , , , , 116 , , , , ,
85 // +----+----+---/ \---+----+----+ 117 // +----+----+---/ \---+----+----+
86 ), 118 ),
87 119
88 [_PSEUDO_US] = LAYOUT_kc( 120 [_PSEUDO_US] = LAYOUT_kc(
89 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 121 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
90 ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL , 122 CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL ,
91 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 123 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
92 TAB ,SFTA, S , D , F , G ,ASTR, LPRN, H , J , K , L ,FN0 ,BSPC, 124 CSTB, A , S , D , F , G ,JLPR, JRPR, H , J , K , L ,J2US,BSPC,
93 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 125 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
94 CTSF, Z , X , C , V , B ,FN0 , FN0 , N , M ,COMM,DOT ,SLSH,FN0 , 126 LSFT, Z , X , C , V , B ,J2US, J2US, N , M ,COMM,DOT ,SLSH,J2US,
95 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 127 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
96 IMOF,P_LW,SPCT, ENSF,P_RS,IMON 128 IMOF,P_LW,SPCT, ENSF,P_RS,IMON
97 // +----+----+---/ \---+----+----+ 129 // +----+----+---/ \---+----+----+
98 ), 130 ),
99 131
100 132
101 [_PSEUDO_US_LOWER] = LAYOUT_kc( 133 [_PSEUDO_US_LOWER] = LAYOUT_kc(
102 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 134 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
103 ,EXLM,LBRC,HASH,DLR ,PERC, EQL ,CIRC, DQT,ASTR,LPRN, , 135 ,EXLM,JAT ,HASH,DLR ,PERC, JCIR,JAMP,JAST,JLPR,JRPR, ,
104 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 136 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
105 , F1 , F2 , F3 , F4 , F5 , F6 , LCBR,JYEN,MINS,UNDS,RBRC,BSLS, , 137 , F1 , F2 , F3 , F4 , F5 , F6 , JGRV,JBSL,MINS,JEQL,JLBR,JRBR, ,
106 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 138 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
107 , F7 , F8 , F9 , F10, F11, F12, PLUS,SYEN,SRO ,COLN,RCBR,PIPE, , 139 , F7 , F8 , F9 , F10, F11, F12, JTIL,JPIP,JUND,JPLU,JLCB,JRCB, ,
108 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 140 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
109 , , , , , 141 , , , , ,
110 // +----+----+---/ \---+----+----+ 142 // +----+----+---/ \---+----+----+
111 ), 143 ),
112 144
113 [_PSEUDO_US_RAISE] = LAYOUT_kc( 145 [_PSEUDO_US_RAISE] = LAYOUT_kc(
114 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 146 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
115 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , 147 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
116 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 148 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
117 , , , , , , GRV, XXXX,LEFT,DOWN, UP ,RGHT,END , , 149 , , , , , ,JZHT, XXXX,LEFT,DOWN, UP ,RGHT,END , ,
118 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 150 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
119 , , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, , 151 , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, ,
120 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 152 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
121 , , , , , 153 , , , , ,
122 // +----+----+---/ \---+----+----+ 154 // +----+----+---/ \---+----+----+
123 ), 155 ),
124 156
125 [_ADJUST] = LAYOUT_kc( 157 [_ADJUST] = LAYOUT_kc(
126 //,----+----+----+----+----+----+ +----+----+----+----+----+----. 158 //,----+----+----+----+----+----+ +----+----+----+----+----+----.
127 , , , , , , , , , , , , 159 , , , , , , , , , , , ,
128 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| 160 //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
@@ -130,90 +162,130 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
130 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 162 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
131 , , , , , ,RST , P_US, , , , , , , 163 , , , , , ,RST , P_US, , , , , , ,
132 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| 164 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
133 , , , , , 165 , , , , ,
134 // +----+----+---/ \---+----+----+ 166 // +----+----+---/ \---+----+----+
135 ) 167 )
136 168
137}; 169};
138 170
171uint32_t layer_state_set_user(uint32_t state) {
172 switch (biton32(state)) {
173 case _PSEUDO_US_LOWER:
174 case _PSEUDO_US_RAISE:
175 return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
176 break;
177 default:
178 return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
179 break;
180 }
181}
139 182
140/* 183//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
141 * user defined action function 184#ifdef SSD1306OLED
142 */
143enum function_id {
144 PSEUDO_US_FUNCTION,
145};
146 185
147void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 186// You need to add source files to SRC in rules.mk when using OLED display functions
148 switch (id) 187void set_keylog(uint16_t keycode);
149 { 188const char *read_keylog(void);
150 case PSEUDO_US_FUNCTION: 189const char *read_modifier_state(void);
151 action_pseudo_lut(record, _QWERTY, keymap_jis2us); 190const char *read_host_led_state(void);
152 break;
153 }
154}
155 191
156/* 192void matrix_init_user(void) {
157 * Fn action definition 193 iota_gfx_init(false); // turns on the display
158 */ 194}
159const uint16_t PROGMEM fn_actions[] = {
160 [0] = ACTION_FUNCTION(PSEUDO_US_FUNCTION),
161};
162 195
163void matrix_scan_user(void) { 196void matrix_scan_user(void) {
164 uint8_t layer = biton32(layer_state); 197 iota_gfx_task(); // this is what updates the display continuously
198}
199
200void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
201 if (memcmp(dest->display, source->display, sizeof(dest->display))) {
202 memcpy(dest->display, source->display, sizeof(dest->display));
203 dest->dirty = true;
204 }
205}
206
207void render_status(struct CharacterMatrix *matrix) {
208 // Layer state
209 char layer_str[22];
210 matrix_write(matrix, "Layer: ");
211 uint8_t layer = biton32(layer_state);
212 uint8_t default_layer = biton32(eeconfig_read_default_layer());
165 switch (layer) { 213 switch (layer) {
166 case _LOWER: 214 case _QWERTY:
167 set_led_red; 215 switch (default_layer) {
168 break; 216 case _QWERTY:
217 snprintf(layer_str, sizeof(layer_str), "Qwerty");
218 break;
219 case _PSEUDO_US:
220 snprintf(layer_str, sizeof(layer_str), "Psuedo_US");
221 break;
222 default:
223 snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
224 break;
225 }
226 break;
169 case _RAISE: 227 case _RAISE:
170 set_led_blue; 228 snprintf(layer_str, sizeof(layer_str), "Raise");
171 break; 229 break;
172 case _PSEUDO_US_LOWER: 230 case _LOWER:
173 set_led_yellow; 231 snprintf(layer_str, sizeof(layer_str), "Lower");
174 break; 232 break;
175 case _PSEUDO_US_RAISE: 233 case _PSEUDO_US_RAISE:
176 set_led_cyan; 234 snprintf(layer_str, sizeof(layer_str), "P_US_Raise");
177 break; 235 break;
236 case _PSEUDO_US_LOWER:
237 snprintf(layer_str, sizeof(layer_str), "P_US_Lower");
238 break;
178 case _ADJUST: 239 case _ADJUST:
179 set_led_magenta; 240 snprintf(layer_str, sizeof(layer_str), "Adjust");
180 break; 241 break;
181 default: 242 default:
182 set_led_green; 243 snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
183 break;
184 } 244 }
185}; 245 matrix_write_ln(matrix, layer_str);
246 // Last entered keycode
247 matrix_write_ln(matrix, read_keylog());
248 // Modifier state
249 matrix_write_ln(matrix, read_modifier_state());
250 // Host Keyboard LED Status
251 matrix_write(matrix, read_host_led_state());
252}
186 253
187uint32_t layer_state_set_user(uint32_t state) { 254void iota_gfx_task_user(void) {
188 switch (biton32(state)) { 255 struct CharacterMatrix matrix;
189 case _PSEUDO_US: 256
190 return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST); 257#if DEBUG_TO_SCREEN
191 break; 258 if (debug_enable) {
192 case _PSEUDO_US_LOWER: 259 return;
193 return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
194 break;
195 case _PSEUDO_US_RAISE:
196 return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
197 break;
198 default:
199 return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
200 break;
201 } 260 }
261#endif
262
263 matrix_clear(&matrix);
264 render_status(&matrix);
265 matrix_update(&display, &matrix);
202} 266}
203 267
268#endif//SSD1306OLED
269
204bool process_record_user(uint16_t keycode, keyrecord_t *record) { 270bool process_record_user(uint16_t keycode, keyrecord_t *record) {
271 #ifdef SSD1306OLED
272 if (record->event.pressed) {
273 set_keylog(keycode);
274 }
275 #endif
205 switch (keycode) { 276 switch (keycode) {
206 case QWERTY: 277 case QWERTY:
207 if (record->event.pressed) { 278 if (record->event.pressed) {
208 set_single_persistent_default_layer(_QWERTY); 279 set_single_persistent_default_layer(_QWERTY);
209 } 280 }
210 return false;
211 break; 281 break;
212 case PSEUDO_US: 282 case PSEUDO_US:
213 if (record->event.pressed) { 283 if (record->event.pressed) {
214 set_single_persistent_default_layer(_PSEUDO_US); 284 set_single_persistent_default_layer(_PSEUDO_US);
215 } 285 }
216 return false; 286 break;
287 case JIS2US:
288 action_pseudo_lut(record, _QWERTY, keymap_jis2us);
217 break; 289 break;
218 } 290 }
219 return true; 291 return true;