1+ /* Copyright 2018 Jack Humbert
2+ * This program is free software: you can redistribute it and/or modify
3+ * it under the terms of the GNU General Public License as published by
4+ * the Free Software Foundation, either version 2 of the License, or
5+ * (at your option) any later version.
6+ *
7+ * This program is distributed in the hope that it will be useful,
8+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
9+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10+ * GNU General Public License for more details.
11+ *
12+ * You should have received a copy of the GNU General Public License
13+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
14+ */
15+ #include QMK_KEYBOARD_H
16+ #include "remote_kb.h"
17+ #include <avr/boot.h>
18+
19+ #define _MA 0
20+ #define _FN 1
21+
22+ enum custom_keycodes {
23+ KC_CUST ,
24+ };
25+
26+ const uint16_t PROGMEM keymaps [][MATRIX_ROWS ][MATRIX_COLS ] = {
27+ [_MA ] = LAYOUT (
28+ 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 , KC_TILD , \
29+ KC_F13 , 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 , KC_DEL , \
30+ KC_F14 , 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_ENT , KC_PGUP , \
31+ KC_F15 , KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT , KC_UP , KC_PGDN , \
32+ KC_F16 , KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , MO (_FN ), KC_RALT , KC_RCTL , KC_LEFT , KC_DOWN , KC_RGHT \
33+ ),
34+ [_FN ] = LAYOUT (
35+ 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_HOME , KC_INS , \
36+ RGB_TOG , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , \
37+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , \
38+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , \
39+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MPRV , KC_MPLY , KC_MNXT \
40+ ),
41+
42+ };
43+
44+ bool process_record_user (uint16_t keycode , keyrecord_t * record ) {
45+ switch (keycode ) {
46+ case KC_CUST : //custom macro
47+ if (record -> event .pressed ) {
48+ }
49+ break ;
50+
51+ case RM_1 : //remote macro 1
52+ if (record -> event .pressed ) {
53+ }
54+ break ;
55+
56+ case RM_2 : //remote macro 2
57+ if (record -> event .pressed ) {
58+ }
59+ break ;
60+
61+ case RM_3 : //remote macro 3
62+ if (record -> event .pressed ) {
63+ }
64+ break ;
65+
66+ case RM_4 : //remote macro 4
67+ if (record -> event .pressed ) {
68+ }
69+ break ;
70+
71+ }
72+ return true;
73+ }
74+
75+ bool has_usb (void ) {
76+ USBCON |= (1 << OTGPADE ); //enables VBUS pad
77+ _delay_us (10 );
78+ return (USBSTA & (1 <<VBUS )); //checks state of VBUS
79+ }
80+
81+ void matrix_init_user (void ) {
82+ uart_init (SERIAL_UART_BAUD );
83+ }
84+
85+ void matrix_scan_user (void ) {
86+ matrix_scan_remote_kb ();
87+ }
0 commit comments