]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/dz60/keymaps/macos_arrow/keymap.c
Add dz60_macos_arrow keymap (#3296)
[qmk_firmware.git] / keyboards / dz60 / keymaps / macos_arrow / keymap.c
1 #include QMK_KEYBOARD_H
2
3 #define ______ KC_TRNS
4 #define _BL 0
5 #define _FL 1
6 #define _ML 2
7
8 enum my_keycodes {
9   BR_UP = SAFE_RANGE,
10   BR_DOWN
11 };
12
13 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
14   /* ,-----------------------------------------------------------------------------------------.
15    * | Esc | 1   | 2   | 3   | 4   | 5   | 6   | 7   | 8   | 9   | 0   | -   | =   | Backspace |
16    * |-----------------------------------------------------------------------------------------+
17    * | Tab    | Q   | W   | E   | R   | T   | Y   | U   | I   | O   | P   | [   | ]   |   \    |
18    * |-----------------------------------------------------------------------------------------+
19    * | _FL      | A   | S   | D   | F   | G   | H   | J   | K   | L   | ;   | '   | Enter      |
20    * |-----------------------------------------------------------------------------------------+
21    * | Shift     | Z   | X   | C   | V   | B   | N   | M   | ,   | .   | /   | _ML | Up  |Shift|
22    * |-----------------------------------------------------------------------------------------+
23    * | Ctrl | Alt  | Gui  |                Space               |Gui/_ML| Alt | Left| Down|Right|
24    * `-----------------------------------------------------------------------------------------'
25    */
26   [_BL] = LAYOUT_2_shifts(
27     KC_GESC, 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_NO, KC_BSPC,
28     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,
29     MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
30     KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_ML), KC_UP, KC_RSFT,
31     KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, LM(_ML, MOD_RGUI), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
32
33   /* ,-----------------------------------------------------------------------------------------.
34    * |  `  | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 |    Del    |
35    * |-----------------------------------------------------------------------------------------+
36    * |        |     |     |     |     |     |     |     | UP  |     |     |     |     |  Reset |
37    * |-----------------------------------------------------------------------------------------+
38    * |          |     |     |     |     |     |     | Left| Down|Right|     |     |            |
39    * |-----------------------------------------------------------------------------------------+
40    * |           |     |     |     |     |     |     |     |     |     |     |     |     |     |
41    * |-----------------------------------------------------------------------------------------+
42    * |      |      |      |                                      |     |     |     |     |     |
43    * `-----------------------------------------------------------------------------------------'
44    */
45   [_FL] = LAYOUT(
46     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, ______, KC_DEL,
47     ______, ______, ______, ______, ______, ______, ______, ______, KC_UP, ______, ______, ______, ______, RESET,
48     ______, ______, ______, ______, ______, ______, ______, KC_LEFT, KC_DOWN, KC_RIGHT, ______, ______, ______,
49     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
50     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______),
51
52   /* ,-----------------------------------------------------------------------------------------.
53    * |     | BR- | BR+ | F3  | F4  |     |     |PREV |PLAY |NEXT |MUTE | V- | V+ |    Eject    |
54    * |-----------------------------------------------------------------------------------------+
55    * |        |     |     |     |     |     |     |     |     |     |     |     |     |        |
56    * |-----------------------------------------------------------------------------------------+
57    * |          |     |     |     |     |     |     |     |     |     |     |     |            |
58    * |-----------------------------------------------------------------------------------------+
59    * |           |     |     |     |     |     |     |     |     |     |     |     |     |     |
60    * |-----------------------------------------------------------------------------------------+
61    * |      |      |      |                                      |     |     |     |     |     |
62    * `-----------------------------------------------------------------------------------------'
63    */
64   [_ML] = LAYOUT(
65     ______, BR_DOWN, BR_UP, ______, ______, KC_F5, KC_F6, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, ______, KC_MEDIA_EJECT,
66     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
67     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
68     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
69     ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______),
70 };
71
72 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
73   uint8_t key;
74   switch (keycode) {
75     case BR_DOWN:
76     case BR_UP:
77       // Clear the RGUI modifier placed by LM for _ML layer as brightness don't
78       // work with modifiers.
79       key = (keycode == BR_DOWN) ? KC_SLCK : KC_PAUS;
80       if (record->event.pressed) {
81           unregister_mods(MOD_RGUI);
82           add_key(key);
83           send_keyboard_report();
84       } else {
85           del_key(key);
86           send_keyboard_report();
87       }
88       return false; // Skip all further processing of this key
89     default:
90       return true; // Process all other keycodes normally
91   }
92 }