#!/bin/sh
set -e
set -x
QMK=~/src/qmk_firmware
mkdir -p $QMK/keyboards/ergodone/keymaps/richardc
org2qmk ergodone_richardc.org keymap > $QMK/keyboards/ergodone/keymaps/richardc/keymap.c
(cd $QMK && make ergodone:richardc)
mkdir -p $QMK/keyboards/ergodox_ez/keymaps/richardc
org2qmk ergodone_richardc.org keymap > $QMK/keyboards/ergodox_ez/keymaps/richardc/keymap.c
(cd $QMK && make ergodox_ez:richardc)
#include QMK_KEYBOARD_H
#include "version.h"
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
Left Hand
` | 1 | 2 | 3 | 4 | 5 | noop |
tab | q | w | e | r | t | noop |
escape | a | s | d | f | g | |
shift_l | z | x | c | v | b | noop |
TT(1) | ctrl_l | alt_l | cmd_l | noop | ||
noop | noop | |||||
noop | ||||||
space | enter | delete |
Right Hand
- | 6 | 7 | 8 | 9 | 0 | backspace |
= | y | u | i | o | p | enter |
h | j | k | l | ; | \ | |
noop | n | m | , | . | / | shift_r |
TT(1) | [ | ] | ’ | ctrl_l | ||
home | end | |||||
pgup | ||||||
pgdn | enter | space |
Left Hand
”” | ”” | ”” | ”” | ”” | ”” | ”” |
”” | ”” | ”” | ”” | ”” | ”” | ”” |
”” | ”” | ”” | ”” | ”” | ”” | |
”” | ”” | ”” | ”” | ”” | ”” | ”” |
”” | ”” | ”” | ”” | ”” | ||
”” | ”” | |||||
”” | ||||||
”” | ”” | ”” |
Right Hand
”” | ”” | ”” | ”” | ”” | ”” | EPRM |
”” | ”” | ”” | ”” | ”” | ”” | ”” |
left | down | up | right | ”” | ”” | |
”” | ”” | ”” | ”” | ”” | ”” | ”” |
”” | ”” | ”” | ”” | ”” | ||
”” | ”” | |||||
”” | ||||||
”” | ”” | ”” |
process_record_user
lets you wire up custom keycodes. Default
enables EPRM
, VRSN
, and RGB_SLD
keys.
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) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
matrix_init_user
happens when the key matrix is setup, nothing
special here by default.
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
matrix_scan_user
is used to light the indicator leds to indicate
layer you’re in.
// Runs constantly in the background, in a loop.
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) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};