]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/acr60/keymaps/default/keymap.c
a failed attempt at hot-plugging
[qmk_firmware.git] / keyboards / acr60 / keymaps / default / keymap.c
1 #include "acr60.h"
2
3 #define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
4
5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6
7 /*
8  * Default keymap with standard 60% layout. Split space possible but entirely optional with this layout, as this
9  * layout covers all three split space keys as space keycodes. This also has alt right next to the space bar
10  * on both sides (Windows keyboard layout), no right-side system/GUI key, and momentary layer switching on
11  * the right modifiers into the 3rd (macro) and 2nd (function/sfx) layers, respectively. This also has the grave
12  * accent key set up on the 2nd layer, although on the first layer it includes grave key (tilde) when shift is held down,
13  * via the function actions code at the bottom.
14  */
15         KEYMAP(
16                 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
17                 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
18                 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
19                 KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO,
20                 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_NO, MO(1), KC_RCTL),
21
22         KEYMAP(
23                 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
24                 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
25                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
26                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
27                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
28
29         KEYMAP(
30                 KC_TRNS, M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), M(12), KC_TRNS, KC_TRNS,
31                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
35 };
36
37 enum function_id {
38     SHIFT_ESC,
39 };
40
41 const uint16_t PROGMEM fn_actions[] = {
42   [0]  = ACTION_FUNCTION(SHIFT_ESC),
43 };
44
45 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
46   static uint8_t shift_esc_shift_mask;
47   switch (id) {
48     case SHIFT_ESC:
49       shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
50       if (record->event.pressed) {
51         if (shift_esc_shift_mask) {
52           add_key(KC_GRV);
53           send_keyboard_report();
54         } else {
55           add_key(KC_ESC);
56           send_keyboard_report();
57         }
58       } else {
59         if (shift_esc_shift_mask) {
60           del_key(KC_GRV);
61           send_keyboard_report();
62         } else {
63           del_key(KC_ESC);
64           send_keyboard_report();
65         }
66       }
67       break;
68   }
69 }