abd8e75c |
1 | /* |
2 | Copyright 2020 nickolaij |
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 | #pragma once |
19 | |
20 | #include "config_common.h" |
21 | |
22 | /* USB Device descriptor parameter */ |
23 | #define VENDOR_ID 0xFEED |
24 | #define PRODUCT_ID 0x0000 |
25 | #define DEVICE_VER 0x0001 |
26 | #define MANUFACTURER nickolaij |
27 | #define PRODUCT abacus |
28 | #define DESCRIPTION A first attempt at a custom keyboard |
29 | |
30 | /* key matrix size */ |
31 | #define MATRIX_ROWS 4 |
32 | #define MATRIX_COLS 12 |
33 | |
34 | /* |
35 | * Keyboard Matrix Assignments |
36 | * |
37 | * Change this to how you wired your keyboard |
38 | * COLS: AVR pins used for columns, left to right |
39 | * ROWS: AVR pins used for rows, top to bottom |
40 | * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) |
41 | * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) |
42 | * |
43 | */ |
44 | #define MATRIX_ROW_PINS { D3, D2, D4, C6 } |
45 | #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, D7, B3, E6, B2, B4, B6, B5} |
46 | #define UNUSED_PINS {B0} |
47 | |
48 | #define DIP_SWITCH_PINS { D0 } |
49 | |
50 | #define ENCODERS_PAD_A { F1 } |
51 | #define ENCODERS_PAD_B { F0 } |
52 | #define ENCODER_RESOLUTION 4 |
53 | |
54 | /* COL2ROW, ROW2COL*/ |
55 | #define DIODE_DIRECTION COL2ROW |
56 | #define RGB_DI_PIN D1 |
57 | |
58 | #ifdef RGB_DI_PIN |
59 | # define RGBLED_NUM 17 |
60 | # define RGBLIGHT_HUE_STEP 8 |
61 | # define RGBLIGHT_SAT_STEP 8 |
62 | # define RGBLIGHT_VAL_STEP 8 |
63 | # define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ |
64 | # define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ |
65 | /*== choose animations ==*/ |
66 | # define RGBLIGHT_EFFECT_BREATHING |
67 | # define RGBLIGHT_EFFECT_RAINBOW_MOOD |
68 | # define RGBLIGHT_EFFECT_RAINBOW_SWIRL |
69 | # define RGBLIGHT_EFFECT_SNAKE |
70 | # define RGBLIGHT_EFFECT_KNIGHT |
71 | # define RGBLIGHT_EFFECT_STATIC_GRADIENT |
72 | /*== customize breathing effect ==*/ |
73 | /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ |
74 | # define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 |
75 | /*==== use exp() and sin() ====*/ |
76 | # define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 |
77 | # define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 |
78 | #endif |
79 | |
80 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ |
81 | #define DEBOUNCE 5 |
82 | |
83 | /* define if matrix has ghost (lacks anti-ghosting diodes) */ |
84 | //#define MATRIX_HAS_GHOST |
85 | |
86 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ |
87 | #define LOCKING_SUPPORT_ENABLE |
88 | /* Locking resynchronize hack */ |
89 | #define LOCKING_RESYNC_ENABLE |
90 | |
91 | /* |
92 | * Feature disable options |
93 | * These options are also useful to firmware size reduction. |
94 | */ |
95 | |
96 | /* disable debug print */ |
97 | //#define NO_DEBUG |
98 | |
99 | /* disable print */ |
100 | //#define NO_PRINT |
101 | |
102 | /* disable action features */ |
103 | //#define NO_ACTION_LAYER |
104 | //#define NO_ACTION_TAPPING |
105 | //#define NO_ACTION_ONESHOT |
106 | |
107 | /* disable these deprecated features by default */ |
108 | #ifndef LINK_TIME_OPTIMIZATION_ENABLE |
109 | #define NO_ACTION_MACRO |
110 | #define NO_ACTION_FUNCTION |
111 | #endif |
112 | /* |
113 | * MIDI options |
114 | */ |
115 | |
116 | /* Prevent use of disabled MIDI features in the keymap */ |
117 | //#define MIDI_ENABLE_STRICT 1 |
118 | |
119 | /* enable basic MIDI features: |
120 | - MIDI notes can be sent when in Music mode is on |
121 | */ |
122 | //#define MIDI_BASIC |
123 | |
124 | /* enable advanced MIDI features: |
125 | - MIDI notes can be added to the keymap |
126 | - Octave shift and transpose |
127 | - Virtual sustain, portamento, and modulation wheel |
128 | - etc. |
129 | */ |
130 | //#define MIDI_ADVANCED |
131 | |
132 | /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ |
133 | //#define MIDI_TONE_KEYCODE_OCTAVES 1 |