]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
Fix spelling of "persistent"
[qmk_firmware.git] / keyboards / converter / ibm_terminal / keymaps / priyadi / keymap.c
1 /*
2 Copyright 2016 Priyadi Iman Nurcahyo <priyadi@priyadi.net>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #include "keycode.h"
19 #include "print.h"
20 #include "debug.h"
21 #include "util.h"
22 #include "ibm_terminal.h"
23 #include "action_layer.h"
24
25 // Fillers to make layering clearer
26
27 #define _______ KC_TRNS
28 #define XXXXXXX KC_NO
29
30 enum layers {
31   QWE, // qwerty
32   COL, // colemak
33   WOR, // workman
34   DVO, // dvorak
35
36   MOU, // mouse keys
37   EMO, // emoji
38   SYS, // system
39 };
40
41 enum keycodes {
42   // default layout switcher
43   LAY_QWE = SAFE_RANGE,
44   LAY_COL,
45   LAY_WOR,
46   LAY_DVO,
47
48   // layer switchers
49   LYR_SYS,
50   LYR_EMO,
51
52   // os switchers
53   OS_LIN,
54   OS_WIN,
55   OS_MAC,
56 };
57
58 // unicode map
59
60 enum unicode_name {
61   GRIN, // grinning face 😊
62   TJOY, // tears of joy 😂
63   SMILE, // grining face with smiling eyes 😁
64   HEART, // heart ❤
65   EYERT, // smiling face with heart shaped eyes 😍
66   CRY, // crying face 😭
67   SMEYE, // smiling face with smiling eyes 😊
68   UNAMU, // unamused 😒
69   KISS, // kiss 😘
70   HART2, // two hearts 💕
71   WEARY, // weary 😩
72   OKHND, // ok hand sign 👌
73   PENSV, // pensive 😔
74   SMIRK, // smirk 😏
75   RECYC, // recycle ♻
76   WINK, // wink 😉
77   THMUP, // thumb up 👍
78   THMDN, // thumb down 👎
79   PRAY, // pray 🙏
80   PHEW, // relieved 😌
81   MUSIC, // musical notes
82   FLUSH, // flushed 😳
83   CELEB, // celebration 🙌
84   CRY2, // crying face 😢
85   COOL, // smile with sunglasses 😎
86   NOEVS, // see no evil
87   NOEVH, // hear no evil
88   NOEVK, // speak no evil
89   POO, // pile of poo
90   EYES, // eyes
91   VIC, // victory hand
92   BHART, // broken heart
93   SLEEP, // sleeping face
94   SMIL2, // smiling face with open mouth & sweat
95   HUNRD, // 100
96   CONFU, // confused
97   TONGU, // face with tongue & winking eye
98   DISAP, // disappointed
99   YUMMY, // face savoring delicious food
100   CLAP, // hand clapping
101   FEAR, // face screaming in fear
102   HORNS, // smiling face with horns
103   HALO, // smiling face with halo
104   BYE, // waving hand
105   SUN, // sun
106   MOON, // moon
107   SKULL, // skull
108 };
109
110 const uint32_t PROGMEM unicode_map[] = {
111   [GRIN] = 0x1F600,
112   [TJOY] = 0x1F602,
113   [SMILE] = 0x1F601,
114   [HEART] = 0x2764,
115   [EYERT] = 0x1f60d,
116   [CRY] = 0x1f62d,
117   [SMEYE] = 0x1F60A,
118   [UNAMU] = 0x1F612,
119   [KISS] = 0x1F618,
120   [HART2] = 0x1F495,
121   [WEARY] = 0x1F629,
122   [OKHND] = 0x1F44C,
123   [PENSV] = 0x1F614,
124   [SMIRK] = 0x1F60F,
125   [RECYC] = 0x267B,
126   [WINK] = 0x1F609,
127   [THMUP] = 0x1F44D,
128   [THMDN] = 0x1F44E,
129   [PRAY] = 0x1F64F,
130   [PHEW] = 0x1F60C,
131   [MUSIC] = 0x1F3B6,
132   [FLUSH] = 0x1F633,
133   [CELEB] = 0x1F64C,
134   [CRY2] = 0x1F622,
135   [COOL] = 0x1F60E,
136   [NOEVS] = 0x1F648,
137   [NOEVH] = 0x1F649,
138   [NOEVK] = 0x1F64A,
139   [POO] = 0x1F4A9,
140   [EYES] = 0x1F440,
141   [VIC] = 0x270C,
142   [BHART] = 0x1F494,
143   [SLEEP] = 0x1F634,
144   [SMIL2] = 0x1F605,
145   [HUNRD] = 0x1F4AF,
146   [CONFU] = 0x1F615,
147   [TONGU] = 0x1F61C,
148   [DISAP] = 0x1F61E,
149   [YUMMY] = 0x1F60B,
150   [CLAP] = 0x1F44F,
151   [FEAR] = 0x1F631,
152   [HORNS] = 0x1F608,
153   [HALO] = 0x1F607,
154   [BYE] = 0x1F44B,
155   [SUN] = 0x2600,
156   [MOON] = 0x1F314,
157   [SKULL] = 0x1F480,
158 };
159
160 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
161     /* qwerty */
162     [QWE] = KEYMAP(
163                                    KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_PSCR, KC_SLCK, KC_PAUS,
164                                    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
165
166     MO(EMO), MO(SYS),     KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  XXXXXXX, KC_BSPC,     KC_INS,  KC_HOME, KC_PGUP,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
167     KC_MNXT, KC_VOLU,     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,          XXXXXXX,     KC_DEL,  KC_END,  KC_PGDN,     KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
168     KC_MPLY, KC_MUTE,     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_BSLS, KC_ENT,               KC_UP,                KC_P4,   KC_P5,   KC_P6,   KC_PCMM,
169     KC_MPRV, KC_VOLD,     KC_LSFT, KC_GRV,  KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          XXXXXXX, KC_RSFT,     KC_LEFT, TG(MOU), KC_RGHT,     KC_P1,   KC_P2,   KC_P3,   KC_PENT,
170     KC_LGUI, KC_APP,      KC_LCTL,          KC_LALT,                            KC_SPC,                                               KC_RALT,          KC_RCTL,              KC_DOWN,              XXXXXXX, KC_P0,   KC_PDOT, XXXXXXX
171     ),
172
173     /* colemak */
174     [COL] = KEYMAP(
175                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
176                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
177
178     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
179     _______, _______,     _______, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC,          _______,     _______, _______, _______,     _______, _______, _______, _______,
180     _______, _______,     _______, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT,          _______, _______,              _______,              _______, _______, _______, _______,
181     _______, _______,     _______, _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
182     _______, _______,     _______,          _______,                            _______,                                              _______,          _______,              _______,              _______, _______, _______, _______
183     ),
184
185     /* workman */
186     [WOR] = KEYMAP(
187                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
188                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
189
190     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
191     _______, _______,     _______, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN, KC_LBRC, KC_RBRC,          _______,     _______, _______, _______,     _______, _______, _______, _______,
192     _______, _______,     _______, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    KC_QUOT,          _______, _______,              _______,              _______, _______, _______, _______,
193     _______, _______,     _______, _______, KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH,          _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
194     _______, _______,     _______,          _______,                            _______,                                              _______,          _______,              _______,              _______, _______, _______, _______
195     ),
196
197     /* dvorak */
198     [DVO] = KEYMAP(
199                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
200                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
201
202     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
203     _______, _______,     _______, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,           _______,     _______, _______, _______,     _______, _______, _______, _______,
204     _______, _______,     _______, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,          _______, _______,              _______,              _______, _______, _______, _______,
205     _______, _______,     _______, _______, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,             _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
206     _______, _______,     _______,          _______,                            _______,                                              _______,          _______,              _______,              _______, _______, _______, _______
207     ),
208
209     /* system */
210     [SYS] = KEYMAP(
211                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
212                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
213
214     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
215     _______, _______,     _______, LAY_QWE, OS_WIN,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,     _______, _______, _______,     _______, _______, _______, _______,
216     _______, _______,     _______, _______, _______, LAY_DVO, _______, _______, _______, _______, LAY_WOR, OS_LIN,  _______, _______,          _______, _______,              _______,              _______, _______, _______, _______,
217     _______, _______,     _______, _______, _______, _______, LAY_COL, _______, _______, _______, OS_MAC,  _______, _______, _______,          _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
218     _______, _______,     _______,          _______,                            _______,                                              _______,          _______,              _______,              _______, _______, _______, _______
219     ),
220
221     /* mouse keys */
222     [MOU] = KEYMAP(
223                                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
224                                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
225
226     XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
227     XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
228     XXXXXXX, KC_BTN4,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX, XXXXXXX,              KC_MS_U,              XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
229     XXXXXXX, KC_BTN5,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX, XXXXXXX,     KC_MS_L, _______, KC_MS_R,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
230     KC_BTN1, KC_BTN3,     KC_BTN2,          XXXXXXX,                            XXXXXXX,                                              XXXXXXX,          XXXXXXX,              KC_MS_D,              XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
231     ),
232
233     /* emoji */
234     [EMO] = KEYMAP(
235                                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
236                                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
237
238     XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
239     XXXXXXX, XXXXXXX,     XXXXXXX, X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY), X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV),XXXXXXX, XXXXXXX,          XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
240     XXXXXXX, XXXXXXX,     XXXXXXX, X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN), X(HEART),X(BYE),  X(KISS), X(CELEB),X(COOL), XXXXXXX,          XXXXXXX, XXXXXXX,              XXXXXXX,              XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
241     XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX,X(SLEEP),X(CLAP), X(CRY),   X(VIC),  X(BHART),X(SUN),  X(SMEYE),X(WINK), X(MOON), X(CONFU),         XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
242     XXXXXXX, XXXXXXX,     XXXXXXX,          XXXXXXX,                            XXXXXXX,                                              XXXXXXX,          XXXXXXX,              XXXXXXX,              XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
243     ),
244
245     /*
246     [XXX] = KEYMAP(
247                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
248                                    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
249
250     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
251     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,     _______, _______, _______,     _______, _______, _______, _______,
252     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,              _______,              _______, _______, _______, _______,
253     _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
254     _______, _______,     _______,          _______,                            _______,                                              _______,          _______,              _______,              _______, _______, _______, _______
255     ),
256     */
257 };
258
259 void persistent_default_layer_set(uint16_t default_layer) {
260   eeconfig_update_default_layer(default_layer);
261   default_layer_set(default_layer);
262 }
263
264 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
265   switch (keycode) {
266     /* layout switcher */
267     case LAY_QWE:
268       if (record->event.pressed) {
269         persistent_default_layer_set(1UL<<QWE);
270       }
271       return false;
272       break;
273     case LAY_COL:
274       if (record->event.pressed) {
275         persistent_default_layer_set(1UL<<COL);
276       }
277       return false;
278       break;
279     case LAY_WOR:
280       if (record->event.pressed) {
281         persistent_default_layer_set(1UL<<WOR);
282       }
283       return false;
284       break;
285     case LAY_DVO:
286       if (record->event.pressed) {
287         persistent_default_layer_set(1UL<<DVO);
288       }
289       return false;
290       break;
291
292     /* os switcher */
293     case OS_LIN:
294       set_unicode_input_mode(UC_LNX);
295       return false;
296       break;
297     case OS_WIN:
298       set_unicode_input_mode(UC_WINC);
299       return false;
300       break;
301     case OS_MAC:
302       set_unicode_input_mode(UC_OSX);
303       return false;
304       break;
305
306   }
307   return true;
308 }
309
310 void matrix_init_user() {
311   set_unicode_input_mode(UC_LNX);
312 }