]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/hs60/v2/keymaps/win_osx_dual/keymap.c
Update KBD67 readme so that it mentions the KBD65 PCB (#5143)
[qmk_firmware.git] / keyboards / hs60 / v2 / keymaps / win_osx_dual / keymap.c
1 /* Copyright 2018 Yiancar
2  *
3  * This program is free software: you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation, either version 2 of the License, or
6  * (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #include QMK_KEYBOARD_H
18
19
20 #define _QWERTY 0
21 #define _OSX 1
22 #define _RAISE 2
23 #define _SHIFTER 3
24 #define _ADJUST 16
25
26
27 enum custom_keycodes {
28   QWERTY = SAFE_RANGE,
29   OSX,
30   RAISE,
31   SHIFTER,
32 };
33
34 #define RAISE  MO(_RAISE)
35
36 #define OSX_SHIFT LM(_SHIFTER, MOD_LSFT)
37 #define OSX_ALT   LM(_SHIFTER, MOD_LALT)
38
39
40 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41 [_QWERTY] = LAYOUT_60_iso( /* Windows ISO layout */
42     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_BSPC,\
43     KC_CAPS,    KC_Q,       KC_W,      KC_E,       KC_R,       KC_T,       KC_Y,       KC_U,       KC_I,       KC_O,        KC_P,       KC_LBRC,    KC_RBRC,            \
44     KC_TAB,     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, \
45     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_RSFT,\
46     KC_LCTL,    KC_LGUI,    KC_LALT,                                KC_SPC,                                                 KC_RALT,    KC_RGUI,    RAISE ,     KC_RCTL),
47
48 [_OSX] = LAYOUT_60_iso( /* OSX ISO layout */
49     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,     KC_BSPC,\
50     KC_CAPS,    KC_Q,       KC_W,      KC_E,       KC_R,       KC_T,       KC_Y,       KC_U,       KC_I,       KC_O,        KC_P,       KC_LBRC,    KC_RBRC,            \
51     KC_TAB,     KC_A,       KC_S,      KC_D,       KC_F,       KC_G,       KC_H,       KC_J,       KC_K,       KC_L,        KC_SCLN,    KC_QUOT,    A(KC_3),    KC_ENT, \
52     OSX_SHIFT,  KC_NUHS,    KC_Z,      KC_X,       KC_C,       KC_V,       KC_B,       KC_N,       KC_M,       KC_COMM,     KC_DOT,     KC_SLSH,                KC_RSFT,\
53     KC_LCTL,    OSX_ALT,    KC_LGUI,                                KC_SPC,                                                 KC_RGUI,    KC_RALT,    RAISE ,     KC_RCTL),
54
55 [_RAISE] = LAYOUT_60_iso( /* Configuration */
56     RESET,       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 ,\
57     KC_TRNS,     QWERTY,    KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    OSX,         KC_TRNS,    KC_TRNS,    KC_TRNS,            \
58     KC_TRNS,     EF_INC,    H1_INC,    S1_INC,     H2_INC,     S2_INC,     BR_INC,     ES_INC,     KC_TRNS,    KC_TRNS,     KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,\
59     KC_TRNS,     KC_UP,     EF_DEC,    H1_DEC,     S2_DEC,     H2_DEC,     S2_DEC,     BR_DEC,     ES_DEC,     KC_TRNS,     KC_TRNS,    KC_TRNS,                KC_TRNS,\
60     KC_LEFT,     KC_DOWN,   KC_RGHT,                               KC_TRNS,                                                 KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS),
61
62 [_SHIFTER] = LAYOUT_60_iso( /* Shift Mods makes a keyboard with windows key layout work on OSX*/
63     KC_TRNS,    S(KC_1),    S(KC_QUOT),S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),     S(KC_0),    S(KC_MINS), S(KC_EQL),   KC_DEL,\
64     KC_TRNS,    S(KC_Q),    S(KC_W),   S(KC_E),    S(KC_R),    S(KC_T),    S(KC_Y),    S(KC_U),    S(KC_I),    S(KC_O),     S(KC_P),    S(KC_LBRC), S(KC_RBRC),            \
65     KC_TRNS,    S(KC_A),    S(KC_S),   S(KC_D),    S(KC_F),    S(KC_G),    S(KC_H),    S(KC_J),    S(KC_K),    S(KC_L),     S(KC_SCLN), S(KC_2),    S(KC_NUBS),  KC_TRNS, \
66     KC_TRNS,    S(KC_NUHS), S(KC_Z),   S(KC_X),    S(KC_C),    S(KC_V),    S(KC_B),    S(KC_N),    S(KC_M),    S(KC_COMM),  S(KC_DOT),  S(KC_SLSH),              KC_TRNS,\
67     KC_TRNS,    KC_TRNS,   KC_TRNS,                                KC_TRNS,                                                 KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS)
68
69
70 };
71
72 void matrix_init_user(void) {
73   //user initialization
74 }
75
76
77 void matrix_scan_user(void) {
78   //user matrix
79 }
80
81
82 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
83   switch (keycode) {
84     case QWERTY:
85       if (record->event.pressed) {
86         set_single_persistent_default_layer(_QWERTY);
87       }
88       return false;
89     case OSX:
90       if (record->event.pressed) {
91         set_single_persistent_default_layer(_OSX);
92       }
93       return false;
94
95   }
96   return true;
97 }