]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/clueboard/keymaps/serubin/keymap.c
Added an additional clueboard layout. (#1252)
[qmk_firmware.git] / keyboards / clueboard / keymaps / serubin / keymap.c
1 #include "clueboard.h"
2
3 // Helpful defines
4 #define GRAVE_MODS  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5 #define _______ KC_TRNS
6
7 // Each layer gets a name for readability, which is then used in the keymap matrix below.
8 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
9 // Layer names don't all need to be of the same length, obviously, and you can also skip them
10 // entirely and just use numbers.
11 #define _BL 0
12 #define _FL 1
13 #define _ME 2
14 #define _CL 3
15
16 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17   /* Keymap _BL: Base Layer (Default Layer)
18    */
19 [_BL] = KEYMAP(
20   KC_GRV,    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_GRV,  KC_BSPC,          KC_PGUP, \
21   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,                   KC_PGDN, \
22   F(1), KC_A,    KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN,  KC_QUOT,  KC_NUHS,  KC_ENT,                             \
23   KC_LSFT, KC_NUBS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,   KC_SLSH,  KC_RO,    KC_RSFT,          KC_UP,            \
24   KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN,          KC_SPC,KC_SPC,                        KC_HENK,  KC_RGUI,  MO(_FL),  MO(_ME), KC_LEFT, KC_DOWN, KC_RGHT),
25
26   /* Keymap _FL: Function Layer
27    */
28 [_FL] = KEYMAP(
29   KC_ESC,     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_DEL,           KC_HOME, \
30   _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS,  _______,  _______,  KC_PSCR,                KC_END,  \
31   _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                           \
32   _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,          KC_PGUP,         \
33   _______, _______, _______, _______,        _______,_______,                        _______,  _______,  MO(_FL),  MO(_ME), KC_HOME, KC_PGDN, KC_END),
34
35 /* Keymap _FL: Function Layer
36    */
37 [_ME] = KEYMAP(
38   _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______, _______,  _______,  KC_MUTE,          KC_VOLU, \
39   _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS,  _______,  _______,  _______,                   KC_VOLD, \
40   _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                           \
41   _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______, _______ ,  _______,          _______,         \
42   _______, _______, _______, _______,        _______,_______,                        _______,  _______,  MO(_FL),  MO(_ME), KC_MPRV, KC_MPLY, KC_MNXT),
43
44
45   /* Keymap _CL: Control layer
46    */
47 [_CL] = KEYMAP(
48   _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______, RGB_TOG,             RGB_VAI, \
49   _______, _______, _______,_______,RESET,  _______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                   RGB_VAD, \
50   _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                         \
51   MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  MO(_FL),  _______,          RGB_SAI,          \
52   _______, _______, _______,_______,        RGB_MOD,   RGB_MOD,                            _______,  _______,  _______,  _______, RGB_HUD,    RGB_SAD,    RGB_HUI),
53 };
54
55 /* This is a list of user defined functions. F(N) corresponds to item N
56    of this list.
57  */
58 const uint16_t PROGMEM fn_actions[] = {
59   [0] = ACTION_FUNCTION(0),  // Calls action_function()
60   [1] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
61 };
62
63 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
64   static uint8_t mods_pressed;
65   static bool mod_flag;
66
67   switch (id) {
68     case 0:
69       /* Handle the combined Grave/Esc key
70        */
71       mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
72
73       if (record->event.pressed) {
74         /* The key is being pressed.
75          */
76         if (mods_pressed) {
77           mod_flag = true;
78           add_key(KC_GRV);
79           send_keyboard_report();
80         } else {
81           add_key(KC_ESC);
82           send_keyboard_report();
83         }
84       } else {
85         /* The key is being released.
86          */
87         if (mod_flag) {
88           mod_flag = false;
89           del_key(KC_GRV);
90           send_keyboard_report();
91         } else {
92           del_key(KC_ESC);
93           send_keyboard_report();
94         }
95       }
96       break;
97     case 1:
98       if(record->event.pressed) {
99         del_key(KC_ESC);
100       }
101     break;
102   }
103 }