|
|
|
@ -18,14 +18,14 @@
|
|
|
|
|
#include "stdint.h"
|
|
|
|
|
#include "process_key_lock.h"
|
|
|
|
|
|
|
|
|
|
#define SHIFT(shift) (((uint64_t)1) << (shift))
|
|
|
|
|
#define BV_64(shift) (((uint64_t)1) << (shift))
|
|
|
|
|
#define GET_KEY_ARRAY(code) (((code) < 0x40) ? key_state[0] : \
|
|
|
|
|
((code) < 0x80) ? key_state[1] : \
|
|
|
|
|
((code) < 0xC0) ? key_state[2] : key_state[3])
|
|
|
|
|
#define GET_CODE_INDEX(code) (((code) < 0x40) ? (code) : \
|
|
|
|
|
((code) < 0x80) ? (code) - 0x40 : \
|
|
|
|
|
((code) < 0xC0) ? (code) - 0x80 : (code) - 0xC0)
|
|
|
|
|
#define KEY_STATE(code) (GET_KEY_ARRAY(code) & SHIFT(GET_CODE_INDEX(code))) == SHIFT(GET_CODE_INDEX(code))
|
|
|
|
|
#define KEY_STATE(code) (GET_KEY_ARRAY(code) & BV_64(GET_CODE_INDEX(code))) == BV_64(GET_CODE_INDEX(code))
|
|
|
|
|
#define SET_KEY_ARRAY_STATE(code, val) do { \
|
|
|
|
|
switch (code) { \
|
|
|
|
|
case 0x00 ... 0x3F: \
|
|
|
|
@ -42,8 +42,8 @@
|
|
|
|
|
break; \
|
|
|
|
|
} \
|
|
|
|
|
} while(0)
|
|
|
|
|
#define SET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code) | SHIFT(GET_CODE_INDEX(code))))
|
|
|
|
|
#define UNSET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code)) & ~(SHIFT(GET_CODE_INDEX(code))))
|
|
|
|
|
#define SET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code) | BV_64(GET_CODE_INDEX(code))))
|
|
|
|
|
#define UNSET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code)) & ~(BV_64(GET_CODE_INDEX(code))))
|
|
|
|
|
#define IS_STANDARD_KEYCODE(code) ((code) <= 0xFF)
|
|
|
|
|
|
|
|
|
|
// Locked key state. This is an array of 256 bits, one for each of the standard keys supported qmk.
|
|
|
|
|