Keymap: xtonhasvim updates (#3768)
* cherrypicking file changes just for updates * removed unused heat foo * avoid defining own min/max * add license * formatting
This commit is contained in:
parent
3c20983055
commit
3892829d74
9 changed files with 398 additions and 108 deletions
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include "xtonhasvim.h"
|
||||
#include "fancylighting.h"
|
||||
|
||||
/************************************
|
||||
* helper foo
|
||||
|
@ -53,13 +54,13 @@ static void ALT(uint16_t keycode) {
|
|||
}
|
||||
|
||||
|
||||
static uint16_t vstate = VIM_START;
|
||||
uint16_t vstate = VIM_START;
|
||||
static bool yank_was_lines = false;
|
||||
static bool SHIFTED = false;
|
||||
static uint32_t mod_override_layer_state = 0;
|
||||
static uint16_t mod_override_triggering_key = 0;
|
||||
|
||||
static void edit(void) { vstate = VIM_START; layer_on(_EDIT); layer_off(_CMD); }
|
||||
static void edit(void) { vstate = VIM_START; layer_clear(); }
|
||||
#define EDIT edit()
|
||||
|
||||
|
||||
|
@ -102,25 +103,54 @@ static void simple_movement(uint16_t keycode) {
|
|||
}
|
||||
}
|
||||
|
||||
static void comma_period(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case VIM_COMMA:
|
||||
if (SHIFTED) {
|
||||
// indent
|
||||
CMD(KC_LBRACKET);
|
||||
} else {
|
||||
// toggle comment
|
||||
CMD(KC_SLASH);
|
||||
}
|
||||
break;
|
||||
case VIM_PERIOD:
|
||||
if (SHIFTED) {
|
||||
// outdent
|
||||
CMD(KC_RBRACKET);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#define PASS_THRU process_record_keymap(keycode, record)
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if(record->event.pressed && layer_state_is(_CMD) && IS_MOD(keycode)) {
|
||||
/* keymap gets first whack */
|
||||
if(!process_record_keymap(keycode, record)) return false;
|
||||
|
||||
/****** FIREY_RETURN *****/
|
||||
if(record->event.pressed && keycode == FIREY_RETURN) {
|
||||
start_firey_return();
|
||||
TAP(KC_ENT);
|
||||
}
|
||||
|
||||
/****** mod passthru *****/
|
||||
if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MOD(keycode) || keycode == LSFT(KC_LALT))) {
|
||||
mod_override_layer_state = layer_state;
|
||||
mod_override_triggering_key = keycode;
|
||||
// TODO: change this to track key location instead
|
||||
layer_clear();
|
||||
return PASS_THRU; // let the event fall through...
|
||||
return true; // let the event fall through...
|
||||
}
|
||||
if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) {
|
||||
layer_state_set(mod_override_layer_state);
|
||||
mod_override_layer_state = 0;
|
||||
mod_override_triggering_key = 0;
|
||||
return PASS_THRU;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (VIM_START <= keycode && keycode <= VIM_ESC) {
|
||||
|
@ -132,7 +162,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
if (record->event.pressed) {
|
||||
if(keycode == VIM_START) {
|
||||
// entry from anywhere
|
||||
layer_on(_CMD);
|
||||
layer_on(vim_cmd_layer());
|
||||
vstate = VIM_START;
|
||||
|
||||
// reset state
|
||||
|
@ -176,7 +206,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
break;
|
||||
case VIM_D:
|
||||
if(SHIFTED) {
|
||||
TAP(KC_K);
|
||||
CTRL(KC_K);
|
||||
} else {
|
||||
vstate = VIM_D;
|
||||
}
|
||||
|
@ -300,19 +330,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
}
|
||||
break;
|
||||
case VIM_COMMA:
|
||||
if(SHIFTED) {
|
||||
// indent
|
||||
CMD(KC_LBRACKET);
|
||||
} else {
|
||||
// toggle comment
|
||||
CMD(KC_SLASH);
|
||||
}
|
||||
break;
|
||||
case VIM_PERIOD:
|
||||
if(SHIFTED) {
|
||||
// outdent
|
||||
CMD(KC_RBRACKET);
|
||||
}
|
||||
comma_period(keycode);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -483,6 +502,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
TAP(KC_RIGHT);
|
||||
vstate = VIM_START;
|
||||
break;
|
||||
case VIM_COMMA:
|
||||
case VIM_PERIOD:
|
||||
comma_period(keycode);
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
|
@ -539,6 +562,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
TAP(KC_RIGHT);
|
||||
vstate = VIM_START;
|
||||
break;
|
||||
case VIM_COMMA:
|
||||
case VIM_PERIOD:
|
||||
comma_period(keycode);
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
|
@ -610,6 +637,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
}
|
||||
return false;
|
||||
} else {
|
||||
return PASS_THRU;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue