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; |
