From: tmk Date: Wed, 4 Jan 2017 03:51:13 +0000 (+0900) Subject: core: Modifiers can be used as tap key Fix #422 X-Git-Url: https://git.gir.st/tmk_keyboard.git/commitdiff_plain/c98e89f2d522573eb868c78d689dbec6b9846c0a core: Modifiers can be used as tap key Fix #422 --- diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 69be0e13..14951ec8 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -21,6 +21,7 @@ SRC += $(COMMON_DIR)/host.c \ ifeq (yes,$(strip $(UNIMAP_ENABLE))) SRC += $(COMMON_DIR)/unimap.c OPT_DEFS += -DUNIMAP_ENABLE + OPT_DEFS += -DACTIONMAP_ENABLE else ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) SRC += $(COMMON_DIR)/actionmap.c diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 3a3c4014..83b044fe 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -535,7 +535,9 @@ bool is_tap_key(keypos_t key) case ACT_LAYER_TAP: case ACT_LAYER_TAP_EXT: switch (action.layer_tap.code) { - case 0x00 ... 0xdf: + case KC_A ... KC_EXSEL: + case KC_KP_00 ... KC_KP_HEXADECIMAL: + case KC_LCTRL ... KC_RGUI: case OP_TAP_TOGGLE: return true; } diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index 51c91950..3ac1b55b 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -24,8 +24,14 @@ along with this program. If not, see . #define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) -#define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF) + +#ifndef ACTIONMAP_ENABLE #define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL) +#else +#define IS_KEY(code) ((KC_A <= (code) && (code) <= KC_EXSEL) || \ + (KC_KP_00 <= (code) && (code) <= KC_KP_HEXADECIMAL)) +#endif + #define IS_MOD(code) (KC_LCTRL <= (code) && (code) <= KC_RGUI) @@ -179,7 +185,7 @@ enum hid_keyboard_keypad_usage { KC_ROLL_OVER, KC_POST_FAIL, KC_UNDEFINED, - KC_A, + KC_A, /* 0x04 */ KC_B, KC_C, KC_D, @@ -341,10 +347,7 @@ enum hid_keyboard_keypad_usage { KC_CRSEL, KC_EXSEL, /* 0xA4 */ - /* NOTE: 0xA5-DF are used for internal special purpose */ - -#if 0 - /* NOTE: Following codes(0xB0-DD) are not used. Leave them for reference. */ + /* NOTE: Following code range(0xB0-DD) are shared with special codes of 8-bit keymap */ KC_KP_00 = 0xB0, KC_KP_000, KC_THOUSANDS_SEPARATOR, @@ -391,7 +394,6 @@ enum hid_keyboard_keypad_usage { KC_KP_OCTAL, KC_KP_DECIMAL, KC_KP_HEXADECIMAL, /* 0xDD */ -#endif /* Modifiers */ KC_LCTRL = 0xE0, @@ -401,13 +403,11 @@ enum hid_keyboard_keypad_usage { KC_RCTRL, KC_RSHIFT, KC_RALT, - KC_RGUI, - - /* NOTE: 0xE8-FF are used for internal special purpose */ + KC_RGUI, /* 0xE7 */ }; -/* Special keycodes */ -/* NOTE: 0xA5-DF and 0xE8-FF are used for internal special purpose */ +/* Special keycodes for 8-bit keymap + NOTE: 0xA5-DF and 0xE8-FF are used for internal special purpose */ enum internal_special_keycodes { /* System Control */ KC_SYSTEM_POWER = 0xA5,