Skip to content

Instantly share code, notes, and snippets.

@d-yoshi
Last active March 19, 2017 09:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d-yoshi/baf7ab6a2390c32735d2f041bc28e3ac to your computer and use it in GitHub Desktop.
Save d-yoshi/baf7ab6a2390c32735d2f041bc28e3ac to your computer and use it in GitHub Desktop.
#define MOD_LCTL 0x1
#define MOD_LGUI 0x2
#define MOD_LSFT 0x4
#define MOD_LALT 0x8
static uint16_t mod_state = 0;
// {mod_state, remap_src, remap_dest}
const uint16_t key_combo[][3] = {
{(MOD_LCTL|MOD_LGUI), KC_H, KC_LEFT},
{(MOD_LCTL|MOD_LGUI), KC_J, KC_DOWN},
{(MOD_LCTL|MOD_LGUI), KC_K, KC_UP},
{(MOD_LCTL|MOD_LGUI), KC_L, KC_RGHT}
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
/* amazing your code */
if (keycode == KC_LCTL) {
if (record->event.pressed) {
mod_state |= MOD_LCTL;
} else {
mod_state &= ~(MOD_LCTL);
}
}
if (keycode == KC_LGUI) {
if (record->event.pressed) {
mod_state |= MOD_LGUI;
} else {
mod_state &= ~(MOD_LGUI);
}
}
if (keycode == KC_LSFT) {
if (record->event.pressed) {
mod_state |= MOD_LSFT;
} else {
mod_state &= ~(MOD_LSFT);
}
}
if (keycode == KC_LALT) {
if (record->event.pressed) {
mod_state |= MOD_LALT;
} else {
mod_state &= ~(MOD_LALT);
}
}
for(int i = 0; i < sizeof(key_combo) / sizeof(key_combo[0]); i++) {
if (mod_state == key_combo[i][0]) {
if(keycode == key_combo[i][1]) {
if (record->event.pressed) {
clear_mods();
register_code(key_combo[i][2]);
} else {
unregister_code(key_combo[i][2]);
}
return false;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment