mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-30 21:38:01 +06:00
59 lines
1.5 KiB
C
59 lines
1.5 KiB
C
#include "quantum.h"
|
|
#include "dshields.h"
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX)
|
|
|| (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)
|
|
|| (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
|
keycode = keycode & 0xFF;
|
|
}
|
|
if (keycode == KC_ESC && record->event.pressed) {
|
|
bool rc = true;
|
|
uint8_t mods = 0;
|
|
if ((mods = get_oneshot_mods()) && !has_oneshot_mods_timed_out()) {
|
|
clear_oneshot_mods();
|
|
unregister_mods(mods);
|
|
rc = false;
|
|
}
|
|
if ((mods = get_oneshot_locked_mods())) {
|
|
clear_oneshot_locked_mods();
|
|
unregister_mods(mods);
|
|
rc = false;
|
|
}
|
|
if (is_oneshot_layer_active()) {
|
|
layer_clear();
|
|
rc = false;
|
|
}
|
|
return rc;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
|
|
switch (keycode) {
|
|
case MT_A:
|
|
case MT_S:
|
|
case MT_D:
|
|
case MT_F:
|
|
case MT_J:
|
|
case MT_K:
|
|
case MT_L:
|
|
case MT_SCLN:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
|
|
switch (keycode) {
|
|
case MT_SPC:
|
|
case MT_BSPC:
|
|
case MT_ESC:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|