Created
July 21, 2026 01:31
-
-
Save mits111/eb8cd7379d6c0faef0079456ea8d7f26 to your computer and use it in GitHub Desktop.
ファイル冒頭よりキーマップ定義領域_(01)、process_record_user()_(02)、process_OASYS()_(03)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Based on QMK Firmware (GPL-2.0-or-later) | |
| // https://github.com/qmk/qmk_firmware | |
| #include QMK_KEYBOARD_H | |
| #include "keymap.h" | |
| //モッドタップ | |
| #define ES_CTL LCTL_T(KC_ESC) | |
| #define GU_F6 LGUI_T(KC_F6) | |
| #define GU_BS LGUI_T(KC_BACKSPACE) // tap = BS , hold = gui , tap and hold = BS | |
| //タップダンス用のキー定義 | |
| #define TD_RN TD(TAP_DANCE_KEY_RN) // NUMキー | |
| #define TD_LF TD(TAP_DANCE_KEY_LF) // FUNKキー | |
| #define TD_TO TD(TAP_DANCE_KEY_TO) // TABキー & option | |
| enum custom_keycodes { | |
| RTHUMB = SAFE_RANGE, | |
| LTHUMB, | |
| R2THUMB, | |
| L2THUMB, | |
| KANA, | |
| NUM, | |
| FUNC, | |
| ROMAN, | |
| OACO, | |
| NICOLA, | |
| MAC, | |
| WIN, | |
| SHARE, | |
| EXN | |
| }; | |
| enum layer_number { | |
| _ROMAN = 0, | |
| _OACO, | |
| _OASYS, | |
| _NUM, | |
| _FUNC, | |
| _ADJUST, | |
| }; | |
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
| [_ROMAN] = LAYOUT_split_3x6_3_ex2( | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| TD_TO, KC_Q, KC_W, KC_E, KC_R, KC_T, NUM, TD_RN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| ES_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, TD_LF, FUNC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, | |
| //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| GU_BS, LTHUMB, KC_SPACE, KC_ENT, RTHUMB, KC_RGUI | |
| //`--------------------------' `--------------------------' | |
| ), | |
| [_OACO] = LAYOUT_split_3x6_3_ex2(//TD_TO | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| TD_TO, KC_Q, KC_W, KC_E, KC_R, KC_T, NUM, TD_RN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| ES_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, TD_LF, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, | |
| //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| GU_BS, LTHUMB, L2THUMB, R2THUMB, RTHUMB, KC_SPACE | |
| //`--------------------------' `--------------------------' | |
| ), | |
| [_OASYS] = LAYOUT_split_3x6_3_ex2( | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| TD_TO, KC_Q, KC_W, KC_E, KC_R, KC_T, NUM, TD_RN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| ES_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, TD_LF, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, | |
| //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| L2THUMB, LTHUMB, GU_F6, KC_SPACE, RTHUMB, KANA | |
| //`--------------------------' `--------------------------' | |
| ), | |
| [_NUM] = LAYOUT_split_3x6_3_ex2( //KC_CIRC^,KC_AMPR&,KC_DLR$,KC_PERC%,KC_UNDS_, | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PIPE, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, XXXXXXX, KC_CIRC, KC_AMPR,KC_EQL, KC_MINUS, KC_PLUS, KC_ASTR, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GRAVE, KC_TILD, KC_UNDS, KC_LCBR, KC_RCBR, KC_BSLS, _______, | |
| //|--------+--------+--------+-------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| _______, KC_LCBR, _______, _______, KC_RCBR, _______ | |
| //`--------------------------' `--------------------------' | |
| ), | |
| [_FUNC] = LAYOUT_split_3x6_3_ex2( | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_UP, KC_F8, KC_F9, KC_F10, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, _______, | |
| //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| _______, _______, _______, _______, _______, _______ | |
| //`--------------------------' `-------------------------' | |
| ), | |
| [_ADJUST] = LAYOUT_split_3x6_3_ex2( | |
| //,--------------------------------------------------------------. ,--------------------------------------------------------------. | |
| QK_BOOT, XXXXXXX, WIN, EXN, ROMAN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, OACO, XXXXXXX, XXXXXXX, | |
| //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | |
| XXXXXXX, XXXXXXX, SHARE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |
| //|--------+--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------+--------| | |
| XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NICOLA, MAC, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, | |
| //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| | |
| XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | |
| //`--------------------------' `--------------------------' | |
| ) | |
| }; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| bool process_record_user(uint16_t keycode, keyrecord_t* record) { | |
| if (func_next_key && record->event.pressed) { | |
| uint16_t func_keycode = keymap_key_to_keycode(_FUNC, record->event.key); | |
| func_next_key = false; | |
| if (func_keycode != KC_TRANSPARENT && func_keycode != KC_NO) { | |
| tap_code16(func_keycode); | |
| return false; | |
| } | |
| // _FUNC が透過(_______)のキーはそのまま通常処理へフォールスルー | |
| } | |
| switch (keycode) { | |
| case KC_LSFT: | |
| // TABタップ&ホールド(LGUI+LALT)中は左ShiftでFUNCレイヤーも有効にする | |
| if (record->event.pressed) { | |
| if (to_tap_state.state == TAP_AND_HOLD) { | |
| tab_hold_func = true; | |
| layer_on(_FUNC); | |
| update_tri_layer(_NUM, _FUNC, _ADJUST); | |
| return false; // Shift自体は送信しない | |
| } | |
| } else if (tab_hold_func) { | |
| tab_hold_func = false; | |
| layer_off(_FUNC); | |
| update_tri_layer(_NUM, _FUNC, _ADJUST); | |
| return false; | |
| } | |
| return true; | |
| case NUM: | |
| if (record->event.pressed) { //tap で IME/OFF | |
| layer_on(_NUM); | |
| update_tri_layer(_NUM, _FUNC, _ADJUST); | |
| numkey_time = timer_read32(); | |
| } | |
| else { | |
| layer_off(_NUM); | |
| update_tri_layer(_NUM, _FUNC, _ADJUST); | |
| uint32_t release_time = timer_read32(); | |
| if ((!num_executed) && (release_time - numkey_time < TAPPING_TERM)){ | |
| if (base_layer == _OASYS) { | |
| tap_code(KC_F2); | |
| } | |
| else { | |
| set_ime_status(false); | |
| if(mac_key) tap_code(KC_LNG2); | |
| else tap_code(KC_INT5);//for Windows | |
| } | |
| } | |
| if(num_executed) num_executed = false; | |
| } | |
| return false; | |
| case LGUI_T(KC_BACKSPACE): | |
| if (record->tap.count > 0) { | |
| if (record->event.pressed) { | |
| gu_bs_held = true; | |
| gu_bs_time = timer_read32(); | |
| } else { | |
| if (gu_bs_repeating) { | |
| unregister_code(KC_BACKSPACE); | |
| gu_bs_repeating = false; | |
| } else { | |
| process_bs(); | |
| } | |
| gu_bs_held = false; | |
| } | |
| return false; | |
| } | |
| // ここで GUIキー | |
| return true; | |
| case ROMAN: | |
| if (record->event.pressed) { | |
| set_single_persistent_default_layer(_ROMAN); | |
| base_layer = _ROMAN; | |
| } | |
| return false; | |
| case OACO: | |
| if (record->event.pressed) { | |
| set_single_persistent_default_layer(_OACO); | |
| base_layer = _OACO; | |
| } | |
| return false; | |
| case NICOLA: | |
| if (record->event.pressed) { | |
| set_single_persistent_default_layer(_OASYS); | |
| base_layer = _OASYS; | |
| shared_N_key = false; | |
| ex_N_key = false; | |
| } | |
| return false; | |
| case SHARE: | |
| if (record->event.pressed) { | |
| set_single_persistent_default_layer(_OASYS); | |
| base_layer = _OASYS; | |
| shared_N_key = true; | |
| ex_N_key = false; | |
| } | |
| return false; | |
| case EXN: | |
| if (record->event.pressed) { | |
| set_single_persistent_default_layer(_OASYS); | |
| base_layer = _OASYS; | |
| shared_N_key = false; | |
| ex_N_key = true; | |
| } | |
| return false; | |
| case MAC: | |
| if (record->event.pressed) { | |
| user_config.mac_mode = true; | |
| eeconfig_update_user(user_config.raw); | |
| mac_key = user_config.mac_mode; | |
| } | |
| return false; | |
| case WIN: | |
| if (record->event.pressed) { | |
| user_config.mac_mode = false; | |
| eeconfig_update_user(user_config.raw); | |
| mac_key = user_config.mac_mode; | |
| } | |
| return false; | |
| } | |
| if(IS_LAYER_ON(_NUM)){ | |
| uint8_t base_key = keycode & 0xFF; // シフト修飾付きキーコード(KC_EXLM等)は下位バイトで判定 | |
| if (base_key > KC_A && base_key < KC_SLASH){ | |
| if (record->event.pressed) num_executed = true; | |
| } | |
| return true; | |
| } | |
| if (!is_ime_on() || base_layer == _ROMAN) { | |
| switch (keycode) { | |
| case LTHUMB: | |
| if(record->event.pressed ){ | |
| if(get_mods() & MOD_MASK_SHIFT){ | |
| paren_hold_mode = true; | |
| register_code(KC_9); | |
| return false; | |
| } | |
| else{ | |
| register_code(KC_LBRC); | |
| return false; | |
| } | |
| } | |
| else{ | |
| if((get_mods() & MOD_MASK_SHIFT) || (paren_hold_mode)){ | |
| paren_hold_mode = false; | |
| unregister_code(KC_9); | |
| return false; | |
| } | |
| else{ | |
| unregister_code(KC_LBRC); | |
| return false; | |
| } | |
| } | |
| case RTHUMB: | |
| if(record->event.pressed ){ | |
| if(get_mods() & MOD_MASK_SHIFT){ | |
| paren_hold_mode = true; | |
| register_code(KC_0); | |
| } | |
| else{ | |
| register_code(KC_RBRC); | |
| } | |
| return false; | |
| } | |
| else{ | |
| if((get_mods() & MOD_MASK_SHIFT) || (paren_hold_mode)){ | |
| paren_hold_mode = false; | |
| unregister_code(KC_0); | |
| } | |
| else{ | |
| unregister_code(KC_RBRC); | |
| } | |
| return false; | |
| } | |
| case R2THUMB: | |
| if (record->event.pressed) { | |
| register_code(KC_SPACE); | |
| } | |
| else{ | |
| unregister_code(KC_SPACE); | |
| } | |
| return false; | |
| case KANA: | |
| if (record->event.pressed){ | |
| set_ime_status(true); | |
| if(mac_key) tap_code(KC_LNG1); | |
| else tap_code(KC_INT4); | |
| } | |
| return false; | |
| default: | |
| return true; | |
| }//switch (keycode) { | |
| }//if (!is_ime_on() || base_layer == _ROMAN) { | |
| else if (base_layer == _OASYS || base_layer == _OACO){ | |
| //ここから親指シフト | |
| switch (keycode) { | |
| case KC_A ... KC_Z: | |
| //1 ~ 0 はcorneでは使わない | |
| if (record->event.pressed) { | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Fig_Key_Down, keycode, set_timer(keycode)); | |
| } else { | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case KC_ENTER: | |
| if (record->event.pressed) { | |
| process_OASYS(Break_key, keycode, 0); | |
| //key_field 設定の同期を取るため親指シフト処理に投げる | |
| } | |
| return true; | |
| case KC_SPACE: | |
| if (record->event.pressed) { | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else{ | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case KC_MINUS: | |
| case KC_SEMICOLON ... KC_SLASH: | |
| //KC_LEFT_BRACKET'[' はCorne では使用しない | |
| if (record->event.pressed) { | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Fig_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else { | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case RTHUMB: | |
| if (record->event.pressed) { | |
| if(get_mods() & MOD_MASK_SHIFT){ | |
| paren_hold_mode = true; | |
| register_code(KC_0); | |
| return false; | |
| } | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else{ | |
| if((get_mods() & MOD_MASK_SHIFT) || (paren_hold_mode)){ | |
| paren_hold_mode = false; | |
| unregister_code(KC_0); | |
| return false; | |
| } | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case LTHUMB: | |
| if (record->event.pressed) { | |
| if(get_mods() & MOD_MASK_SHIFT){ | |
| paren_hold_mode = true; | |
| register_code(KC_9); | |
| return false; | |
| } | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else{ | |
| if((get_mods() & MOD_MASK_SHIFT) || (paren_hold_mode)){ | |
| paren_hold_mode = false; | |
| unregister_code(KC_9); | |
| return false; | |
| } | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case L2THUMB: | |
| case R2THUMB: | |
| if (record->event.pressed) { | |
| if(get_mods() & MOD_MASK_SHIFT){ | |
| convert_hold_mode = true; | |
| register_code(KC_SPACE); | |
| return false; | |
| } | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(0)); | |
| } | |
| else{ | |
| if((get_mods() & MOD_MASK_SHIFT) || (convert_hold_mode)){ | |
| convert_hold_mode = false; | |
| unregister_code(KC_SPACE); | |
| return false; | |
| } | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case KANA: | |
| if (record->event.pressed) { | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else{ | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return false; | |
| case GU_F6: //key_field同期をとるため親指シフト処理に投げる | |
| if (record->event.pressed) { | |
| if (get_mods()) return set_mod(keycode); | |
| process_OASYS(Thumb_Key_Down, keycode, set_timer(keycode)); | |
| } | |
| else{ | |
| if(get_mods() || (extension_mod) ) return reset_mod(); | |
| process_OASYS(Key_up, keycode, set_timer(0)); | |
| } | |
| return true; | |
| default: | |
| return true; | |
| } | |
| } | |
| return true; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| void process_OASYS(SYS_EVENT event, uint16_t key, uint32_t event_time) { | |
| /* 状態遷移表を忠実になぞる*/ | |
| switch (state) { | |
| case on_init: | |
| //set_init(); | |
| switch (event) { | |
| case Fig_Key_Down: | |
| set_fig(key, event_time); | |
| state = on_fig; | |
| break; | |
| case Thumb_Key_Down: | |
| set_thumb(key, event_time); | |
| state = on_thumb; | |
| break; | |
| case Break_key: | |
| //key field 設定 | |
| if(key == KC_ENTER) set_enter_field(); | |
| break; | |
| default: | |
| tm_key = 0; | |
| break; | |
| } | |
| break; | |
| case on_fig: | |
| switch (event) { | |
| case Fig_Key_Down: | |
| send_key(fig, thumb); | |
| set_fig(key, event_time); | |
| break; | |
| case Thumb_Key_Down: | |
| if(key == LTHUMB){ | |
| set_pause_key((uint8_t)fig); // for oaco | |
| } | |
| set_thumb(key, event_time); | |
| state = fig_to_thumb; | |
| break; | |
| case Key_up: | |
| if (key == fig) { | |
| send_key(fig, thumb); | |
| set_init(); | |
| } | |
| break; | |
| case Time_over: | |
| if( fig == tm_key){ | |
| send_key(fig, thumb); | |
| set_init(); | |
| } | |
| break; | |
| case Break_key: | |
| send_key(fig, thumb); | |
| if(key == KC_ENTER) set_enter_field(); | |
| set_init(); | |
| break; | |
| default: | |
| break; | |
| } | |
| break; | |
| case on_thumb: | |
| switch (event) { | |
| case Fig_Key_Down: | |
| fig = key; | |
| send_key(fig, thumb); | |
| set_init(); | |
| break; | |
| case Thumb_Key_Down: | |
| send_key(0, thumb); | |
| set_thumb(key, event_time); | |
| state = on_thumb; | |
| break; | |
| case Key_up: | |
| if (key == thumb) { | |
| send_key(0, thumb); | |
| set_init(); | |
| } | |
| break; // 6/13 | |
| case Time_over: | |
| if(thumb == tm_key){ | |
| send_key(0, thumb); | |
| set_init(); | |
| } | |
| break; | |
| case Break_key: | |
| send_key(fig, thumb); | |
| if(key == KC_ENTER) set_enter_field(); | |
| set_init(); | |
| break; | |
| default: | |
| break; | |
| } | |
| return; | |
| case fig_to_thumb: // 文字キー親指キーセット状態で | |
| switch (event) { | |
| case Fig_Key_Down: // 文字キーが押された | |
| // 3キー分岐処理 | |
| if ((thumb_time - fig_time) >= (event_time - thumb_time)) { | |
| send_key(fig, 0); | |
| fig = key; | |
| pause_key = 0; //for oaco | |
| send_key(fig, thumb); | |
| set_init(); | |
| } else { | |
| send_key(fig, thumb); | |
| clear(thumb); | |
| set_fig(key, event_time); | |
| state = on_fig; | |
| } | |
| break; | |
| case Thumb_Key_Down: | |
| send_key(fig, thumb); | |
| clear(fig); | |
| set_thumb(key, event_time); | |
| state = on_thumb; | |
| break; | |
| case Key_up: | |
| if (key == fig && shared_N_key) { // 変換キー共用型 | |
| if ((event_time - thumb_time < NICOLA_TIME) && ((thumb_time - fig_time) > (event_time - thumb_time))) { | |
| send_key(fig, 0); | |
| clear(fig); | |
| set_thumb(key, event_time); | |
| state = on_thumb; | |
| break; | |
| } | |
| } | |
| send_key(fig, thumb); | |
| set_init(); | |
| break; | |
| case Time_over: | |
| if( thumb == tm_key){ | |
| send_key(fig, thumb); | |
| set_init(); | |
| } | |
| break; | |
| case Break_key: | |
| send_key(fig, thumb); | |
| if(key == KC_ENTER) set_enter_field(); | |
| set_init(); | |
| break; | |
| default: | |
| break; | |
| } | |
| break; | |
| default: | |
| return; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment