]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/butterstick/keymaps/default/keymap.c
🐮🥛 Butterstick Support 🥛🐮 (#5742)
[qmk_firmware.git] / keyboards / butterstick / keymaps / default / keymap.c
1 #include QMK_KEYBOARD_H
2
3 #include "sten.h"
4 /*              
5  *  Key names are inherited from steno machines
6  *  .-----------------------------------------------------.
7  *      | LSU | LFT | LP | LH | ST1 | RF | RP | RL | RT | RD  |
8  *  |-----------------------------------------------------|
9  *      | LSD | LK  | LW | LR | ST2 | RR | RB | RG | RS | RZ  |
10  *  '-----------------------------------------------------'
11  */
12
13 // Function prefixes
14 #define MEDIA   (LSD | LK  | LW | LR)   
15 #define FUNCT   (LSD | LK  | LP | LH)   
16 #define MOVE    (LSU | LFT | LP | LH)   
17 #define SYMB    (RD  | RZ)      
18 #define NUMA    (LW  | LR)      
19 #define NUMB    (RR  | RB)      
20
21 // QMK Layer Numbers
22  #define BASE 0
23  #define GAME 1
24
25 // Do not change QMK Layer 0! This is your main keyboard.
26 // Make your QMK modifications to the later layers, to add 
27 // keys/customize on the first layer modify processQwerty():
28 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29   [BASE] = LAYOUT_butter(
30         STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR,
31         STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR
32   ),
33   // I don't game don't roast me thanks
34   [GAME] = LAYOUT_butter(
35         KC_Q,  KC_W,  KC_E,  KC_R,  KC_T, KC_Y, KC_U, KC_I,  KC_O, KC_ENT,
36         KC_A,  KC_S,  KC_D,  KC_F,  KC_G, KC_H, KC_J, KC_K,  KC_L, TO(BASE)
37   )
38 };
39
40 // Note: You can only use basic keycodes here!
41 // P() is just a wrapper to make your life easier, any C code can be executed.
42 // Only the longest matched chord is run!
43 //
44 // http://docs.gboards.ca
45 uint32_t processQwerty(bool lookup) {
46     // SECRET AGENT CHORDS
47     P( LSU | LK | RS | RD,      SEND_STRING(VERSION); SEND_STRING(__DATE__));
48     P( LSD | RZ,                                SEND(KC_SPC));
49
50     // Dual chords
51     P( LP  | LH,                        CLICK_MOUSE(KC_MS_BTN2));
52     P( ST1 | RF,                        CLICK_MOUSE(KC_MS_BTN1));
53     P( LSU | LFT,               SEND(KC_ESC));
54         P( LSD | LK,                            SEND(KC_LSFT));
55         P( RZ  | RS,                            SEND(KC_LSFT));
56         P( ST2 | RR,                            SEND(KC_SPC));
57     P( RP  | RL,                        SEND(KC_LGUI));
58     P( RT  | RD,                        SEND(KC_LCTL));
59     P( RL  | RT,                        SEND(KC_LALT));
60         P( LSU | LSD | LFT | LK,        SEND(KC_LCTL));
61         P( RS  | RT  | RD  | RZ,        SEND(KC_ENT));
62
63     // Function Layer
64     P( FUNCT | RF,         SEND(KC_F1));
65     P( FUNCT | RP,         SEND(KC_F2));
66     P( FUNCT | RL,         SEND(KC_F3));
67     P( FUNCT | RT,         SEND(KC_F4));
68     P( FUNCT | RF | RR,    SEND(KC_F5));
69     P( FUNCT | RP | RB,    SEND(KC_F6));
70     P( FUNCT | RL | RG,    SEND(KC_F7));
71     P( FUNCT | RT | RS,    SEND(KC_F8));
72     P( FUNCT | RR,         SEND(KC_F9));
73     P( FUNCT | RB,         SEND(KC_F10));
74     P( FUNCT | RG,         SEND(KC_F11));
75     P( FUNCT | RS,         SEND(KC_F12));
76
77     // Movement Layer
78     P( MOVE | RF,     SEND(KC_LEFT));
79     P( MOVE | RP,     SEND(KC_DOWN));
80     P( MOVE | RL,     SEND(KC_UP));
81     P( MOVE | RT,     SEND(KC_RIGHT));
82     P( MOVE | ST1,    SEND(KC_PGUP));
83     P( MOVE | ST2,    SEND(KC_PGDN));
84
85     // Media Layer
86     P( MEDIA | RF,    SEND(KC_MPRV));
87     P( MEDIA | RP,    SEND(KC_MPLY));
88     P( MEDIA | RL,    SEND(KC_MPLY));
89     P( MEDIA | RT,    SEND(KC_MNXT));
90     P( MEDIA | RG,        SEND(KC_VOLU));
91     P( MEDIA | RB,    SEND(KC_VOLD));
92     P( MEDIA | RS,    SEND(KC_MUTE));
93
94     // Number Row, Right
95     P( NUMB | LSU,    SEND(KC_1));
96     P( NUMB | LFT,    SEND(KC_2));
97     P( NUMB | LP,     SEND(KC_3));
98     P( NUMB | LH,     SEND(KC_4));
99     P( NUMB | ST1,    SEND(KC_5));
100     P( NUMB | RF,     SEND(KC_6));
101     P( NUMB | RP,     SEND(KC_7));
102     P( NUMB | RL,     SEND(KC_8));
103     P( NUMB | RT,     SEND(KC_9));
104     P( NUMB | RD,     SEND(KC_0));
105
106     // Number Row, Left
107     P( NUMA | LSU,    SEND(KC_1));
108     P( NUMA | LFT,    SEND(KC_2));
109     P( NUMA | LP,     SEND(KC_3));
110     P( NUMA | LH,     SEND(KC_4));
111     P( NUMA | ST1,    SEND(KC_5));
112     P( NUMA | RF,     SEND(KC_6));
113     P( NUMA | RP,     SEND(KC_7));
114     P( NUMA | RL,     SEND(KC_8));
115     P( NUMA | RT,     SEND(KC_9));
116     P( NUMA | RD,     SEND(KC_0));
117
118
119     // Symbols and Numbers
120     P( SYMB | LP | LW,      SEND(KC_LSFT); SEND(KC_9));       // (
121     P( SYMB | LH | LR,      SEND(KC_LSFT); SEND(KC_0));       // )
122     P( SYMB | ST1 | ST2,    SEND(KC_GRV));                    // `
123     P( SYMB | RR  | RF,         SEND(KC_LSFT); SEND(KC_3));       // #
124     P( SYMB | LFT | LK,     SEND(KC_LSFT); SEND(KC_4));       // $
125     P( SYMB | LSU,          SEND(KC_LSFT); SEND(KC_1));       // !
126     P( SYMB | LSD,          SEND(KC_LSFT); SEND(KC_5));       // %
127     P( SYMB | LFT,          SEND(KC_LSFT); SEND(KC_2));       // @
128     P( SYMB | LK,           SEND(KC_LSFT); SEND(KC_6));       // ^
129     P( SYMB | LP,           SEND(KC_LSFT); SEND(KC_LBRC));    // {
130     P( SYMB | LW,           SEND(KC_LBRC));
131     P( SYMB | LH,           SEND(KC_LSFT); SEND(KC_RBRC));    // }
132     P( SYMB | LR,           SEND(KC_RBRC));
133     P( SYMB | ST1,          SEND(KC_LSFT); SEND(KC_BSLS));    // |
134     P( SYMB | ST2,          SEND(KC_LSFT); SEND(KC_GRV));     // ~
135     P( SYMB | RP | RB,      SEND(KC_QUOT));
136     P( SYMB | RP | RG,      SEND(KC_LSFT); SEND(KC_QUOT));    // "
137     P( SYMB | RF,           SEND(KC_KP_PLUS));
138     P( SYMB | RR,           SEND(KC_LSFT); SEND(KC_7));       // &
139     P( SYMB | RP,           SEND(KC_MINS));
140     P( SYMB | RB,           SEND(KC_EQL));
141     P( SYMB | RL,           SEND(KC_SLSH));
142     P( SYMB | RG,           SEND(KC_COMM));
143     P( SYMB | RT,           SEND(KC_PAST));
144     P( SYMB | RS,           SEND(KC_DOT));
145
146     // Letters
147     P( LSU | LSD,    SEND(KC_A));
148     P( LFT | LK,     SEND(KC_S));
149     P( LP  | LW,     SEND(KC_D));
150     P( LH  | LR,     SEND(KC_F));
151     P( ST1 | ST2,    SEND(KC_G));
152     P( RF  | RR,     SEND(KC_H));
153     P( RT  | RS,     SEND(KC_L));
154     P( RD  | RZ,     SEND(KC_SCLN));
155     P( RG  | RL,     SEND(KC_K));
156     P( RP  | RB,     SEND(KC_J));
157     P( LSU,          SEND(KC_Q));
158     P( LSD,          SEND(KC_Z));
159     P( LFT,          SEND(KC_W));
160     P( LK,           SEND(KC_X));
161     P( LP,           SEND(KC_E));
162     P( LW,           SEND(KC_C));
163     P( LH,           SEND(KC_R));
164     P( LR,           SEND(KC_V));
165     P( ST1,          SEND(KC_T));
166     P( ST2,          SEND(KC_B));
167     P( RF,          SEND(KC_Y));
168     P( RR,          SEND(KC_N));
169     P( RP,           SEND(KC_U));
170     P( RB,           SEND(KC_M));
171     P( RL,           SEND(KC_I));
172     P( RG,           SEND(KC_COMM));
173     P( RT,           SEND(KC_O));
174     P( RS,           SEND(KC_DOT));
175     P( RD,           SEND(KC_P));
176     P( RZ,           SEND(KC_SLSH));
177
178     return 0;
179 }
180
181
182 // Don't fuck with this, thanks.
183 size_t keymapsCount  = sizeof(keymaps)/sizeof(keymaps[0]);