aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/robot_test_layout/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/robot_test_layout/keymap.c')
-rw-r--r--layouts/community/ergodox/robot_test_layout/keymap.c151
1 files changed, 151 insertions, 0 deletions
diff --git a/layouts/community/ergodox/robot_test_layout/keymap.c b/layouts/community/ergodox/robot_test_layout/keymap.c
new file mode 100644
index 000000000..5d672deeb
--- /dev/null
+++ b/layouts/community/ergodox/robot_test_layout/keymap.c
@@ -0,0 +1,151 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6enum custom_keycodes {
7 PLACEHOLDER = SAFE_RANGE, // can always be here
8 RGB_FF0000,
9 RGB_00FF00,
10 RGB_0000FF,
11 RGB_FFFFFF,
12 RGB_TOGGLE,
13 LED1,
14 LED2,
15 LED3
16};
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20[0] = LAYOUT_ergodox(
21 RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN,
22 KC_GRAVE, KC_A, KC_B, KC_C, KC_D, KC_E, KC_EXLM,
23 KC_HASH, KC_J, KC_K, KC_L, KC_M, KC_N,
24 KC_AMPR, KC_T, KC_U, KC_V, KC_W, KC_X, KC_DLR,
25 KC_PIPE, KC_R, KC_PLUS, KC_LCBR, KC_RCBR,
26
27 KC_F, KC_G,
28 KC_H,
29 KC_P, KC_O, KC_I,
30
31
32
33 // RIGHT HAND
34 KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
35 KC_AT, KC_F, KC_G, KC_H, KC_I, KC_COLN, KC_BSLS,
36 KC_O, KC_P, KC_Q, KC_R, KC_S, KC_QUOT,
37 LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR,
38 KC_A, KC_B, KC_C, KC_D, KC_PIPE,
39
40 LED1, KC_E,
41 LED2,
42 LED3, KC_J, KC_K
43 )
44};
45
46
47
48const uint16_t PROGMEM fn_actions[] = {
49 [1] = ACTION_LAYER_TAP_TOGGLE(1)
50};
51
52const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
53{
54 switch(id) {
55 case 0:
56 if (record->event.pressed) {
57 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
58 }
59 break;
60 }
61 return MACRO_NONE;
62};
63
64bool status_led1_on = false, status_led2_on = false, status_led3_on = false;
65bool process_record_user(uint16_t keycode, keyrecord_t *record) {
66 switch (keycode) {
67 // dynamically generate these.
68 case RGB_FF0000:
69 if (record->event.pressed) {
70 #ifdef RGBLIGHT_ENABLE
71 EZ_RGB(0xff0000UL);
72 register_code(KC_1); unregister_code(KC_1);
73 #endif
74 }
75 return false;
76 break;
77 case RGB_00FF00:
78 if (record->event.pressed) {
79 #ifdef RGBLIGHT_ENABLE
80 EZ_RGB(0x00ff00UL);
81 register_code(KC_2); unregister_code(KC_2);
82 #endif
83 }
84 return false;
85 break;
86 case RGB_0000FF:
87 if (record->event.pressed) {
88 #ifdef RGBLIGHT_ENABLE
89 EZ_RGB(0x0000ffUL);
90 register_code(KC_3); unregister_code(KC_3);
91 #endif
92 }
93 return false;
94 break;
95 case RGB_FFFFFF:
96 if (record->event.pressed) {
97 #ifdef RGBLIGHT_ENABLE
98 EZ_RGB(0xffffffUL);
99 register_code(KC_4); unregister_code(KC_4);
100 #endif
101 }
102 return false;
103 break;
104 case RGB_TOGGLE:
105 if (record->event.pressed) {
106 #ifdef RGBLIGHT_ENABLE
107 rgblight_toggle();
108 register_code(KC_EQL); unregister_code(KC_EQL);
109 #endif
110 }
111 return false;
112 break;
113 case LED1:
114 if (record->event.pressed) {
115 if(status_led1_on) {
116 ergodox_right_led_1_off();
117 status_led1_on = false;
118 } else {
119 ergodox_right_led_1_on();
120 status_led1_on = true;
121 }
122 }
123 return false;
124 break;
125 case LED2:
126 if (record->event.pressed) {
127 if(status_led2_on) {
128 ergodox_right_led_2_off();
129 status_led2_on = false;
130 } else {
131 ergodox_right_led_2_on();
132 status_led2_on = true;
133 }
134 }
135 return false;
136 break;
137 case LED3:
138 if (record->event.pressed) {
139 if(status_led3_on) {
140 ergodox_right_led_3_off();
141 status_led3_on = false;
142 } else {
143 ergodox_right_led_3_on();
144 status_led3_on = true;
145 }
146 }
147 return false;
148 break;
149 }
150 return true;
151}