]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/keebio/iris/keymaps/nstickney/keymap.c
[Keymap] nstickney's layout for iris (#5045)
[qmk_firmware.git] / keyboards / keebio / iris / keymaps / nstickney / keymap.c
1 #include QMK_KEYBOARD_H
2
3 extern keymap_config_t keymap_config;
4
5 // Layers
6 #define BASE 0 // Base layer
7 #define SYMB 1 // Symbols
8 #define SYSH 2 // Symbols, shifted
9 #define NUMP 4 // Numpad
10 #define FCTN 8 // Functions
11
12 // Tap Dancing
13 void dance_lock (qk_tap_dance_state_t *state, void *user_data) {
14         switch (state->count){
15                 case 1: // Press once for LGUI
16                         tap_code(KC_LGUI);
17                         break;
18                 case 2: // Press twice for NUMLOCK
19                         tap_code(KC_NLCK);
20                         break;
21                 case 3: // Press thrice for CAPSLOCK
22                         tap_code(KC_CAPS);
23                         break;
24                 case 4: // Press four times for SCROLLOCK
25                         tap_code(KC_SLCK);
26                         break;
27                 default:
28                         break;
29         }
30 };
31
32 void dance_layer (qk_tap_dance_state_t *state, void *user_data) {
33         switch (state -> count) {
34                 case 1: // Press once for MENU
35                         tap_code(KC_APP);
36                         break;
37                 case 2: // Press twice for NUMPAD
38                         layer_invert(NUMP);
39                         break;
40                 case 3: // Press thrice for SYMBOLS
41                         layer_invert(SYMB);
42                         break;
43                 case 4: // Press four times for SYMBOLS, SHIFTED
44                         layer_invert(SYSH);
45                         break;
46                 default:
47                         break;
48         }
49 };
50
51 enum tap_dances {LOCKS = 0, LAYERS = 1};
52 qk_tap_dance_action_t tap_dance_actions[] = {
53         [LOCKS] = ACTION_TAP_DANCE_FN(dance_lock),
54         [LAYERS] = ACTION_TAP_DANCE_FN(dance_layer)
55 };
56
57 // Make layering more clear
58 #define CC_ESC LCTL_T(KC_ESC)
59 #define CC_QUOT RCTL_T(KC_QUOT)
60 #define AC_SLSH LALT_T(KC_SLSH)
61 #define AC_EQL RALT_T(KC_EQL)
62 #define FC_BSLS LT(FCTN, KC_BSLS)
63 #define FC_MINS LT(FCTN, KC_MINS)
64
65 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
66
67         [BASE] = LAYOUT(
68 // ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐                              ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
69         KC_GRV,    KC_1,      KC_2,      KC_3,      KC_4,      KC_5,                                     KC_6,      KC_7,      KC_8,      KC_9,      KC_0,      KC_BSPC,
70 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
71         KC_TAB,    KC_Q,      KC_W,      KC_E,      KC_R,      KC_T,                                     KC_Y,      KC_U,      KC_I,      KC_O,      KC_P,      KC_DEL,
72 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
73         CC_ESC,    KC_A,      KC_S,      KC_D,      KC_F,      KC_G,                                     KC_H,      KC_J,      KC_K,      KC_L,      KC_SCLN,   CC_QUOT,
74 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐        ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
75         KC_LSPO,   KC_Z,      KC_X,      KC_C,      KC_V,      KC_B,      TD(LOCKS),          TD(LAYERS),KC_N,      KC_M,      KC_COMM,   KC_DOT,    KC_SLSH,   KC_RSPC,
76 // └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘        └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘
77                                                          AC_SLSH,   FC_BSLS,   KC_SPC,                        KC_ENT,    FC_MINS,   AC_EQL
78 //                                                  └──────────┴──────────┴──────────┘                   └──────────┴──────────┴──────────┘
79         ),
80
81         [SYMB] = LAYOUT(
82 // ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐                              ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
83         UC(0x00EF),UC(0x00A1),UC(0x00B2),UC(0x00B3),UC(0x00A4),UC(0x20AC),                               UC(0x00BC),UC(0x00BD),UC(0x00BE),UC(0x2018),UC(0x2019),_______,  
84 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
85         _______,   UC(0x00E4),UC(0x00E5),UC(0x00E9),UC(0x00AE),UC(0x00FE),                               UC(0x00FC),UC(0x00FA),UC(0x00ED),UC(0x00F3),UC(0x00F6),_______,  
86 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
87         _______,   UC(0x00E1),UC(0x00DF),UC(0x00F0),UC(0x00EC),UC(0x00ED),                               UC(0x00EE),UC(0x00E0),UC(0x00E2),UC(0x00F8),UC(0x00B6),UC(0x00B4),
88 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐        ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
89         _______,   UC(0x00E6),UC(0x00E8),UC(0x00A9),UC(0x00EA),UC(0x00EB),_______,            _______,   UC(0x00F1),UC(0x00FD),UC(0x00E7),UC(0x00F4),UC(0x00BF),_______,  
90 // └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘        └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘
91                                               UC(0x00BF),UC(0x00AC),_______,                       _______,   UC(0x00B1),UC(0x00D7)
92 //                                       └──────────┴──────────┴──────────┘                   └──────────┴──────────┴──────────┘
93         ),
94
95         [SYSH] = LAYOUT(
96 // ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐                              ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
97         UC(0x00CF),UC(0x00B9),UC(0x2200),UC(0x2201),UC(0x00A3),UC(0x00A5),                               UC(0x00B5),UC(0x00AB),UC(0x00BB),UC(0x201C),UC(0x201D),_______,  
98 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
99         _______,   UC(0x00C4),UC(0x00C5),UC(0x00C9),UC(0x2122),UC(0x00DE),                               UC(0x00DC),UC(0x00DA),UC(0x00CD),UC(0x00D3),UC(0x00D6),_______,  
100 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
101         _______,   UC(0x00C1),UC(0x00A7),UC(0x00D0),UC(0x00CC),UC(0x00CD),                               UC(0x00CE),UC(0x00C1),UC(0x00C2),UC(0x00D8),UC(0x00B0),UC(0x00A8),
102 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐        ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
103         _______,   UC(0x00C6),UC(0x00C8),UC(0x00A2),UC(0x00CA),UC(0x00CB),_______,            _______,   UC(0x00D1),UC(0x00DD),UC(0x00C7),UC(0x00D4),UC(0x203D),_______,  
104 // └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘        └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘
105                                                                                   UC(0x203D),UC(0x00A6),_______,                       _______,   UC(0x00AA),UC(0x00F7)
106 //                                       └──────────┴──────────┴──────────┘                   └──────────┴──────────┴──────────┘
107         ),
108
109         [NUMP] = LAYOUT(
110 // ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐                              ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
111         _______,   _______,   KC_P7,     KC_P8,     KC_P9,     KC_PSLS,                                  _______,   KC_P7,     KC_P8,     KC_P9,     KC_PSLS,   _______,  
112 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
113         _______,   _______,   KC_P4,     KC_P5,     KC_P6,     KC_PAST,                                  _______,   KC_P4,     KC_P5,     KC_P6,     KC_PAST,   _______,  
114 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
115         _______,   _______,   KC_P1,     KC_P2,     KC_P3,     KC_PMNS,                                  _______,   KC_P1,     KC_P2,     KC_P3,     KC_PMNS,   _______,  
116 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐        ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
117         _______,   _______,   KC_P0,     KC_PCMM,   KC_PDOT,   KC_PPLS,   _______,            _______,   _______,   KC_P0,     KC_PCMM,   KC_PDOT,   KC_PPLS,   _______,  
118 // └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘        └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘
119                                                                                   _______,   _______,   _______,                       KC_PENT,   _______,   _______
120 //                                       └──────────┴──────────┴──────────┘                   └──────────┴──────────┴──────────┘
121         ),
122
123         [FCTN] = LAYOUT(
124 // ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐                              ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
125         KC_ESC,    KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,                                    KC_F6,     KC_F7,     KC_F8,     KC_F9,     KC_F10,    KC_SYSREQ,
126 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
127         KC_PSCR,   UC_MOD,    KC_HOME,   KC_UP,     KC_END,    KC_PGUP,                                  UC(0x2014),KC_LBRC,   KC_RBRC,   S(KC_LBRC),S(KC_RBRC),KC_INS,
128 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤                              ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
129         KC_PAUS,   RGB_TOG,   KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_PGDN,                                  KC_LEFT,   KC_DOWN,   KC_UP,     KC_RGHT,   KC_BRIU,   KC_CLR,
130 // ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐        ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
131         _______,   KC_MPRV,   KC_MRWD,   KC_MPLY,   KC_MFFD,   KC_MNXT,   KC_F11,             KC_F12,    KC_MSTP,   KC_MUTE,   KC_VOLD,   KC_VOLU,   KC_BRID,   _______,  
132 // └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘        └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘
133                                                                                   _______,   _______,   _______,                       _______,   _______,   _______
134 //                                       └──────────┴──────────┴──────────┘                   └──────────┴──────────┴──────────┘
135         )
136 };
137
138 // Initialize rgblight
139 void keyboard_post_init_user(void) {
140         rgblight_enable_noeeprom();
141         for (int i = 360; i > 0; i--) {
142                 rgblight_sethsv_noeeprom(i, 255, 255);
143         }
144         layer_state_set_user(layer_state);
145 };
146
147 // Turn on RGB underglow according to active layer
148 uint32_t layer_state_set_user(uint32_t state) {
149         switch (biton32(state)) {
150                 case FCTN:
151                         rgblight_sethsv_noeeprom(136, 255, 255);
152                         break;
153                 case NUMP:
154                         rgblight_sethsv_noeeprom(228, 255, 255);
155                         break;
156                 case SYMB:
157                 case SYSH:
158                         rgblight_sethsv_noeeprom(320, 255, 255);
159                         break;
160                 default: //  for any other layers, or the default layer
161                         rgblight_sethsv_noeeprom(19, 255, 255);
162                         break;
163         }
164         return state;
165 };