#include "ergodox.h" | |
#include "led.h" | |
#include "debug.h" | |
#include "action_layer.h" | |
#include "action_util.h" | |
#include "mousekey.h" | |
#define BASE 0 // default layer | |
#define TAPHOLD 1 // tap/hold alpha/symbol layer | |
enum { | |
// Tap/Hold | |
TH_1 ,TH_2 ,TH_3 ,TH_4 ,TH_5 ,TH_6 ,TH_7 ,TH_8 ,TH_9 ,TH_0 | |
,TH_Q ,TH_W ,TH_E ,TH_R ,TH_T ,TH_Y ,TH_U ,TH_I ,TH_O ,TH_P, TH_BSLS | |
,TH_A ,TH_S ,TH_D ,TH_F ,TH_G ,TH_H ,TH_J ,TH_K ,TH_L, TH_SCLN, TH_QUOT | |
,TH_Z ,TH_X ,TH_C ,TH_V ,TH_B ,TH_N ,TH_M ,TH_COMM ,TH_DOT, TH_SLSH | |
}; | |
float taphold_table[42][2] = { | |
[TH_1] = {KC_1 ,KC_F1} | |
,[TH_2] = {KC_2 ,KC_F2} | |
,[TH_3] = {KC_3 ,KC_F3} | |
,[TH_4] = {KC_4 ,KC_F4} | |
,[TH_5] = {KC_5 ,KC_F5} | |
,[TH_6] = {KC_6 ,KC_F6} | |
,[TH_7] = {KC_7 ,KC_F7} | |
,[TH_8] = {KC_8 ,KC_F8} | |
,[TH_9] = {KC_9 ,KC_F9} | |
,[TH_0] = {KC_0 ,KC_F10} | |
,[TH_Q] = {KC_Q ,KC_EXLM} | |
,[TH_W] = {KC_W ,KC_AT} | |
,[TH_E] = {KC_E ,KC_HASH} | |
,[TH_R] = {KC_R ,KC_DLR} | |
,[TH_T] = {KC_T ,KC_PERC} | |
,[TH_Y] = {KC_Y ,KC_CIRC} | |
,[TH_U] = {KC_U ,KC_AMPR} | |
,[TH_I] = {KC_I ,KC_ASTR} | |
,[TH_O] = {KC_O ,KC_NO} | |
,[TH_P] = {KC_P ,KC_NO} | |
,[TH_BSLS] = {KC_BSLS ,KC_NO} | |
,[TH_A] = {KC_A ,KC_NO} | |
,[TH_S] = {KC_S ,KC_NO} | |
,[TH_D] = {KC_D ,KC_NO} | |
,[TH_F] = {KC_F ,KC_NO} | |
,[TH_G] = {KC_G ,KC_NO} | |
,[TH_H] = {KC_H ,KC_NO} | |
,[TH_J] = {KC_J ,KC_NO} | |
,[TH_K] = {KC_K ,KC_NO} | |
,[TH_L] = {KC_L ,KC_NO} | |
,[TH_SCLN] = {KC_SCLN ,KC_NO} | |
,[TH_QUOT] = {KC_QUOT ,KC_NO} | |
,[TH_Z] = {KC_Z ,KC_NO} | |
,[TH_X] = {KC_X ,KC_NO} | |
,[TH_C] = {KC_C ,KC_NO} | |
,[TH_V] = {KC_V ,KC_NO} | |
,[TH_B] = {KC_B ,KC_NO} | |
,[TH_N] = {KC_N ,KC_NO} | |
,[TH_M] = {KC_M ,KC_NO} | |
,[TH_COMM] = {KC_COMM ,KC_NO} | |
,[TH_DOT] = {KC_DOT ,KC_NO} | |
,[TH_SLSH] = {KC_SLSH ,KC_NO} | |
}; | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
/******* Base Layer ******************************************************************************************************** | |
* | |
* ╭──────────┬──────┬──────┬──────┬──────┬──────┬──────╮ ╭──────┬──────┬──────┬──────┬──────┬──────┬──────────╮ | |
* │ =+ │ 1 │ 2 │ 3 │ 4 │ 5 │ ( │ │ ) │ 6 │ 7 │ 8 │ 9 │ 0 │ -_ │ | |
* ├──────────┼──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┼──────────┤ | |
* │ Esc │ q │ w │ e │ r │ t │ { │ │ } │ y │ u │ i │ o │ p │ \| │ | |
* ├──────────┼──────┼──────┼──────┼──────┼──────┤ │ │ ├──────┼──────┼──────┼──────┼──────┼──────────┤ | |
* │ Tab │ a │ s │ d │ f │ g ├──────┤ ├──────┤ h │ j │ k │ l │ ;: │ '" │ | |
* ├──────────┼──────┼──────┼──────┼──────┼──────┤ [ │ │ ] ├──────┼──────┼──────┼──────┼──────┼──────────┤ | |
* │ Shift │ z │ x │ c │ v │ b │ │ │ │ n │ m │ ,< │ .> │ /? │ Shift │ | |
* ╰───┬──────┼──────┼──────┼──────┼──────┼──────┴──────╯ ╰──────┴──────┼──────┼──────┼──────┼──────┼──────┬───╯ | |
* │ │ │ │ │ │ │ │ │ │ │ │ | |
* ╰──────┴──────┴──────┴──────┴──────╯ ╰──────┴──────┴──────┴──────┴──────╯ | |
* ╭──────┬──────╮ ╭──────┬──────╮ | |
* │ Home │ End │ │ Left │ Right│ | |
* ╭──────┼──────┼──────┤ ├──────┼──────┼──────╮ | |
* │ │ │ PgUp │ │ Up │ │ │ | |
* │Backsp│ Del ├──────┤ ├──────┤ Enter│ Space│ | |
* │ │ │ PgDn │ │ Down │ │ │ | |
* ╰──────┴──────┴──────╯ ╰──────┴──────┴──────╯ | |
*/ | |
[BASE] = KEYMAP( | |
// left hand | |
KC_EQL ,KC_1 ,KC_2 ,KC_3, KC_4, KC_5 ,KC_LPRN | |
,KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LCBR | |
,KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G | |
,KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC | |
,KC_LCTL,KC_LGUI,KC_LALT,KC_NO ,KC_NO | |
,KC_HOME,KC_END | |
,KC_PGUP | |
,KC_BSPC,KC_DEL ,KC_PGDN | |
// right hand | |
,KC_RPRN,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS | |
,KC_RCBR,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS | |
,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT | |
,KC_RBRC,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_LSFT | |
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_RCTL | |
,KC_LEFT,KC_RGHT | |
,KC_UP | |
,KC_DOWN,KC_ENT ,KC_SPC | |
) | |
,[TAPHOLD] = KEYMAP( | |
// left hand | |
KC_NO ,M(TH_1),M(TH_2),M(TH_3),M(TH_4),M(TH_5),KC_NO | |
,KC_ESC ,M(TH_Q),M(TH_W),M(TH_E),M(TH_R),M(TH_T),KC_NO | |
,KC_TAB ,M(TH_A),M(TH_S),M(TH_D),M(TH_F),M(TH_G) | |
,KC_LSFT,M(TH_Z),M(TH_X),M(TH_C),M(TH_V),M(TH_B),KC_NO | |
,KC_LCTL,KC_LGUI,KC_LALT,KC_NO ,KC_NO | |
,KC_HOME,KC_END | |
,KC_PGUP | |
,KC_BSPC,KC_DEL ,KC_PGDN | |
// right hand | |
,KC_NO ,M(TH_6),M(TH_7),M(TH_8) ,M(TH_9) ,M(TH_0) ,KC_NO | |
,KC_NO ,M(TH_Y),M(TH_U),M(TH_I) ,M(TH_O) ,M(TH_P) ,KC_BSLS | |
,M(TH_H),M(TH_J),M(TH_K) ,M(TH_L) ,KC_SCLN ,KC_QUOT | |
,KC_NO ,M(TH_N),M(TH_M),M(TH_COMM),M(TH_DOT) ,KC_SLSH ,KC_LSFT | |
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_RCTL | |
,KC_LEFT,KC_RGHT | |
,KC_UP | |
,KC_DOWN,KC_ENT ,KC_SPC | |
) | |
}; | |
uint16_t kc = 0; | |
bool tap = true; | |
const macro_t *action_get_macro(keyrecord_t *record ,uint8_t id ,uint8_t opt) | |
{ | |
switch(id) { | |
case TH_1 ... TH_SLSH: | |
if (tap) { | |
kc = taphold_table[id][0]; | |
} else { | |
kc = taphold_table[id][1]; | |
} | |
if (record->event.pressed) { | |
register_code(kc); | |
} else { | |
unregister_code(kc); | |
} | |
break; | |
default: | |
break; | |
} | |
return MACRO_NONE; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment