Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save davidphilipbarr/885a444f5d985d25142fc791fc2364cc to your computer and use it in GitHub Desktop.
Save davidphilipbarr/885a444f5d985d25142fc791fc2364cc to your computer and use it in GitHub Desktop.
#include QMK_KEYBOARD_H
#define _BASE 0
#define _SS 1
#define _ADD 2
#define _XT 3
enum custom_keycodes {
NL_LOAD = SAFE_RANGE,
NL_POKE,
NL_NEW,
NL_GOTO,
NL_PRINT,
NL_NEXT,
NL_PLOT
/*
q PLOT
w DRAW
e REM
r RUN
t RAND
y RETURN
u IF
i INPUT
s SAVE
d DIM
f FOR
g GOSUB
k LIST
l LET
z COPY
x CLEAR
c CONT
v CLS
b BORDER
m PAUSE
*/
};
enum combos {
HJ_CTL,
KL_GUI,
JK_ALT,
AS_TAB,
QW_ESC,
SSBS_CTL,
};
const uint16_t PROGMEM hj_combo[] = {KC_H, KC_J, COMBO_END};
const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END};
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
const uint16_t PROGMEM as_combo[] = {KC_A, KC_S, COMBO_END};
const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM ctl_combo[] = { MO(_SS), KC_SPACE, COMBO_END};
combo_t key_combos[] = {
[HJ_CTL] = COMBO(hj_combo, KC_RCTL),
[KL_GUI] = COMBO(kl_combo, KC_RGUI),
[JK_ALT] = COMBO(jk_combo, KC_LALT ),
[AS_TAB] = COMBO(as_combo, KC_TAB),
[QW_ESC] = COMBO(qw_combo, KC_ESC ),
[SSBS_CTL] = COMBO(ctl_combo, KC_LCTL ),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
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_ENT, \
KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, RCTL_T(KC_M), MO(_SS), KC_SPC \
),
[_SS] = LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_UNDS, \
KC_Q, KC_W, KC_E, KC_LT, KC_GT, KC_LBRC, KC_RBRC, KC_AMPR, KC_SCLN, KC_DQUO, \
KC_TILD, KC_PIPE, KC_NUBS, KC_LCBR, KC_RCBR, KC_H, KC_MINS, KC_PLUS, KC_EQL, KC_ENT, \
MO(_ADD), MO(_XT), KC_DLR, KC_QUES, KC_SLSH, KC_ASTR, KC_COMM, KC_DOT, MO(_SS), KC_SPC \
),
[_ADD] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_BSPC,\
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, \
MO(_ADD), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_SPC \
),
[_XT] = LAYOUT(
KC_F1, KC_2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, NL_POKE, NL_PRINT, \
NL_NEW, KC_S, KC_D, KC_F, NL_GOTO, KC_H, NL_LOAD, KC_K, KC_L, KC_ENT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, NL_NEXT, KC_M, KC_COMM, KC_SPC \
),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case NL_LOAD:
if (record->event.pressed) {
SEND_STRING("LOAD");
}
break;
case NL_POKE:
if (record->event.pressed) {
SEND_STRING("POKE");
}
break;
case NL_NEW:
if (record->event.pressed) {
SEND_STRING("NEW");
}
break;
case NL_GOTO:
if (record->event.pressed) {
SEND_STRING("GOTO");
}
break;
case NL_PRINT:
if (record->event.pressed) {
SEND_STRING("PRINT");
}
break;
case NL_NEXT:
if (record->event.pressed) {
SEND_STRING("NEXT");
}
break;
case NL_PLOT:
if (record->event.pressed) {
SEND_STRING("PLOT");
}
break;
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment