diff options
-rw-r--r-- | keyboards/frosty_flake/keymaps/nikchi/Makefile | 2 | ||||
-rw-r--r-- | keyboards/frosty_flake/keymaps/nikchi/keymap.c | 99 | ||||
-rw-r--r-- | keyboards/frosty_flake/rules.mk | 5 | ||||
-rw-r--r-- | quantum/process_keycode/process_unicodemap.c | 2 |
4 files changed, 78 insertions, 30 deletions
diff --git a/keyboards/frosty_flake/keymaps/nikchi/Makefile b/keyboards/frosty_flake/keymaps/nikchi/Makefile index 377a25c28..ad86e82d2 100644 --- a/keyboards/frosty_flake/keymaps/nikchi/Makefile +++ b/keyboards/frosty_flake/keymaps/nikchi/Makefile | |||
@@ -12,7 +12,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
12 | MIDI_ENABLE = no # MIDI controls | 12 | MIDI_ENABLE = no # MIDI controls |
13 | AUDIO_ENABLE = no # Audio output on port C6 | 13 | AUDIO_ENABLE = no # Audio output on port C6 |
14 | UNICODE_ENABLE = no # Unicode | 14 | UNICODE_ENABLE = no # Unicode |
15 | UNICODEMAP_ENABLE = no # unicodemap | 15 | UNICODEMAP_ENABLE = yes # unicodemap |
16 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | 16 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID |
17 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. | 17 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. |
18 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | 18 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend |
diff --git a/keyboards/frosty_flake/keymaps/nikchi/keymap.c b/keyboards/frosty_flake/keymaps/nikchi/keymap.c index 955891eb2..58964d1e3 100644 --- a/keyboards/frosty_flake/keymaps/nikchi/keymap.c +++ b/keyboards/frosty_flake/keymaps/nikchi/keymap.c | |||
@@ -1,4 +1,9 @@ | |||
1 | #include "frosty_flake.h" | 1 | #include "frosty_flake.h" |
2 | #include "action_layer.h" | ||
3 | #include "eeconfig.h" | ||
4 | #include "process_unicode.h" | ||
5 | #include "quantum.h" | ||
6 | |||
2 | #define _______ KC_TRNS | 7 | #define _______ KC_TRNS |
3 | 8 | ||
4 | //Tap Dance Declarations | 9 | //Tap Dance Declarations |
@@ -13,25 +18,32 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||
13 | // Other declarations would go here, separated by commas, if you have them | 18 | // Other declarations would go here, separated by commas, if you have them |
14 | }; | 19 | }; |
15 | 20 | ||
21 | enum my_macros { | ||
22 | NEWDESK = 0, | ||
23 | LEFTDESK, | ||
24 | RIGHTDESK, | ||
25 | CLOSEDESK | ||
26 | }; | ||
27 | |||
16 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. | 28 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. |
17 | { | 29 | { |
18 | switch(id) { | 30 | switch(id) { |
19 | case 0: // this would trigger when you hit a key mapped as M(0) | 31 | case NEWDESK: // this would trigger when you hit a key mapped as M(0) |
20 | if (record->event.pressed) { | 32 | if (record->event.pressed) { |
21 | return MACRO( I(1), D(LGUI), D(LCTL), D(D), U(LGUI), U(LCTL), U(D), END ); // NEW DESKTOP | 33 | return MACRO( I(1), D(LGUI), D(LCTL), D(D), U(LGUI), U(LCTL), U(D), END ); // NEW DESKTOP |
22 | } | 34 | } |
23 | break; | 35 | break; |
24 | case 1: // this would trigger when you hit a key mapped as M(0) | 36 | case LEFTDESK: // this would trigger when you hit a key mapped as M(0) |
25 | if (record->event.pressed) { | 37 | if (record->event.pressed) { |
26 | return MACRO( I(1), D(LGUI), D(LCTL), D(LEFT), U(LGUI), U(LCTL), U(LEFT), END ); // LEFT DESKTOP | 38 | return MACRO( I(1), D(LGUI), D(LCTL), D(LEFT), U(LGUI), U(LCTL), U(LEFT), END ); // LEFT DESKTOP |
27 | } | 39 | } |
28 | break; | 40 | break; |
29 | case 2: // this would trigger when you hit a key mapped as M(0) | 41 | case RIGHTDESK: // this would trigger when you hit a key mapped as M(0) |
30 | if (record->event.pressed) { | 42 | if (record->event.pressed) { |
31 | return MACRO( I(1), D(LGUI), D(LCTL), D(RGHT), U(LGUI), U(LCTL), U(RGHT), END ); // RIGHT DESKTOP | 43 | return MACRO( I(1), D(LGUI), D(LCTL), D(RGHT), U(LGUI), U(LCTL), U(RGHT), END ); // RIGHT DESKTOP |
32 | } | 44 | } |
33 | break; | 45 | break; |
34 | case 3: // this would trigger when you hit a key mapped as M(0) | 46 | case CLOSEDESK: // this would trigger when you hit a key mapped as M(0) |
35 | if (record->event.pressed) { | 47 | if (record->event.pressed) { |
36 | return MACRO( I(1), D(LGUI), D(LCTL), D(F4), U(LGUI), U(LCTL), U(F4), END ); // CLOSE DESKTOP | 48 | return MACRO( I(1), D(LGUI), D(LCTL), D(F4), U(LGUI), U(LCTL), U(F4), END ); // CLOSE DESKTOP |
37 | } | 49 | } |
@@ -40,25 +52,36 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // | |||
40 | return MACRO_NONE; | 52 | return MACRO_NONE; |
41 | }; | 53 | }; |
42 | 54 | ||
43 | LEADER_EXTERNS(); | ||
44 | |||
45 | void matrix_scan_user(void) { | ||
46 | LEADER_DICTIONARY() { | ||
47 | leading = false; | ||
48 | leader_end(); | ||
49 | |||
50 | SEQ_TWO_KEYS(KC_A, KC_A) { | ||
51 | register_code(KC_LCTL); | ||
52 | register_code(KC_A); | ||
53 | unregister_code(KC_A); | ||
54 | register_code(KC_C); | ||
55 | unregister_code(KC_C); | ||
56 | unregister_code(KC_LCTL); | ||
57 | } | ||
58 | 55 | ||
59 | } | 56 | enum unicode_name { |
60 | } | 57 | THINK, // thinking face 🤔 |
58 | GRIN, // grinning face 😊 | ||
59 | BBB, // dat B 🅱 | ||
60 | POO, // poop 💩 | ||
61 | HUNDR, // 100 💯 | ||
62 | SMRK, // smirk 😏 | ||
63 | WEARY, // good shit 😩 | ||
64 | EGGPL, // EGGPLANT 🍆 | ||
65 | WATER, // wet 💦 | ||
66 | LIT, // fire 🔥 | ||
67 | UNAMU, // unamused 😒 | ||
68 | SNEK // snke 🐍 | ||
69 | }; | ||
61 | 70 | ||
71 | const uint32_t PROGMEM unicode_map[] = { | ||
72 | [THINK] = 0x1F914, | ||
73 | [GRIN] = 0x1F600, | ||
74 | [BBB] = 0x1F171, | ||
75 | [POO] = 0x1F4A9, | ||
76 | [HUNDR] = 0x1F4AF, | ||
77 | [SMRK] = 0x1F60F, | ||
78 | [WEARY] = 0x1F629, | ||
79 | [EGGPL] = 0x1F346, | ||
80 | [WATER] = 0x1F4A6, | ||
81 | [LIT] = 0x1F525, | ||
82 | [UNAMU] = 0x1F612, | ||
83 | [SNEK] = 0x1F40D | ||
84 | }; | ||
62 | 85 | ||
63 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 86 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
64 | [0] = KEYMAP(\ | 87 | [0] = KEYMAP(\ |
@@ -70,10 +93,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
70 | TD(TD_CTCPS),KC_LGUI,KC_LALT, KC_SPC, KC_LEAD,KC_RGUI, KC_APP,MO(1) , KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT), | 93 | TD(TD_CTCPS),KC_LGUI,KC_LALT, KC_SPC, KC_LEAD,KC_RGUI, KC_APP,MO(1) , KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT), |
71 | [1] = KEYMAP(\ | 94 | [1] = KEYMAP(\ |
72 | KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS, \ | 95 | KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS, \ |
73 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ | 96 | KC_GRV, X(GRIN),X(THINK),X(SMRK),X(WEARY),X(UNAMU), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC, KC_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ |
74 | KC_TAB, KC_Q, M(0), KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \ | 97 | KC_TAB, KC_Q, M(0), KC_E, KC_R,X(EGGPL),X(WATER), KC_U, KC_I, KC_O, KC_P, KC_UP ,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \ |
75 | KC_LCTL, M(1), M(3), M(2), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ | 98 | KC_LCTL, M(1), M(3), M(2), KC_F, X(LIT), X(SNEK), KC_J, KC_K, KC_L,KC_LEFT,KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, \ |
76 | KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \ | 99 | KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, X(HUNDR), X(BBB), X(POO), KC_M,KC_COMM, KC_DOT,KC_DOWN, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \ |
77 | KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, TG(2),_______ , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT), | 100 | KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, TG(2),_______ , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT), |
78 | [2] = KEYMAP(\ | 101 | [2] = KEYMAP(\ |
79 | KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS, \ | 102 | KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS, \ |
@@ -81,5 +104,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
81 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \ | 104 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \ |
82 | KC_LCTL, KC_D, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ | 105 | KC_LCTL, KC_D, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ |
83 | KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \ | 106 | KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \ |
84 | KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, _______,_______ , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT), | 107 | KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, _______, _______, KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT), |
108 | }; | ||
109 | |||
110 | LEADER_EXTERNS(); | ||
111 | |||
112 | void matrix_scan_user(void) { | ||
113 | LEADER_DICTIONARY() { | ||
114 | leading = false; | ||
115 | leader_end(); | ||
116 | |||
117 | SEQ_TWO_KEYS(KC_A, KC_A) { | ||
118 | register_code(KC_LCTL); | ||
119 | register_code(KC_A); | ||
120 | unregister_code(KC_A); | ||
121 | register_code(KC_C); | ||
122 | unregister_code(KC_C); | ||
123 | unregister_code(KC_LCTL); | ||
124 | } | ||
125 | |||
126 | } | ||
127 | } | ||
128 | |||
129 | void matrix_init_user(void) { | ||
130 | _delay_ms(500); | ||
131 | set_unicode_input_mode(UC_WINC); | ||
85 | }; | 132 | }; |
diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk index dd2f4b6ee..8c59241d4 100644 --- a/keyboards/frosty_flake/rules.mk +++ b/keyboards/frosty_flake/rules.mk | |||
@@ -54,8 +54,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 | |||
54 | BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) | 54 | BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) |
55 | MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) | 55 | MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) |
56 | EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) | 56 | EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) |
57 | CONSOLE_ENABLE ?= yes # Console for debug(+400) | 57 | CONSOLE_ENABLE ?= no # Console for debug(+400) |
58 | COMMAND_ENABLE ?= yes # Commands for debug and configuration | 58 | COMMAND_ENABLE ?= no # Commands for debug and configuration |
59 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | 59 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE |
60 | SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend | 60 | SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend |
61 | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | 61 | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work |
@@ -63,6 +63,7 @@ NKRO_ENABLE ?= no # USB Nkey Rollover | |||
63 | BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default | 63 | BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default |
64 | MIDI_ENABLE ?= no # MIDI controls | 64 | MIDI_ENABLE ?= no # MIDI controls |
65 | UNICODE_ENABLE ?= no # Unicode | 65 | UNICODE_ENABLE ?= no # Unicode |
66 | UNICODEMAP_ENABLE ?= yes | ||
66 | BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID | 67 | BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID |
67 | AUDIO_ENABLE ?= no # Audio output on port C6 | 68 | AUDIO_ENABLE ?= no # Audio output on port C6 |
68 | FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches | 69 | FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches |
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c index 0227fbdd7..75f35112b 100644 --- a/quantum/process_keycode/process_unicodemap.c +++ b/quantum/process_keycode/process_unicodemap.c | |||
@@ -49,7 +49,7 @@ bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { | |||
49 | if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { | 49 | if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { |
50 | const uint32_t* map = unicode_map; | 50 | const uint32_t* map = unicode_map; |
51 | uint16_t index = keycode - QK_UNICODE_MAP; | 51 | uint16_t index = keycode - QK_UNICODE_MAP; |
52 | uint32_t code = pgm_read_dword_far(&map[index]); | 52 | uint32_t code = pgm_read_dword(&map[index]); |
53 | if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) { | 53 | if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) { |
54 | // Convert to UTF-16 surrogate pair | 54 | // Convert to UTF-16 surrogate pair |
55 | code -= 0x10000; | 55 | code -= 0x10000; |