Created
November 3, 2024 15:21
-
-
Save davidphilipbarr/885a444f5d985d25142fc791fc2364cc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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