diff options
Diffstat (limited to 'keyboards/keebio/viterbi/keymaps/mike808/keymap.c')
-rw-r--r-- | keyboards/keebio/viterbi/keymaps/mike808/keymap.c | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/keyboards/keebio/viterbi/keymaps/mike808/keymap.c b/keyboards/keebio/viterbi/keymaps/mike808/keymap.c new file mode 100644 index 000000000..e1dc91d2b --- /dev/null +++ b/keyboards/keebio/viterbi/keymaps/mike808/keymap.c | |||
@@ -0,0 +1,157 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | #define _DVORAK 0 | ||
4 | #define _QWERTY 1 | ||
5 | #define _FN1 2 | ||
6 | #define _MOUSE 3 | ||
7 | |||
8 | enum custom_keycodes { | ||
9 | DVORAK = SAFE_RANGE, | ||
10 | QWERTY, | ||
11 | }; | ||
12 | |||
13 | #define KC_ KC_TRNS | ||
14 | |||
15 | #define KC_DVOR DVORAK | ||
16 | #define KC_QWER QWERTY | ||
17 | #define KC_FN1 MO(_FN1) | ||
18 | |||
19 | // Tap-Hold keys (QWERTY) | ||
20 | #define KC_S_C MT(MOD_LCTL, KC_S) | ||
21 | #define KC_D_A MT(MOD_LALT, KC_D) | ||
22 | #define KC_F_G MT(MOD_LGUI, KC_F) | ||
23 | #define KC_J_G MT(MOD_RGUI, KC_J) | ||
24 | #define KC_K_A MT(MOD_RALT, KC_K) | ||
25 | #define KC_L_C MT(MOD_RCTL, KC_L) | ||
26 | |||
27 | // Tap-Hold keys (Dvorak) | ||
28 | #define KC_O_C MT(MOD_LCTL, KC_O) | ||
29 | #define KC_E_A MT(MOD_LALT, KC_E) | ||
30 | #define KC_U_G MT(MOD_LGUI, KC_U) | ||
31 | #define KC_H_G MT(MOD_RGUI, KC_H) | ||
32 | #define KC_T_A MT(MOD_RALT, KC_T) | ||
33 | #define KC_N_C MT(MOD_RCTL, KC_N) | ||
34 | |||
35 | #define KC_G_A LGUI(KC_A) | ||
36 | #define KC_G_C LGUI(KC_C) | ||
37 | #define KC_G_V LGUI(KC_V) | ||
38 | #define KC_G_X LGUI(KC_X) | ||
39 | #define KC_G_Z LGUI(KC_Z) | ||
40 | #define KC_G_BL LGUI(KC_BSLS) | ||
41 | #define KC_G_TB LGUI(KC_TAB) | ||
42 | #define KC_G_SP LGUI(KC_SPC) | ||
43 | |||
44 | #define KC_ENTM LT(_MOUSE, KC_ENT) | ||
45 | |||
46 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
47 | |||
48 | [_QWERTY] = LAYOUT_kc( | ||
49 | //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. | ||
50 | DVOR,ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,PGUP, | ||
51 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
52 | G_A ,TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,PGDN, | ||
53 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
54 | G_X ,CAPS, A ,S_C ,D_A ,F_G , G , H ,J_G ,K_A ,L_C ,SCLN,QUOT, UP , | ||
55 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
56 | G_C ,LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,RSFT,DOWN, | ||
57 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
58 | G_V ,FN1 ,G_TB,G_SP,BSPC,SPC ,SPC , ENTM,ENTM,G_Z ,GRV ,EQL ,LEFT,RGHT | ||
59 | //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----' | ||
60 | ), | ||
61 | |||
62 | [_DVORAK] = LAYOUT_kc( | ||
63 | //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. | ||
64 | QWER,ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,EQL ,PGUP, | ||
65 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
66 | G_A ,TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,SLSH,PGDN, | ||
67 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
68 | G_X ,CAPS, A ,O_C ,E_A ,U_G , I , D ,H_G ,T_A ,N_C , S ,MINS, UP , | ||
69 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
70 | G_C ,LSFT,SCLN, Q , J , K , X , B , M , W , V , Z ,RSFT,DOWN, | ||
71 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
72 | G_V ,FN1 ,G_TB,G_SP,BSPC,SPC ,SPC , ENTM,ENTM,G_Z ,GRV ,BSLS,LEFT,RGHT | ||
73 | //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----' | ||
74 | ), | ||
75 | |||
76 | [_FN1] = LAYOUT_kc( | ||
77 | //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. | ||
78 | , , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , , | ||
79 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
80 | , ,EXLM, AT ,LCBR,RCBR,PIPE, , P7 , P8 , P9 ,ASTR,F12 , , | ||
81 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
82 | , ,HASH,DLR ,LPRN,RPRN,GRV , , P4 , P5 , P6 ,PLUS,MINS, , | ||
83 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
84 | , ,PERC,CIRC,LBRC,RBRC,TILD, AMPR, P1 , P2 , P3 ,SLSH, , , | ||
85 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
86 | , , , , , , , , ,PDOT, P0 ,EQL , , | ||
87 | //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----' | ||
88 | ), | ||
89 | |||
90 | [_MOUSE] = LAYOUT_kc( | ||
91 | //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. | ||
92 | , , , , , , , , , , , , , , | ||
93 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
94 | , , , ,MS_U, , , , , , , , , , | ||
95 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
96 | , , ,MS_L,MS_D,MS_R, , , , , , , , , | ||
97 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
98 | , , , , , , , , , , , , , , | ||
99 | //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| | ||
100 | , , , ,BTN1,BTN2, , , , , , , , | ||
101 | //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----' | ||
102 | ) | ||
103 | }; | ||
104 | |||
105 | #ifdef AUDIO_ENABLE | ||
106 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); | ||
107 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); | ||
108 | #endif | ||
109 | |||
110 | void update_rgblight(uint16_t layer) { | ||
111 | if (layer & (1UL << _DVORAK)) { | ||
112 | rgblight_sethsv_green(); | ||
113 | } else if (layer & (1UL << _QWERTY)) { | ||
114 | rgblight_sethsv_goldenrod(); | ||
115 | } | ||
116 | } | ||
117 | |||
118 | void persistent_default_layer_set(uint16_t default_layer) { | ||
119 | eeconfig_update_default_layer(default_layer); | ||
120 | default_layer_set(default_layer); | ||
121 | #ifdef RGBLIGHT_ENABLE | ||
122 | update_rgblight(default_layer); | ||
123 | #endif // RGBLIGHT_ENABLE | ||
124 | } | ||
125 | |||
126 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
127 | switch (keycode) { | ||
128 | case QWERTY: | ||
129 | if (record->event.pressed) { | ||
130 | #ifdef AUDIO_ENABLE | ||
131 | PLAY_NOTE_ARRAY(tone_qwerty, false, 0); | ||
132 | #endif | ||
133 | persistent_default_layer_set(1UL << _QWERTY); | ||
134 | } | ||
135 | return false; | ||
136 | break; | ||
137 | case DVORAK: | ||
138 | if (record->event.pressed) { | ||
139 | #ifdef AUDIO_ENABLE | ||
140 | PLAY_NOTE_ARRAY(tone_dvorak, false, 0); | ||
141 | #endif | ||
142 | persistent_default_layer_set(1UL << _DVORAK); | ||
143 | } | ||
144 | return false; | ||
145 | break; | ||
146 | } | ||
147 | return true; | ||
148 | } | ||
149 | |||
150 | |||
151 | void matrix_init_user(void) { | ||
152 | #ifdef RGBLIGHT_ENABLE | ||
153 | rgblight_enable(); | ||
154 | uint8_t default_layer = eeconfig_read_default_layer(); | ||
155 | update_rgblight(default_layer); | ||
156 | #endif | ||
157 | } | ||