Skip to content

Instantly share code, notes, and snippets.

@gwash
Last active August 26, 2017 21:32
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 gwash/a142b8980bbba0f476b70a281e7a4e02 to your computer and use it in GitHub Desktop.
Save gwash/a142b8980bbba0f476b70a281e7a4e02 to your computer and use it in GitHub Desktop.
qmk gwash kemap gist
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#define _______ KC_TRNS
//linux keycodes
#define KC_FILEMANAGER KC_MY_COMPUTER
#define KC_TOOLS KC_F13
#define KC_LAUNCH5 KC_F14
#define KC_LAUNCH6 KC_F15
#define KC_LAUNCH7 KC_F16
#define KC_LAUNCH8 KC_F17
#define KC_LAUNCH9 KC_F18
#define KC_AUDIO_MIC_MUTE KC_F20
#define KC_TOUCHPAD_TOGGLE KC_F21
#define KC_TOUCHPAD_ON KC_F22
#define KC_TOUCHPAD_OFF KC_F23
#define KC_CANCEL KC_STOP
#define KC_REDO KC_AGAIN
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD,
};
enum {
TD_COMMA_DOT = 0,
TD_SCOLON_COLON,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
KC_ESCAPE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_SLCK,
KC_TAB,KC_Q,KC_P,KC_U,KC_J,KC_Z,TO(1),
GUI_T(KC_INSERT),KC_A,KC_N,KC_I,KC_O,TD(TD_COMMA_DOT),
KC_LSPO,KC_Y,KC_V,KC_K,KC_B,RCTL_T(KC_MINUS),TT(2),
CTL_T(KC_LBRACKET),ALT_T(KC_BSLASH),KC_LEFT,KC_RIGHT,ALGR_T(KC_SPACE),
SCMD_T(KC_ENTER),ALL_T(KC_PSCREEN),
KC_LEAD,
LSFT_T(KC_E),MT(MOD_LGUI, KC_BSPACE),F(0),
KC_CAPSLOCK,KC_6,KC_7,KC_8,KC_9,KC_0,KC_EXECUTE,
TO(5),TD(TD_SCOLON_COLON),KC_W,KC_D,KC_G,KC_X,KC_EQUAL,
KC_DOT,KC_T,KC_H,KC_S,KC_R,RGUI_T(KC_QUOTE),
TT(3),CTL_T(KC_SLASH),KC_C,KC_F,KC_M,KC_L,KC_RSPC,
ALT_T(KC_BSPACE),KC_DOWN,KC_UP,ALGR_T(KC_GRAVE),RCTL_T(KC_RBRACKET),
MEH_T(KC_APPLICATION),SCMD_T(KC_DELETE),
OSL(2),
F(0),RGUI_T(KC_ENTER),RSFT_T(KC_SPACE)
),
[1] = KEYMAP(
_______,_______,_______,_______,_______,_______,_______,
_______,KC_Q,KC_W,KC_E,KC_R,KC_T,TO(2),
_______,KC_A,KC_S,KC_D,KC_F,KC_G,
_______,KC_Z,KC_X,KC_C,KC_V,RCTL_T(KC_B),_______,
_______,_______,_______,_______,ALGR_T(KC_ENTER),
_______,_______,
_______,
LSFT_T(KC_SPACE),_______,_______,
_______,_______,_______,_______,_______,_______,KC_EQUAL,
TO(0),KC_Y,KC_U,KC_I,KC_O,KC_P,KC_MINUS,
KC_H,KC_J,KC_K,KC_L,TD(TD_SCOLON_COLON),_______,
_______,CTL_T(KC_N),KC_M,TD(TD_COMMA_DOT),KC_DOT,KC_SLASH,_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______
),
[2] = KEYMAP(
_______,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,_______,
_______,KC_HASH,KC_EXLM,KC_LCBR,KC_RCBR,KC_TILD,TO(3),
OSM(MOD_LGUI),KC_AT,KC_DLR,KC_LPRN,KC_RPRN,KC_CIRC,
OSM(MOD_LSFT),KC_AMPR,KC_PERC,KC_LBRACKET,KC_RBRACKET,RCTL_T(KC_NONUS_BSLASH),_______,
OSM(MOD_LCTL),OSM(MOD_LALT),KC_LABK,KC_RABK,ALGR_T(KC_NONUS_HASH),
_______,_______,
_______,
OSM(MOD_LSFT),_______,_______,
KC_NUMLOCK,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,
TO(1),KC_KP_EQUAL,KC_KP_7,KC_KP_8,KC_KP_9,KC_KP_ASTERISK,KC_F12,
KC_KP_COMMA,KC_KP_4,KC_KP_5,KC_KP_6,KC_KP_SLASH,OSM(MOD_RGUI),
_______,CTL_T(KC_CALCULATOR),KC_KP_1,KC_KP_2,KC_KP_3,KC_KP_PLUS,OSM(MOD_RSFT),
ALT_T(KC_KP_0),KC_DOT,KC_KP_ENTER,KC_KP_MINUS,OSM(MOD_RCTL),
_______,_______,
_______,
_______,_______,_______
),
[3] = KEYMAP(
_______,KC_HELP,KC_SYSTEM_WAKE,KC_SYSTEM_SLEEP,KC_SYSTEM_POWER,KC_LAUNCH5,_______,
KC_MEDIA_STOP,KC_FILEMANAGER,KC_TOOLS,KC_APPLICATION,KC_MAIL,KC_MS_ACCEL0,TO(4),
GUI_T(KC_MEDIA_PLAY_PAUSE),KC_LEFT,KC_UP,KC_DOWN,KC_RIGHT,KC_MS_ACCEL1,
SFT_T(KC_MEDIA_PREV_TRACK),KC_MEDIA_NEXT_TRACK,KC_COPY,KC_CUT,KC_PASTE,KC_MS_ACCEL2,_______,
CTL_T(KC_MEDIA_REWIND),ALT_T(KC_MEDIA_FAST_FORWARD),KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,ALGR_T(KC_AUDIO_MUTE),
SCMD_T(KC_WWW_REFRESH),LCTL(KC_W),
_______,
KC_MS_BTN2,GUI_T(KC_WWW_FORWARD),_______,
RESET,KC_LAUNCH6,KC_LAUNCH7,KC_LAUNCH8,KC_LAUNCH9,_______,KC_MS_BTN4,
TO(2),KC_MS_BTN3,(KC_MS_WH_UP | KC_MS_WH_LEFT),KC_MS_BTN1,KC_MS_BTN2,(KC_MS_WH_UP | KC_MS_WH_RIGHT),KC_MS_BTN5,
KC_MS_WH_UP,KC_MS_LEFT,KC_MS_DOWN,KC_MS_UP,KC_MS_RIGHT,_______,
_______,KC_MS_WH_DOWN,(KC_MS_DOWN | KC_MS_RIGHT),KC_MS_WH_LEFT,KC_MS_WH_RIGHT,(KC_MS_WH_DOWN | KC_MS_WH_RIGHT),_______,
ALT_T(KC_HOME),KC_PGDOWN,KC_PGUP,ALGR_T(KC_END),_______,
MEH_T(KC_WWW_FAVORITES),SCMD_T(KC_WWW_SEARCH),
KC_WWW_HOME,
_______,RGUI_T(KC_WWW_BACK),KC_MS_BTN1
),
[4] = KEYMAP(
_______,KC_LANG1,KC_LANG2,KC_LANG3,KC_LANG4,_______,_______,
_______,_______,KC_INT2,_______,KC_INT4,KC_INT5,TO(5),
_______,KC_CANCEL,KC_REDO,KC_UNDO,KC_FIND,KC_PAUSE,
_______,KC_LOCKING_CAPS,KC_LOCKING_NUM,KC_LOCKING_SCROLL,_______,M(1),_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______,
_______,KC_TOUCHPAD_ON,KC_TOUCHPAD_OFF,KC_TOUCHPAD_TOGGLE,KC_MENU,KC_SELECT,_______,
TO(3),_______,_______,KC_FN2,KC_FN3,KC_FN4,_______,
_______,_______,F(2),F(3),F(4),_______,
_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,
_______,_______,
_______,
_______,_______,_______
),
[5] = KEYMAP(
_______,_______,_______,_______,_______,_______,_______,
_______,KC_Z,KC_F,KC_X,KC_SPACE,KC_T,TO(0),
OSM(MOD_LALT),KC_A,KC_W,KC_S,KC_D,KC_R,
_______,KC_Q,KC_E,KC_C,KC_LCTL,KC_M,TO(3),
_______,_______,_______,_______,KC_G,
_______,_______,
_______,
OSM(MOD_LSFT),KC_SPACE,KC_BSPACE,
_______,_______,_______,_______,_______,_______,KC_EQUAL,
TO(4),KC_Y,KC_U,KC_I,KC_O,KC_P,KC_MINUS,
KC_H,KC_J,KC_I,KC_K,KC_L,_______,
TO(2),CTL_T(KC_N),KC_B,TD(TD_COMMA_DOT),KC_DOT,KC_SLASH,_______,
KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,
_______,_______,
_______,
_______,_______,_______
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_SWAP_HANDS_TAP_TOGGLE(),
[1] = ACTION_LAYER_TAP_TOGGLE(1)
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
SEND_STRING("QMK is the best thing ever!");
return false;
case 1:
SEND_STRING ("\u00AF\\_(\u30C4)_/\u00AF");
return false;
}
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
//rgblight_mode(1);
}
return false;
break;
}
return true;
}
LEADER_EXTERNS();
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
default:
break;
}
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_P) {
register_code(KC_MEDIA_PLAY_PAUSE);
unregister_code(KC_MEDIA_PLAY_PAUSE);
}
SEQ_ONE_KEY(KC_T) {
register_code(MOD_LGUI);
register_code(KC_F2);
unregister_code(KC_F2);
unregister_code(MOD_LGUI);
}
SEQ_ONE_KEY(KC_F) {
register_code(KC_FILEMANAGER);
unregister_code(KC_FILEMANAGER);
}
SEQ_TWO_KEYS(KC_P, KC_P) {
register_code(KC_MEDIA_NEXT_TRACK);
unregister_code(KC_MEDIA_NEXT_TRACK);
}
}
};
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_COMMA_DOT] = ACTION_TAP_DANCE_DOUBLE(KC_COMMA,KC_DOT),
[TD_SCOLON_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCOLON,KC_COLN),
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment