aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-03-12 07:04:21 +0000
committerQMK Bot <hello@qmk.fm>2021-03-12 07:04:21 +0000
commit71f8f5048b0c583893e26b7a419f40de58c11891 (patch)
tree411fe6f77f735e72365200d1dec03451051b5e1e
parent183c49f3522e948c541ee0cc63997f438994c534 (diff)
parent88dce243750d9e80948cd7262566182018d7bbdf (diff)
downloadqmk_firmware-71f8f5048b0c583893e26b7a419f40de58c11891.tar.gz
qmk_firmware-71f8f5048b0c583893e26b7a419f40de58c11891.zip
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--layouts/community/ergodox/coderkun_neo2/keymap.c28
-rw-r--r--quantum/process_keycode/process_unicode_common.c6
-rw-r--r--quantum/quantum.c62
-rw-r--r--quantum/quantum.h8
-rw-r--r--quantum/send_string.c56
-rw-r--r--quantum/send_string.h9
6 files changed, 66 insertions, 103 deletions
diff --git a/layouts/community/ergodox/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c
index a6fe61079..638442676 100644
--- a/layouts/community/ergodox/coderkun_neo2/keymap.c
+++ b/layouts/community/ergodox/coderkun_neo2/keymap.c
@@ -269,31 +269,3 @@ void unicode_input_start (void) {
269 unregister_code(KC_LSFT); 269 unregister_code(KC_LSFT);
270 unregister_code(KC_LCTL); 270 unregister_code(KC_LCTL);
271}; 271};
272
273// Override method to use NEO_A instead of KC_A
274uint16_t hex_to_keycode(uint8_t hex)
275{
276 if(hex == 0x0) {
277 return KC_0;
278 }
279 else if(hex >= 0xA) {
280 switch(hex) {
281 case 0xA:
282 return NEO_A;
283 case 0xB:
284 return NEO_B;
285 case 0xC:
286 return NEO_C;
287 case 0xD:
288 return NEO_D;
289 case 0xE:
290 return NEO_E;
291 case 0xF:
292 return NEO_F;
293 default:
294 return KC_NO;
295 }
296 }
297
298 return KC_1 + (hex - 0x1);
299}
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index bac9fbcc0..46fcaaa86 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -158,7 +158,7 @@ __attribute__((weak)) void unicode_input_cancel(void) {
158void register_hex(uint16_t hex) { 158void register_hex(uint16_t hex) {
159 for (int i = 3; i >= 0; i--) { 159 for (int i = 3; i >= 0; i--) {
160 uint8_t digit = ((hex >> (i * 4)) & 0xF); 160 uint8_t digit = ((hex >> (i * 4)) & 0xF);
161 tap_code16(hex_to_keycode(digit)); 161 send_nibble(digit);
162 } 162 }
163} 163}
164 164
@@ -171,10 +171,10 @@ void register_hex32(uint32_t hex) {
171 uint8_t digit = ((hex >> (i * 4)) & 0xF); 171 uint8_t digit = ((hex >> (i * 4)) & 0xF);
172 if (digit == 0) { 172 if (digit == 0) {
173 if (!onzerostart) { 173 if (!onzerostart) {
174 tap_code16(hex_to_keycode(digit)); 174 send_nibble(digit);
175 } 175 }
176 } else { 176 } else {
177 tap_code16(hex_to_keycode(digit)); 177 send_nibble(digit);
178 onzerostart = false; 178 onzerostart = false;
179 } 179 }
180 } 180 }
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 59d95f2f5..8ccdb774b 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -352,34 +352,6 @@ layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_
352 352
353void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { layer_state_set(update_tri_layer_state(layer_state, layer1, layer2, layer3)); } 353void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { layer_state_set(update_tri_layer_state(layer_state, layer1, layer2, layer3)); }
354 354
355void tap_random_base64(void) {
356#if defined(__AVR_ATmega32U4__)
357 uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64;
358#else
359 uint8_t key = rand() % 64;
360#endif
361 switch (key) {
362 case 0 ... 25:
363 send_char(key + 'A');
364 break;
365 case 26 ... 51:
366 send_char(key - 26 + 'a');
367 break;
368 case 52:
369 send_char('0');
370 break;
371 case 53 ... 61:
372 send_char(key - 53 + '1');
373 break;
374 case 62:
375 send_char('+');
376 break;
377 case 63:
378 send_char('/');
379 break;
380 }
381}
382
383void matrix_init_quantum() { 355void matrix_init_quantum() {
384 magic(); 356 magic();
385#if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN) 357#if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN)
@@ -475,40 +447,6 @@ void matrix_scan_quantum() {
475# include "hd44780.h" 447# include "hd44780.h"
476#endif 448#endif
477 449
478// Functions for spitting out values
479//
480
481void send_dword(uint32_t number) {
482 uint16_t word = (number >> 16);
483 send_word(word);
484 send_word(number & 0xFFFFUL);
485}
486
487void send_word(uint16_t number) {
488 uint8_t byte = number >> 8;
489 send_byte(byte);
490 send_byte(number & 0xFF);
491}
492
493void send_byte(uint8_t number) {
494 uint8_t nibble = number >> 4;
495 send_nibble(nibble);
496 send_nibble(number & 0xF);
497}
498
499void send_nibble(uint8_t number) { tap_code16(hex_to_keycode(number)); }
500
501__attribute__((weak)) uint16_t hex_to_keycode(uint8_t hex) {
502 hex = hex & 0xF;
503 if (hex == 0x0) {
504 return KC_0;
505 } else if (hex < 0xA) {
506 return KC_1 + (hex - 0x1);
507 } else {
508 return KC_A + (hex - 0xA);
509 }
510}
511
512void api_send_unicode(uint32_t unicode) { 450void api_send_unicode(uint32_t unicode) {
513#ifdef API_ENABLE 451#ifdef API_ENABLE
514 uint8_t chunk[4]; 452 uint8_t chunk[4];
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 7c546b515..fe6bf310a 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -206,8 +206,6 @@ layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_
206 206
207void set_single_persistent_default_layer(uint8_t default_layer); 207void set_single_persistent_default_layer(uint8_t default_layer);
208 208
209void tap_random_base64(void);
210
211#define IS_LAYER_ON(layer) layer_state_is(layer) 209#define IS_LAYER_ON(layer) layer_state_is(layer)
212#define IS_LAYER_OFF(layer) !layer_state_is(layer) 210#define IS_LAYER_OFF(layer) !layer_state_is(layer)
213 211
@@ -235,12 +233,6 @@ void register_code16(uint16_t code);
235void unregister_code16(uint16_t code); 233void unregister_code16(uint16_t code);
236void tap_code16(uint16_t code); 234void tap_code16(uint16_t code);
237 235
238void send_dword(uint32_t number);
239void send_word(uint16_t number);
240void send_byte(uint8_t number);
241void send_nibble(uint8_t number);
242uint16_t hex_to_keycode(uint8_t hex);
243
244void led_set_user(uint8_t usb_led); 236void led_set_user(uint8_t usb_led);
245void led_set_kb(uint8_t usb_led); 237void led_set_kb(uint8_t usb_led);
246bool led_update_user(led_t led_state); 238bool led_update_user(led_t led_state);
diff --git a/quantum/send_string.c b/quantum/send_string.c
index 0e8902ca3..7d096b427 100644
--- a/quantum/send_string.c
+++ b/quantum/send_string.c
@@ -249,4 +249,58 @@ void send_char(char ascii_code) {
249 if (is_dead) { 249 if (is_dead) {
250 tap_code(KC_SPACE); 250 tap_code(KC_SPACE);
251 } 251 }
252} \ No newline at end of file 252}
253
254void send_dword(uint32_t number) {
255 send_word(number >> 16);
256 send_word(number & 0xFFFFUL);
257}
258
259void send_word(uint16_t number) {
260 send_byte(number >> 8);
261 send_byte(number & 0xFF);
262}
263
264void send_byte(uint8_t number) {
265 send_nibble(number >> 4);
266 send_nibble(number & 0xF);
267}
268
269void send_nibble(uint8_t number) {
270 switch (number & 0xF) {
271 case 0 ... 9:
272 send_char(number + '0');
273 break;
274 case 10 ... 15:
275 send_char(number - 10 + 'a');
276 break;
277 }
278}
279
280void tap_random_base64(void) {
281#if defined(__AVR_ATmega32U4__)
282 uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64;
283#else
284 uint8_t key = rand() % 64;
285#endif
286 switch (key) {
287 case 0 ... 25:
288 send_char(key + 'A');
289 break;
290 case 26 ... 51:
291 send_char(key - 26 + 'a');
292 break;
293 case 52:
294 send_char('0');
295 break;
296 case 53 ... 61:
297 send_char(key - 53 + '1');
298 break;
299 case 62:
300 send_char('+');
301 break;
302 case 63:
303 send_char('/');
304 break;
305 }
306}
diff --git a/quantum/send_string.h b/quantum/send_string.h
index 570522eb0..b90e6f689 100644
--- a/quantum/send_string.h
+++ b/quantum/send_string.h
@@ -23,10 +23,10 @@
23#define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval) 23#define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval)
24 24
25// Look-Up Tables (LUTs) to convert ASCII character to keycode sequence. 25// Look-Up Tables (LUTs) to convert ASCII character to keycode sequence.
26extern const uint8_t ascii_to_keycode_lut[128];
27extern const uint8_t ascii_to_shift_lut[16]; 26extern const uint8_t ascii_to_shift_lut[16];
28extern const uint8_t ascii_to_altgr_lut[16]; 27extern const uint8_t ascii_to_altgr_lut[16];
29extern const uint8_t ascii_to_dead_lut[16]; 28extern const uint8_t ascii_to_dead_lut[16];
29extern const uint8_t ascii_to_keycode_lut[128];
30 30
31// clang-format off 31// clang-format off
32#define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \ 32#define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \
@@ -45,3 +45,10 @@ void send_string_with_delay(const char *str, uint8_t interval);
45void send_string_P(const char *str); 45void send_string_P(const char *str);
46void send_string_with_delay_P(const char *str, uint8_t interval); 46void send_string_with_delay_P(const char *str, uint8_t interval);
47void send_char(char ascii_code); 47void send_char(char ascii_code);
48
49void send_dword(uint32_t number);
50void send_word(uint16_t number);
51void send_byte(uint8_t number);
52void send_nibble(uint8_t number);
53
54void tap_random_base64(void);