FIX: name of mousekey macros usb_keycodes.h.tags/v1.9
for (int col = 0; col < matrix_cols(); col++) { | for (int col = 0; col < matrix_cols(); col++) { | ||||
if (!matrix_is_on(row, col)) continue; | if (!matrix_is_on(row, col)) continue; | ||||
// TODO: clean code | |||||
uint8_t code = layer_get_keycode(row, col); | uint8_t code = layer_get_keycode(row, col); | ||||
if (code == KB_NO) { | if (code == KB_NO) { | ||||
// do nothing | // do nothing | ||||
usb_keyboard_add_mod(code); | usb_keyboard_add_mod(code); | ||||
} else if (IS_FN(code)) { | } else if (IS_FN(code)) { | ||||
fn_bits |= FN_BIT(code); | fn_bits |= FN_BIT(code); | ||||
} else if (IS_MOUSE(code)) { | |||||
} | |||||
#ifdef MOUSEKEY_ENABLE | #ifdef MOUSEKEY_ENABLE | ||||
else if (IS_MOUSEKEY(code)) { | |||||
mousekey_decode(code); | mousekey_decode(code); | ||||
#endif | |||||
} | } | ||||
#endif | |||||
#ifdef USB_EXTRA_ENABLE | #ifdef USB_EXTRA_ENABLE | ||||
// audio control & system control | // audio control & system control | ||||
else if (code == KB_MUTE) { | else if (code == KB_MUTE) { | ||||
_delay_ms(1000); | _delay_ms(1000); | ||||
} | } | ||||
#endif | #endif | ||||
// normal keys | |||||
else { | |||||
// normal key | |||||
else if (IS_KEY(code)) { | |||||
usb_keyboard_add_key(code); | usb_keyboard_add_key(code); | ||||
} else { | |||||
debug("ignore keycode: "); debug_hex(code); debug("\n"); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#ifdef MOUSEKEY_ENABLE | #ifdef MOUSEKEY_ENABLE | ||||
// mouse keys | |||||
mousekey_usb_send(); | mousekey_usb_send(); | ||||
#endif | #endif | ||||
#ifdef PS2_MOUSE_ENABLE | #ifdef PS2_MOUSE_ENABLE | ||||
// ps2 mouse | |||||
if (ps2_mouse_read() == 0) | if (ps2_mouse_read() == 0) | ||||
ps2_mouse_usb_send(); | ps2_mouse_usb_send(); | ||||
#endif | #endif |
uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col); | uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col); | ||||
/* layer to move during press Fn key */ | /* layer to move during press Fn key */ | ||||
int keymap_fn_layer(uint8_t fn_bits); | |||||
uint8_t keymap_fn_layer(uint8_t fn_bits); | |||||
/* keycode to send when release Fn key without using */ | /* keycode to send when release Fn key without using */ | ||||
uint8_t keymap_fn_keycode(uint8_t fn_bits); | uint8_t keymap_fn_keycode(uint8_t fn_bits); |
{ | { | ||||
uint8_t code = keymap_get_keycode(current_layer, row, col); | uint8_t code = keymap_get_keycode(current_layer, row, col); | ||||
// normal key or mouse key | // normal key or mouse key | ||||
if ((IS_KEY(code) || IS_MOUSE(code))) { | |||||
if ((IS_KEY(code) || IS_MOUSEKEY(code))) { | |||||
layer_used = true; | layer_used = true; | ||||
} | } | ||||
return code; | return code; |
#define IS_KEY(code) (KB_A <= (code) && (code) <= KP_HEXADECIMAL) | #define IS_KEY(code) (KB_A <= (code) && (code) <= KP_HEXADECIMAL) | ||||
#define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI) | #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI) | ||||
#define IS_FN(code) (FN_0 <= (code) && (code) <= FN_7) | #define IS_FN(code) (FN_0 <= (code) && (code) <= FN_7) | ||||
#define IS_MOUSE(code) (MS_UP <= (code) && (code) <= MS_WH_RIGHT) | |||||
#define IS_MOUSE_MOVE(code) (MS_UP <= (code) && (code) <= MS_RIGHT) | |||||
#define IS_MOUSE_BUTTON(code) (MS_BTN1 <= (code) && (code) <= MS_BTN5) | |||||
#define IS_MOUSE_WHEEL(code) (MS_WH_UP <= (code) && (code) <= MS_WH_RIGHT) | |||||
#define IS_MOUSEKEY(code) (MS_UP <= (code) && (code) <= MS_WH_RIGHT) | |||||
#define IS_MOUSEKEY_MOVE(code) (MS_UP <= (code) && (code) <= MS_RIGHT) | |||||
#define IS_MOUSEKEY_BUTTON(code) (MS_BTN1 <= (code) && (code) <= MS_BTN5) | |||||
#define IS_MOUSEKEY_WHEEL(code) (MS_WH_UP <= (code) && (code) <= MS_WH_RIGHT) | |||||
#define MOD_BIT(code) (1<<((code) & 0x07)) | #define MOD_BIT(code) (1<<((code) & 0x07)) | ||||
#define FN_BIT(code) (1<<((code) - FN_0)) | #define FN_BIT(code) (1<<((code) - FN_0)) |