]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atom47/keymaps/maartenwut/keymap.c
a failed attempt at hot-plugging
[qmk_firmware.git] / keyboards / atom47 / keymaps / maartenwut / keymap.c
1 #include QMK_KEYBOARD_H
2
3 // Each layer gets a name for readability, which is then used in the keymap matrix below.
4 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
5 // Layer names don't all need to be of the same length, obviously, and you can also skip them
6 // entirely and just use numbers.
7
8 #define _MA 0 //Main layer
9 #define _LO 1 //FN1
10 #define _RA 2 //FN
11
12 #define _______ KC_TRNS
13
14 enum custom_keycodes {
15     CTRLZ = SAFE_RANGE,
16     CTRLX,
17     CTRLC,
18     CTRLV
19 };
20
21 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 [_MA] = LAYOUT_ansi(
23   KC_GESC,              KC_Q,           KC_W,           KC_E,           KC_R,           KC_T,           KC_Y,           KC_U,           KC_I,           KC_O,           KC_P,           KC_DEL,         KC_BSPC,        \
24   KC_TAB,               KC_A,           KC_S,           KC_D,           KC_F,           KC_G,           KC_H,           KC_J,           KC_K,           KC_L,           KC_SCLN,                                KC_ENT,         \
25   KC_LSFT,                                      KC_Z,           KC_X,           KC_C,           KC_V,           KC_B,           KC_N,           KC_M,           KC_COMM,        KC_DOT,         KC_SLSH,        KC_RSFT,        \
26   KC_LCTL,              KC_LGUI,        KC_LALT,        MO(_LO),                                KC_SPC,                                 KC_SPC,                                 MO(_RA),        KC_RALT,        KC_APP,         KC_RCTRL),      \
27
28 [_LO] = LAYOUT_ansi(
29   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,         \
30   KC_1,                 KC_2,           KC_3,           KC_4,           KC_5,           KC_6,           KC_7,           KC_8,           KC_9,           KC_0,           KC_MINS,                                KC_EQL,         \
31   _______,                                      CTRLZ,          CTRLX,          CTRLC,          CTRLV,          _______,        _______,        KC_QUOT,        KC_LBRC,        KC_RBRC,        KC_BSLS,        _______,        \
32   _______,              _______,        _______,        _______,                                _______,                                _______,                                _______,        _______,        _______,        RESET), \
33
34 [_RA] = LAYOUT_ansi(
35   _______,              _______,        _______,        _______,        _______,        _______,        _______,        KC_PGUP,        KC_UP,          KC_PGDN,        _______,        _______,        _______,        \
36   KC_CAPS,              _______,        _______,        _______,        _______,        _______,        _______,        KC_LEFT,        KC_DOWN,        KC_RIGHT,       _______,                                _______,        \
37   _______,                                      _______,        _______,        _______,        _______,        _______,        _______,        _______,        KC_VOLD,        KC_VOLU,        KC_MPLY,        KC_PSCR,        \
38   _______,              _______,        _______,        _______,                                _______,                                _______,                                _______,        _______,        _______,        _______),       \
39
40 };
41
42 void led_set_user(uint8_t usb_led) {
43     if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
44         // Turn capslock on
45                 PORTE &= ~(1 << 6);
46     } else {
47         // Turn capslock off
48         PORTE |= (1 << 6);
49     }
50 }
51
52 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
53     if (record->event.pressed) {
54         switch(keycode) {
55             case CTRLZ:
56                 SEND_STRING(SS_LCTRL("z"));
57                 return false;
58             case CTRLX:
59                 SEND_STRING(SS_LCTRL("x"));
60                 return false;
61             case CTRLC:
62                 SEND_STRING(SS_LCTRL("c"));
63                 return false;
64             case CTRLV:
65                 SEND_STRING(SS_LCTRL("v"));
66                 return false;
67         }
68     }
69     return true;
70 };