Skip to content

Instantly share code, notes, and snippets.

@gwash
Last active May 21, 2018 09:48
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/3a381acf4f45474e97f68f899cc20cb7 to your computer and use it in GitHub Desktop.
Save gwash/3a381acf4f45474e97f68f899cc20cb7 to your computer and use it in GitHub Desktop.
#include "gwash.h"
#include "mousekey.h"
const uint16_t PROGMEM fn_actions[] = {
[FN_SWP_HNDS] = ACTION_SWAP_HANDS_TAP_TOGGLE(),
[1] = ACTION_LAYER_TAP_TOGGLE(1)
};
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_SCOLON_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCOLON,KC_COLN),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case KC_MS_NE:
if (record->event.pressed) {
mousekey_on(KC_MS_N);
mousekey_on(KC_MS_E);
} else {
mousekey_off(KC_MS_N);
mousekey_off(KC_MS_E);
}
return false;
break;
case KC_MS_SE:
if (record->event.pressed) {
mousekey_on(KC_MS_S);
mousekey_on(KC_MS_E);
} else {
mousekey_off(KC_MS_S);
mousekey_off(KC_MS_E);
}
return false;
break;
case KC_MS_SW:
if (record->event.pressed) {
mousekey_on(KC_MS_S);
mousekey_on(KC_MS_W);
} else {
mousekey_off(KC_MS_S);
mousekey_off(KC_MS_W);
}
return false;
break;
case KC_MS_NW:
if (record->event.pressed) {
mousekey_on(KC_MS_N);
mousekey_on(KC_MS_W);
} else {
mousekey_off(KC_MS_N);
mousekey_off(KC_MS_W);
}
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);
led_black();
switch (layer) {
case QWERTY:
led_white();
break;
case NUMERIC:
led_red();
break;
case FUNCTION:
led_green();
break;
case NAVIGATION:
led_blue();
break;
case 5:
led_yellow();
break;
case 6:
led_magenta();
break;
case 7:
led_cyan();
break;
default:
break;
}
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_B) {
set_single_persistent_default_layer(BASE);
}
SEQ_ONE_KEY(KC_C) {
register_code(KC_CALC);
unregister_code(KC_CALC);
}
SEQ_ONE_KEY(KC_E) {
register_code(KC_EXECUTE);
unregister_code(KC_EXECUTE);
}
SEQ_ONE_KEY(KC_F) {
register_code(KC_FILEMANAGER);
unregister_code(KC_FILEMANAGER);
}
SEQ_ONE_KEY(KC_P) {
register_code(KC_MEDIA_PLAY_PAUSE);
unregister_code(KC_MEDIA_PLAY_PAUSE);
}
SEQ_TWO_KEYS(KC_P, KC_P) {
register_code(KC_MEDIA_NEXT_TRACK);
unregister_code(KC_MEDIA_NEXT_TRACK);
}
SEQ_ONE_KEY(KC_T) {
register_code(MOD_LGUI);
register_code(KC_O);
unregister_code(KC_O);
unregister_code(MOD_LGUI);
register_code(KC_T);
unregister_code(KC_T);
}
SEQ_ONE_KEY(KC_Q) {
set_single_persistent_default_layer(QWERTY);
}
}
};
/*TODO
* layers: tab for one shot, double tab to toggle, hold to toggle
* modifiers: tab kc, double tab to toggle, hold to toggle
* diagonal mouse keys
* forking layer stack
* */
#ifndef USERSPACE
#define USERSPACE
#include QMK_KEYBOARD_H
#include "quantum.h"
#undef TAPPING_TERM
#undef TAPPING_TOGGLE
#undef LEADER_TIMEOUT
#undef NO_DEBUG
#undef NO_PRINT
#define NO_DEBUG
#define NO_PRINT
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
//#define DEBUG_MATRIX_SCAN_RATE
//#define NO_AUTO_SHIFT_ALPHA
//#define NO_AUTO_SHIFT_NUMERIC
//#define AUTO_SHIFT_TIMEOUT 110
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
#define TAPPING_TOGGLE 1
#define TAPPING_TERM 180
#define LEADER_TIMEOUT 2000
//#define LONGPRESS_DELAY 150
//#define LAYER_TOGGLE_DELAY 50
//x11 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
//directional mouse codes
#define KC_MS_N KC_MS_UP
#define KC_MS_E KC_MS_RIGHT
#define KC_MS_S KC_MS_DOWN
#define KC_MS_W KC_MS_LEFT
//#define KC_MS_NE (KC_MS_N | KC_MS_E)
//#define KC_MS_SE (KC_MS_S | KC_MS_E)
//#define KC_MS_SW (KC_MS_S | KC_MS_W)
//#define KC_MS_NW (KC_MS_N | KC_MS_W)
enum layers {
BASE = 0,
QWERTY,
NUMERIC,
FUNCTION,
NAVIGATION,
};
enum keycodes {
PLACEHOLDER = SAFE_RANGE,
EPRM,
VRSN,
RGB_SLD,
KC_MS_NE,
KC_MS_SE,
KC_MS_SW,
KC_MS_NW,
};
enum acts_fn {
FN_SWP_HNDS = 0,
};
enum acts_td {
TD_COMMA_DOT = 0,
TD_SCOLON_COLON,
};
void led_black(void);
void led_red(void);
void led_green(void);
void led_blue(void);
void led_yellow(void);
void led_magenta(void);
void led_cyan(void);
void led_white(void);
#endif
#include "mitosis.h"
#include "gwash.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: BASE
*
* ,---------------------------------------. ,---------------------------------------.
* | Q | P | U | J | Z | | ; | W | D | G | X |
* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
* | A | N | I | O | , | | . | T | H | S | R |
* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
* | Y/Ctl | V/Alt | K | B | ' | | / | C | F | M/AlGr| L/Ctl |
* `-------+=======+=======+=======+=======' '=======+=======+=======+=======+-------'
* | Left | Right |Esc/Ctl| -/GUI | |Ins/GUI|Ent/Ctl| Down | Up |
* |-------+-------+-------+-------| |-------+-------+-------+-------|
* | SwpHnd| \/Alt | Tab/L2| E/Shft| |Sp/Shft| BSp/L3| `/AlGr| SwpHnd|
* `-------------------------------' `-------------------------------'
*/
[BASE] = {
{ KC_Q, KC_P, KC_U, KC_J, KC_Z, KC_SCLN,KC_W, KC_D, KC_G, KC_X },
{ KC_A, KC_N, KC_I, KC_O, KC_COMMA, KC_DOT, KC_T, KC_H, KC_S, KC_R },
{ CTL_T(KC_Y),ALT_T(KC_V),KC_K,KC_B,KC_QUOT, KC_SLASH,KC_C,KC_F,ALGR_T(KC_M),RCTL_T(KC_L)},
{ XXXXXXX,KC_LEFT,KC_RGHT,CTL_T(KC_ESC), LGUI_T(KC_MINS),RGUI_T(KC_INSERT),RCTL_T(KC_ENT),KC_DOWN,KC_UP,XXXXXXX },
{ XXXXXXX,F(FN_SWP_HNDS),ALT_T(KC_BSLS),LT(NUMERIC,KC_TAB),LSFT_T(KC_E),
RSFT_T(KC_SPC),LT(FUNCTION,KC_BSPC),ALGR_T(KC_GRV),F(FN_SWP_HNDS),XXXXXXX }
},
[QWERTY] = {
{ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P },
{ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN },
{ CTL_T(KC_Z),ALT_T(KC_X),KC_C,KC_V,KC_B, KC_N, KC_M, KC_COMM,ALGR_T(KC_DOT),RCTL_T(KC_SLSH) },
{ XXXXXXX,_______,_______,_______,_______, _______,_______,_______,_______,XXXXXXX },
{ XXXXXXX,_______,_______,_______,LSFT_T(KC_SPC), _______,_______,_______,_______,XXXXXXX }
},
[NUMERIC] = {
{ KC_ESC, KC_LBRC,KC_LPRN,KC_PPLS,KC_PSLS, KC_PAST,KC_PMNS,KC_RPRN,KC_RBRC,KC_NLCK },
{ KC_0, KC_1, KC_2, KC_3, KC_4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9 },
{ CTL_T(KC_5),ALT_T(KC_6),KC_7,KC_8,KC_9, KC_P0, KC_P1, KC_P2, ALGR_T(KC_P3),RCTL_T(KC_P4) },
{ XXXXXXX,KC_END, KC_HOME,CTL_T(KC_DELT),LGUI_T(KC_EQL), RGUI_T(KC_PDOT),RCTL_T(KC_PENT),KC_PGDN,KC_PGUP,XXXXXXX },
{ XXXXXXX,_______,_______,XXXXXXX,LSFT_T(KC_CALC), _______,_______,_______,_______,XXXXXXX }
},
[FUNCTION] = {
{ KC_SLCK,KC_VOLU,KC_MUTE,KC_VOLD,_______, _______,KC_MPRV,KC_MPLY,KC_MNXT,KC_CAPS },
{ KC_F10, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9 },
{ CTL_T(KC_F11),ALT_T(KC_F12),_______,_______,_______, _______,_______,_______,KC_SLEP,KC_PWR },
{ XXXXXXX,_______,_______,_______,KC_LEAD, KC_APP, _______,_______,_______,XXXXXXX },
{ XXXXXXX,_______,_______,TT(NAVIGATION),LSFT_T(KC_EXEC), RESET,XXXXXXX,ALGR_T(KC_PSCR),_______,XXXXXXX }
},
[NAVIGATION] = {
{ _______,_______,_______,_______,KC_ACL0, KC_BTN3,KC_MS_NW,KC_BTN1,KC_BTN2,KC_MS_NE },
{ KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_ACL1, KC_WH_U,KC_MS_W,KC_MS_S,KC_MS_N,KC_MS_E },
{ _______,_______,_______,_______,KC_ACL2, KC_WH_D,KC_MS_SW,KC_WH_L,KC_WH_R,KC_MS_SE },
{ XXXXXXX,KC_BTN4,KC_BTN5,_______,_______, _______,_______,_______,_______,XXXXXXX },
{ XXXXXXX,_______,_______,TT(NAVIGATION),LSFT_T(KC_SPC), _______,_______,_______,_______,XXXXXXX }
},
};
void led_black (void) {
set_led_off;
}
void led_red (void) {
set_led_red;
}
void led_green (void) {
set_led_green;
}
void led_blue (void) {
set_led_blue;
}
void led_yellow (void) {
set_led_yellow;
}
void led_magenta (void) {
set_led_magenta;
}
void led_cyan (void) {
set_led_cyan;
}
void led_white (void) {
set_led_white;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment