Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tidy up use of keycode range helpers #19756

Merged
merged 1 commit into from
Feb 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions keyboards/converter/usb_usb/custom_matrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ extern "C" {
bool matrix_is_on(uint8_t row, uint8_t col) {
uint8_t code = CODE(row, col);

if (IS_MOD(code)) {
if (IS_MODIFIER_KEYCODE(code)) {
if (local_keyboard_report.mods & ROW_BITS(code)) {
return true;
}
Expand All @@ -205,7 +205,7 @@ extern "C" {
matrix_row_t matrix_get_row(uint8_t row) {
uint16_t row_bits = 0;

if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) {
if (IS_MODIFIER_KEYCODE(CODE(row, 0)) && local_keyboard_report.mods) {
row_bits |= local_keyboard_report.mods;
}

Expand Down
2 changes: 1 addition & 1 deletion keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}

if (!IS_MOD(keycode) && record->event.pressed) {
if (!IS_MODIFIER_KEYCODE(keycode) && record->event.pressed) {
if(keycode == KC_E || keycode == KC_A || keycode == KC_O || keycode == KC_I || keycode == KC_U) {
predecessor_key = KC_O;
vowel_proximity = timer_read();
Expand Down
4 changes: 2 additions & 2 deletions keyboards/sirius/unigo66/custom_matrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ extern "C"
bool matrix_is_on(uint8_t row, uint8_t col) {
uint8_t code = CODE(row, col);

if (IS_MOD(code)) {
if (IS_MODIFIER_KEYCODE(code)) {
if (local_keyboard_report.mods & ROW_BITS(code)) {
return true;
}
Expand All @@ -191,7 +191,7 @@ extern "C"
matrix_row_t matrix_get_row(uint8_t row) {
uint16_t row_bits = 0;

if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) {
if (IS_MODIFIER_KEYCODE(CODE(row, 0)) && local_keyboard_report.mods) {
row_bits |= local_keyboard_report.mods;
}

Expand Down
2 changes: 1 addition & 1 deletion keyboards/xiudi/xd75/keymaps/xo/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
backlight_level(6);
}

if (IS_MOD(keycode)) {
if (IS_MODIFIER_KEYCODE(keycode)) {
if (record->event.pressed) {
rgblight_setrgb(RGB_RED);
} else {
Expand Down
10 changes: 9 additions & 1 deletion lib/python/qmk/cli/generate/keycodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
from qmk.keycodes import load_spec


def _translate_group(group):
"""Fix up any issues with badly chosen values
"""
if group == 'modifiers':
return 'modifier'
return group


def _render_key(key):
width = 7
if 'S(' in key:
Expand Down Expand Up @@ -82,7 +90,7 @@ def _generate_helpers(lines, keycodes):
for group, codes in temp.items():
lo = keycodes["keycodes"][f'0x{codes[0]:04X}']['key']
hi = keycodes["keycodes"][f'0x{codes[1]:04X}']['key']
lines.append(f'#define IS_{ group.upper() }_KEYCODE(code) ((code) >= {lo} && (code) <= {hi})')
lines.append(f'#define IS_{ _translate_group(group).upper() }_KEYCODE(code) ((code) >= {lo} && (code) <= {hi})')


def _generate_aliases(lines, keycodes):
Expand Down
18 changes: 9 additions & 9 deletions quantum/action.c
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ void process_action(keyrecord_t *record, action_t action) {
bool do_release_oneshot = false;
// notice we only clear the one shot layer if the pressed key is not a modifier.
if (is_oneshot_layer_active() && event.pressed &&
(action.kind.id == ACT_USAGE || !(IS_MOD(action.key.code)
(action.kind.id == ACT_USAGE || !(IS_MODIFIER_KEYCODE(action.key.code)
# ifndef NO_ACTION_TAPPING
|| (tap_count == 0 && (action.kind.id == ACT_LMODS_TAP || action.kind.id == ACT_RMODS_TAP))
# endif
Expand All @@ -372,7 +372,7 @@ void process_action(keyrecord_t *record, action_t action) {
uint8_t mods = (action.kind.id == ACT_LMODS) ? action.key.mods : action.key.mods << 4;
if (event.pressed) {
if (mods) {
if (IS_MOD(action.key.code) || action.key.code == KC_NO) {
if (IS_MODIFIER_KEYCODE(action.key.code) || action.key.code == KC_NO) {
// e.g. LSFT(KC_LEFT_GUI): we don't want the LSFT to be weak as it would make it useless.
// This also makes LSFT(KC_LEFT_GUI) behave exactly the same as LGUI(KC_LEFT_SHIFT).
// Same applies for some keys like KC_MEH which are declared as MEH(KC_NO).
Expand All @@ -386,7 +386,7 @@ void process_action(keyrecord_t *record, action_t action) {
} else {
unregister_code(action.key.code);
if (mods) {
if (IS_MOD(action.key.code) || action.key.code == KC_NO) {
if (IS_MODIFIER_KEYCODE(action.key.code) || action.key.code == KC_NO) {
del_mods(mods);
} else {
del_weak_mods(mods);
Expand All @@ -406,7 +406,7 @@ void process_action(keyrecord_t *record, action_t action) {
if (!keymap_config.oneshot_enable) {
if (event.pressed) {
if (mods) {
if (IS_MOD(action.key.code) || action.key.code == KC_NO) {
if (IS_MODIFIER_KEYCODE(action.key.code) || action.key.code == KC_NO) {
// e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless.
// This also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT).
// Same applies for some keys like KC_MEH which are declared as MEH(KC_NO).
Expand All @@ -420,7 +420,7 @@ void process_action(keyrecord_t *record, action_t action) {
} else {
unregister_code(action.key.code);
if (mods) {
if (IS_MOD(action.key.code) || action.key.code == KC_NO) {
if (IS_MODIFIER_KEYCODE(action.key.code) || action.key.code == KC_NO) {
del_mods(mods);
} else {
del_weak_mods(mods);
Expand Down Expand Up @@ -877,7 +877,7 @@ __attribute__((weak)) void register_code(uint8_t code) {
send_keyboard_report();
#endif

} else if IS_KEY (code) {
} else if IS_BASIC_KEYCODE (code) {
// TODO: should push command_proc out of this block?
if (command_proc(code)) return;

Expand All @@ -890,7 +890,7 @@ __attribute__((weak)) void register_code(uint8_t code) {
}
add_key(code);
send_keyboard_report();
} else if IS_MOD (code) {
} else if IS_MODIFIER_KEYCODE (code) {
add_mods(MOD_BIT(code));
send_keyboard_report();

Expand Down Expand Up @@ -944,10 +944,10 @@ __attribute__((weak)) void unregister_code(uint8_t code) {
send_keyboard_report();
#endif

} else if IS_KEY (code) {
} else if IS_BASIC_KEYCODE (code) {
del_key(code);
send_keyboard_report();
} else if IS_MOD (code) {
} else if IS_MODIFIER_KEYCODE (code) {
del_mods(MOD_BIT(code));
send_keyboard_report();

Expand Down
4 changes: 2 additions & 2 deletions quantum/action_tapping.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,12 +247,12 @@ bool process_tapping(keyrecord_t *keyp) {
case ACT_LMODS:
case ACT_RMODS:
if (action.key.mods && !action.key.code) return false;
if (IS_MOD(action.key.code)) return false;
if (IS_MODIFIER_KEYCODE(action.key.code)) return false;
break;
case ACT_LMODS_TAP:
case ACT_RMODS_TAP:
if (action.key.mods && keyp->tap.count == 0) return false;
if (IS_MOD(action.key.code)) return false;
if (IS_MODIFIER_KEYCODE(action.key.code)) return false;
break;
case ACT_LAYER_TAP:
case ACT_LAYER_TAP_EXT:
Expand Down
2 changes: 0 additions & 2 deletions quantum/keycode.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* FIXME: Add doxygen comments here */

#define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF)
#define IS_KEY(code) IS_BASIC_KEYCODE(code)
#define IS_MOD(code) IS_MODIFIERS_KEYCODE(code)

#define IS_SYSTEM(code) IS_SYSTEM_KEYCODE(code)
#define IS_CONSUMER(code) IS_MEDIA_KEYCODE(code)
Expand Down
2 changes: 1 addition & 1 deletion quantum/keycodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -1315,7 +1315,7 @@ enum qk_keycode_defines {
#define IS_SYSTEM_KEYCODE(code) ((code) >= KC_SYSTEM_POWER && (code) <= KC_SYSTEM_WAKE)
#define IS_MEDIA_KEYCODE(code) ((code) >= KC_AUDIO_MUTE && (code) <= KC_ASSISTANT)
#define IS_MOUSE_KEYCODE(code) ((code) >= KC_MS_UP && (code) <= KC_MS_ACCEL2)
#define IS_MODIFIERS_KEYCODE(code) ((code) >= KC_LEFT_CTRL && (code) <= KC_RIGHT_GUI)
#define IS_MODIFIER_KEYCODE(code) ((code) >= KC_LEFT_CTRL && (code) <= KC_RIGHT_GUI)
#define IS_SWAP_HANDS_KEYCODE(code) ((code) >= QK_SWAP_HANDS_TOGGLE && (code) <= QK_SWAP_HANDS_ONE_SHOT)
#define IS_MAGIC_KEYCODE(code) ((code) >= MAGIC_SWAP_CONTROL_CAPSLOCK && (code) <= MAGIC_TOGGLE_ESCAPE_CAPSLOCK)
#define IS_MIDI_KEYCODE(code) ((code) >= QK_MIDI_ON && (code) <= QK_MIDI_PITCH_BEND_UP)
Expand Down
2 changes: 1 addition & 1 deletion quantum/process_keycode/process_combo.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ typedef struct {
#endif

/* check if keycode is only modifiers */
#define KEYCODE_IS_MOD(code) (IS_MOD(code) || (code >= QK_MODS && code <= QK_MODS_MAX && !(code & QK_BASIC_MAX)))
#define KEYCODE_IS_MOD(code) (IS_MODIFIER_KEYCODE(code) || (IS_QK_MODS(code) && !QK_MODS_GET_BASIC_KEYCODE(code)))

bool process_combo(uint16_t keycode, keyrecord_t *record);
void combo_task(void);
Expand Down
2 changes: 1 addition & 1 deletion quantum/process_keycode/process_key_override.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ bool process_key_override(const uint16_t keycode, const keyrecord_t *const recor
#endif

const bool key_down = record->event.pressed;
const bool is_mod = IS_MOD(keycode);
const bool is_mod = IS_MODIFIER_KEYCODE(keycode);

if (key_down) {
switch (keycode) {
Expand Down
10 changes: 5 additions & 5 deletions quantum/process_keycode/process_space_cadet.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,16 @@ void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdM
#ifdef SPACE_CADET_MODIFIER_CARRYOVER
sc_mods = get_mods();
#endif
if (IS_MOD(holdMod)) {
if (IS_MODIFIER_KEYCODE(holdMod)) {
register_mods(MOD_BIT(holdMod));
}
} else {
if (sc_last == holdMod && timer_elapsed(sc_timer) < GET_TAPPING_TERM(sc_keycode, record)) {
if (holdMod != tapMod) {
if (IS_MOD(holdMod)) {
if (IS_MODIFIER_KEYCODE(holdMod)) {
unregister_mods(MOD_BIT(holdMod));
}
if (IS_MOD(tapMod)) {
if (IS_MODIFIER_KEYCODE(tapMod)) {
register_mods(MOD_BIT(tapMod));
}
}
Expand All @@ -109,11 +109,11 @@ void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdM
#ifdef SPACE_CADET_MODIFIER_CARRYOVER
clear_weak_mods();
#endif
if (IS_MOD(tapMod)) {
if (IS_MODIFIER_KEYCODE(tapMod)) {
unregister_mods(MOD_BIT(tapMod));
}
} else {
if (IS_MOD(holdMod)) {
if (IS_MODIFIER_KEYCODE(holdMod)) {
unregister_mods(MOD_BIT(holdMod));
}
}
Expand Down
4 changes: 2 additions & 2 deletions quantum/quantum.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ void do_code16(uint16_t code, void (*f)(uint8_t)) {
}

__attribute__((weak)) void register_code16(uint16_t code) {
if (IS_MOD(code) || code == KC_NO) {
if (IS_MODIFIER_KEYCODE(code) || code == KC_NO) {
do_code16(code, register_mods);
} else {
do_code16(code, register_weak_mods);
Expand All @@ -86,7 +86,7 @@ __attribute__((weak)) void register_code16(uint16_t code) {

__attribute__((weak)) void unregister_code16(uint16_t code) {
unregister_code(code);
if (IS_MOD(code) || code == KC_NO) {
if (IS_MODIFIER_KEYCODE(code) || code == KC_NO) {
do_code16(code, unregister_mods);
} else {
do_code16(code, unregister_weak_mods);
Expand Down
2 changes: 1 addition & 1 deletion tests/test_common/keyboard_report_util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ std::ostream& operator<<(std::ostream& os, const report_keyboard_t& report) {
KeyboardReportMatcher::KeyboardReportMatcher(const std::vector<uint8_t>& keys) {
memset(m_report.raw, 0, sizeof(m_report.raw));
for (auto k : keys) {
if (IS_MOD(k)) {
if (IS_MODIFIER_KEYCODE(k)) {
m_report.mods |= MOD_BIT(k);
} else {
add_key_to_report(&m_report, k);
Expand Down
2 changes: 1 addition & 1 deletion users/twschum/xtonhasvim.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ static void comma_period(uint16_t keycode) {
bool process_record_vimlayer(uint16_t keycode, keyrecord_t *record) {

/****** mod passthru *****/
if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MOD(keycode) || keycode == LSFT(KC_LALT))) {
if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MODIFIER_KEYCODE(keycode) || keycode == LSFT(KC_LALT))) {
mod_override_layer_state = layer_state;
mod_override_triggering_key = keycode;
// TODO: change this to track key location instead
Expand Down
2 changes: 1 addition & 1 deletion users/xtonhasvim/xtonhasvim.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}

/****** mod passthru *****/
if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MOD(keycode) || keycode == LSFT(KC_LALT))) {
if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MODIFIER_KEYCODE(keycode) || keycode == LSFT(KC_LALT))) {
mod_override_layer_state = layer_state;
mod_override_triggering_key = keycode;
// TODO: change this to track key location instead
Expand Down