Skip to content

Instantly share code, notes, and snippets.

@nclundsten
Last active September 7, 2016 19:25
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 nclundsten/cef85100575a83caa65d02fd0627426d to your computer and use it in GitHub Desktop.
Save nclundsten/cef85100575a83caa65d02fd0627426d to your computer and use it in GitHub Desktop.
#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