aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2020-07-11 07:28:53 -0400
committerGitHub <noreply@github.com>2020-07-11 12:28:53 +0100
commitca946f61165ba6e7cfa33bee1c5ed895c67c0e74 (patch)
tree981adf158c2b9b5d0d93146d8c464ed922202124
parent63fe92017ccf49739297a472ed5072a4abd7b1de (diff)
downloadqmk_firmware-ca946f61165ba6e7cfa33bee1c5ed895c67c0e74.tar.gz
qmk_firmware-ca946f61165ba6e7cfa33bee1c5ed895c67c0e74.zip
Initial support for TKC Alice (#9640)
Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Erovia <Erovia@users.noreply.github.com>
-rw-r--r--keyboards/tkc/osav2/README.md15
-rw-r--r--keyboards/tkc/osav2/config.h223
-rw-r--r--keyboards/tkc/osav2/info.json21
-rw-r--r--keyboards/tkc/osav2/keymaps/default/keymap.c33
-rw-r--r--keyboards/tkc/osav2/keymaps/via/keymap.c49
-rw-r--r--keyboards/tkc/osav2/keymaps/via/rules.mk1
-rw-r--r--keyboards/tkc/osav2/osav2.c33
-rw-r--r--keyboards/tkc/osav2/osav2.h117
-rw-r--r--keyboards/tkc/osav2/rules.mk33
9 files changed, 525 insertions, 0 deletions
diff --git a/keyboards/tkc/osav2/README.md b/keyboards/tkc/osav2/README.md
new file mode 100644
index 000000000..749ffe087
--- /dev/null
+++ b/keyboards/tkc/osav2/README.md
@@ -0,0 +1,15 @@
1# TKC OSA v2 (One Sweet Alice)
2
3![OSA v2](https://i.imgur.com/U2x7TQ8.jpg)
4
5The TKC OSA v2 is an ATMega32u4 powered, USB Type C, Alice compatible PCB and was created specifically for the OSA case, but with considerations to make it compatible with the Lubrigante acrylic cases (except for the Type C connector it should also be compatible with original TGR Alice cases).
6
7* Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/)
8* Hardware Supported: TKC OSA v2 PCB
9* Hardware Availability: https://thekey.company/collections/osav2-keyboard
10
11Make example for this keyboard (after setting up your build environment):
12
13 make tkc/osav2:default
14
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tkc/osav2/config.h b/keyboards/tkc/osav2/config.h
new file mode 100644
index 000000000..db00b0241
--- /dev/null
+++ b/keyboards/tkc/osav2/config.h
@@ -0,0 +1,223 @@
1/*
2Copyright 2019 jrfhoutx
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along 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 0x544B //TK
24#define PRODUCT_ID 0x0005 //Alice
25#define DEVICE_VER 0x0001
26#define MANUFACTURER The Key Company
27#define PRODUCT OSA v2
28#define DESCRIPTION QMK keyboard firmware for TKC OSA v2 (One Sweet Alice)
29
30/* key matrix size */
31#define MATRIX_ROWS 10
32#define MATRIX_COLS 8
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 { F0, F1, F4, F5, F6, B0, B1, B2, B3, B7 }
45#define MATRIX_COL_PINS { B4, D7, D5, D3, D2, D0, D1, B5 }
46#define UNUSED_PINS
47
48/* COL2ROW, ROW2COL*/
49#define DIODE_DIRECTION COL2ROW
50
51/*
52 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
53 */
54//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
55
56 #define BACKLIGHT_PIN D6
57 #define BACKLIGHT_BREATHING
58 #define BACKLIGHT_LEVELS 3
59
60 #define RGB_DI_PIN D4
61 #ifdef RGB_DI_PIN
62 #define RGBLED_NUM 9
63// #define RGBLIGHT_HUE_STEP 10
64// #define RGBLIGHT_SAT_STEP 17
65// #define RGBLIGHT_VAL_STEP 17
66// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
67 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
68 /*== all animations enable ==*/
69 #define RGBLIGHT_ANIMATIONS
70 /*== or choose animations ==*/
71 //#define RGBLIGHT_EFFECT_BREATHING
72 // #define RGBLIGHT_EFFECT_RAINBOW_MOOD
73 // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
74 // #define RGBLIGHT_EFFECT_SNAKE
75 // #define RGBLIGHT_EFFECT_KNIGHT
76 // #define RGBLIGHT_EFFECT_CHRISTMAS
77 // #define RGBLIGHT_EFFECT_STATIC_GRADIENT
78 // #define RGBLIGHT_EFFECT_RGB_TEST
79// #define RGBLIGHT_EFFECT_ALTERNATING
80 /*== customize breathing effect ==*/
81 /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
82 // #define RGBLIGHT_BREATHE_TABLE_SIZE 128 // 256(default) or 128 or 64
83 /*==== use exp() and sin() ====*/
84 // #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
85 // #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
86 #endif
87
88/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
89#define DEBOUNCE 5
90
91/* define if matrix has ghost (lacks anti-ghosting diodes) */
92//#define MATRIX_HAS_GHOST
93
94/* number of backlight levels */
95
96/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
97//#define LOCKING_SUPPORT_ENABLE
98/* Locking resynchronize hack */
99//#define LOCKING_RESYNC_ENABLE
100
101/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
102 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
103 */
104// #define GRAVE_ESC_CTRL_OVERRIDE
105
106/*
107 * Force NKRO
108 *
109 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
110 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
111 * makefile for this to work.)
112 *
113 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
114 * until the next keyboard reset.
115 *
116 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
117 * fully operational during normal computer usage.
118 *
119 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
120 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
121 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
122 * power-up.
123 *
124 */
125//#define FORCE_NKRO
126
127/*
128 * Magic Key Options
129 *
130 * Magic keys are hotkey commands that allow control over firmware functions of
131 * the keyboard. They are best used in combination with the HID Listen program,
132 * found here: https://www.pjrc.com/teensy/hid_listen.html
133 *
134 * The options below allow the magic key functionality to be changed. This is
135 * useful if your keyboard/keypad is missing keys and you want magic key support.
136 *
137 */
138
139/* key combination for magic key command */
140/* defined by default; to change, uncomment and set to the combination you want */
141// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
142
143/* control how magic key switches layers */
144//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
145//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
146//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
147
148/* override magic key keymap */
149//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
150//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
151//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
152//#define MAGIC_KEY_HELP H
153//#define MAGIC_KEY_HELP_ALT SLASH
154//#define MAGIC_KEY_DEBUG D
155//#define MAGIC_KEY_DEBUG_MATRIX X
156//#define MAGIC_KEY_DEBUG_KBD K
157//#define MAGIC_KEY_DEBUG_MOUSE M
158//#define MAGIC_KEY_VERSION V
159//#define MAGIC_KEY_STATUS S
160//#define MAGIC_KEY_CONSOLE C
161//#define MAGIC_KEY_LAYER0 0
162//#define MAGIC_KEY_LAYER0_ALT GRAVE
163//#define MAGIC_KEY_LAYER1 1
164//#define MAGIC_KEY_LAYER2 2
165//#define MAGIC_KEY_LAYER3 3
166//#define MAGIC_KEY_LAYER4 4
167//#define MAGIC_KEY_LAYER5 5
168//#define MAGIC_KEY_LAYER6 6
169//#define MAGIC_KEY_LAYER7 7
170//#define MAGIC_KEY_LAYER8 8
171//#define MAGIC_KEY_LAYER9 9
172//#define MAGIC_KEY_BOOTLOADER B
173//#define MAGIC_KEY_BOOTLOADER_ALT ESC
174//#define MAGIC_KEY_LOCK CAPS
175//#define MAGIC_KEY_EEPROM E
176//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
177//#define MAGIC_KEY_NKRO N
178//#define MAGIC_KEY_SLEEP_LED Z
179
180/*
181 * Feature disable options
182 * These options are also useful to firmware size reduction.
183 */
184
185/* disable debug print */
186//#define NO_DEBUG
187
188/* disable print */
189//#define NO_PRINT
190
191/* disable action features */
192//#define NO_ACTION_LAYER
193//#define NO_ACTION_TAPPING
194//#define NO_ACTION_ONESHOT
195//#define NO_ACTION_MACRO
196//#define NO_ACTION_FUNCTION
197
198/*
199 * MIDI options
200 */
201
202/* Prevent use of disabled MIDI features in the keymap */
203//#define MIDI_ENABLE_STRICT 1
204
205/* enable basic MIDI features:
206 - MIDI notes can be sent when in Music mode is on
207*/
208//#define MIDI_BASIC
209
210/* enable advanced MIDI features:
211 - MIDI notes can be added to the keymap
212 - Octave shift and transpose
213 - Virtual sustain, portamento, and modulation wheel
214 - etc.
215*/
216//#define MIDI_ADVANCED
217
218/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
219//#define MIDI_TONE_KEYCODE_OCTAVES 1
220
221/* Bootmagic Lite key configuration */
222//#define BOOTMAGIC_LITE_ROW 0
223//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/tkc/osav2/info.json b/keyboards/tkc/osav2/info.json
new file mode 100644
index 000000000..adbc6ee1a
--- /dev/null
+++ b/keyboards/tkc/osav2/info.json
@@ -0,0 +1,21 @@
1{
2 "keyboard_name": "TKC OSA v2",
3 "url": "",
4 "maintainer": "qmk",
5 "width": 18.25,
6 "height": 5,
7 "layouts": {
8 "LAYOUT_default_ansi": {
9 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
10 },
11 "LAYOUT_split_backspace": {
12 "layout": [{"label":"Delete", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"~", "x":16.25, "y":0}, {"label":"|", "x":17.25, "y":0}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"Backspace", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
13 },
14 "LAYOUT_split_right_shift": {
15 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":1.75}, {"label":"Fn", "x":17.25, "y":3}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
16 },
17 "LAYOUT_all": {
18 "layout": [{"label":"Delete", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"~", "x":16.25, "y":0}, {"label":"|", "x":17.25, "y":0}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"Backspace", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":1.75}, {"label":"Fn", "x":17.25, "y":3}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
19 }
20 }
21}
diff --git a/keyboards/tkc/osav2/keymaps/default/keymap.c b/keyboards/tkc/osav2/keymaps/default/keymap.c
new file mode 100644
index 000000000..6de8e527b
--- /dev/null
+++ b/keyboards/tkc/osav2/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
1/* Copyright 2019 jrfhoutx
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#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT_all(
20 KC_DEL, 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_BSPC,
21 KC_PGUP, 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,
22 KC_PGDN, 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,
23 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
24 KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL
25 ),
26[1] = LAYOUT_all(
27 BL_STEP, BL_BRTG, 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_TRNS, KC_TRNS,
28 RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
32 ),
33};
diff --git a/keyboards/tkc/osav2/keymaps/via/keymap.c b/keyboards/tkc/osav2/keymaps/via/keymap.c
new file mode 100644
index 000000000..2fdb6cbff
--- /dev/null
+++ b/keyboards/tkc/osav2/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
1/* Copyright 2019 jrfhoutx
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#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT_all(
20 KC_DEL, 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_BSPC,
21 KC_PGUP, 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,
22 KC_PGDN, 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,
23 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
24 KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL
25 ),
26[1] = LAYOUT_all(
27 BL_STEP, BL_BRTG, 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_TRNS, KC_TRNS,
28 RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
32 ),
33
34[2] = LAYOUT_all(
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
40 ),
41
42[3] = LAYOUT_all(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
48 ),
49};
diff --git a/keyboards/tkc/osav2/keymaps/via/rules.mk b/keyboards/tkc/osav2/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/tkc/osav2/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/tkc/osav2/osav2.c b/keyboards/tkc/osav2/osav2.c
new file mode 100644
index 000000000..4d8b90149
--- /dev/null
+++ b/keyboards/tkc/osav2/osav2.c
@@ -0,0 +1,33 @@
1/* Copyright 2019 jrfhoutx
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#include "osav2.h"
17
18void keyboard_pre_init_kb(void) {
19 setPinOutput(C7);
20 setPinOutput(C6);
21 setPinOutput(B6);
22
23 keyboard_pre_init_user();
24}
25
26bool led_update_kb(led_t led_state) {
27 if (led_update_user(led_state)) {
28 writePin(C7, led_state.num_lock);
29 writePin(C6, led_state.caps_lock);
30 writePin(B6, led_state.scroll_lock);
31 }
32 return true;
33}
diff --git a/keyboards/tkc/osav2/osav2.h b/keyboards/tkc/osav2/osav2.h
new file mode 100644
index 000000000..46cb3cd85
--- /dev/null
+++ b/keyboards/tkc/osav2/osav2.h
@@ -0,0 +1,117 @@
1/* Copyright 2019 jrfhoutx
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#pragma once
17
18#include "quantum.h"
19
20/* This a shortcut to help you visually see your layout.
21 *
22 * The first section contains all of the arguments representing the physical
23 * layout of the board and position of the keys.
24 *
25 * The second converts the arguments into a two-dimensional array which
26 * represents the switch matrix.
27 */
28
29/* LAYOUT
30 * ┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐┌────────┐
31 * │10 │ │00 │01 │02 │03 │04 │05 │06 │ │56 │55 │54 │53 │52 │51 │50 │57 ││57 │
32 * ├───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤└────────┘
33 * │20 │ │11 │12 │13 │14 │15 │16 │ │66 │65 │64 │63 │62 │61 │60 │67 │
34 * ├───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
35 * │30 │ │21 │22 │23 │24 │25 │26 │ │76 │75 │74 │73 │72 │71 │77 │
36 * └───┘ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤┌──────────┐
37 * │31 │32 │33 │34 │35 │36 │ │86 │85 │84 │83 │82 │81 │80 │87 ││87 │
38 * ├─────┬──┴──┬┴───┴┬──┴───┴┬──┴─┐ ├───┴───┴──┬┴───┴┬──┴───┴────┬─┴───┤└──────────┘
39 * │41 │ │43 │45 │46 │ │95 │93 │ │90 │
40 * └─────┘ └─────┴───────┴────┘ └──────────┴─────┘ └─────┘
41 */
42#define LAYOUT_default_ansi( \
43 K10, K00, K01, K02, K03, K04, K05, K06, K56, K55, K54, K53, K52, K51, K57, \
44 K20, K11, K12, K13, K14, K15, K16, K66, K65, K64, K63, K62, K61, K60, K67, \
45 K30, K21, K22, K23, K24, K25, K26, K76, K75, K74, K73, K72, K71, K77, \
46 K31, K32, K33, K34, K35, K36, K86, K85, K84, K83, K82, K81, K87, \
47 K41, K43, K45, K46, K95, K93, K90 \
48) \
49{ \
50 { K00, K01, K02, K03, K04, K05, K06, KC_NO }, \
51 { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \
52 { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
53 { K30, K31, K32, K33, K34, K35, K36, KC_NO }, \
54 { KC_NO, K41, KC_NO, K43, KC_NO, K45, K46, KC_NO }, \
55 { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
56 { K60, K61, K62, K63, K64, K65, K66, K67 }, \
57 { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
58 { KC_NO, K81, K82, K83, K84, K85, K86, K87 }, \
59 { K90, KC_NO, KC_NO, K93, KC_NO, K95, KC_NO, KC_NO } \
60}
61#define LAYOUT_split_backspace( \
62 K10, K00, K01, K02, K03, K04, K05, K06, K56, K55, K54, K53, K52, K51, K50, K57, \
63 K20, K11, K12, K13, K14, K15, K16, K66, K65, K64, K63, K62, K61, K60, K67, \
64 K30, K21, K22, K23, K24, K25, K26, K76, K75, K74, K73, K72, K71, K77, \
65 K31, K32, K33, K34, K35, K36, K86, K85, K84, K83, K82, K81, K87, \
66 K41, K43, K45, K46, K95, K93, K90 \
67) \
68{ \
69 { K00, K01, K02, K03, K04, K05, K06, KC_NO }, \
70 { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \
71 { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
72 { K30, K31, K32, K33, K34, K35, K36, KC_NO }, \
73 { KC_NO, K41, KC_NO, K43, KC_NO, K45, K46, KC_NO }, \
74 { K50, K51, K52, K53, K54, K55, K56, K57 }, \
75 { K60, K61, K62, K63, K64, K65, K66, K67 }, \
76 { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
77 { KC_NO, K81, K82, K83, K84, K85, K86, K87 }, \
78 { K90, KC_NO, KC_NO, K93, KC_NO, K95, KC_NO, KC_NO } \
79}
80#define LAYOUT_split_right_shift( \
81 K10, K00, K01, K02, K03, K04, K05, K06, K56, K55, K54, K53, K52, K51, K57, \
82 K20, K11, K12, K13, K14, K15, K16, K66, K65, K64, K63, K62, K61, K60, K67, \
83 K30, K21, K22, K23, K24, K25, K26, K76, K75, K74, K73, K72, K71, K77, \
84 K31, K32, K33, K34, K35, K36, K86, K85, K84, K83, K82, K81, K80, K87, \
85 K41, K43, K45, K46, K95, K93, K90 \
86) \
87{ \
88 { K00, K01, K02, K03, K04, K05, K06, KC_NO }, \
89 { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \
90 { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
91 { K30, K31, K32, K33, K34, K35, K36, KC_NO }, \
92 { KC_NO, K41, KC_NO, K43, KC_NO, K45, K46, KC_NO }, \
93 { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
94 { K60, K61, K62, K63, K64, K65, K66, K67 }, \
95 { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
96 { K80, K81, K82, K83, K84, K85, K86, K87 }, \
97 { K90, KC_NO, KC_NO, K93, KC_NO, K95, KC_NO, KC_NO } \
98}
99#define LAYOUT_all( \
100 K10, K00, K01, K02, K03, K04, K05, K06, K56, K55, K54, K53, K52, K51, K50, K57, \
101 K20, K11, K12, K13, K14, K15, K16, K66, K65, K64, K63, K62, K61, K60, K67, \
102 K30, K21, K22, K23, K24, K25, K26, K76, K75, K74, K73, K72, K71, K77, \
103 K31, K32, K33, K34, K35, K36, K86, K85, K84, K83, K82, K81, K80, K87, \
104 K41, K43, K45, K46, K95, K93, K90 \
105) \
106{ \
107 { K00, K01, K02, K03, K04, K05, K06, KC_NO }, \
108 { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \
109 { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
110 { K30, K31, K32, K33, K34, K35, K36, KC_NO }, \
111 { KC_NO, K41, KC_NO, K43, KC_NO, K45, K46, KC_NO }, \
112 { K50, K51, K52, K53, K54, K55, K56, K57 }, \
113 { K60, K61, K62, K63, K64, K65, K66, K67 }, \
114 { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
115 { K80, K81, K82, K83, K84, K85, K86, K87 }, \
116 { K90, KC_NO, KC_NO, K93, KC_NO, K95, KC_NO, KC_NO } \
117}
diff --git a/keyboards/tkc/osav2/rules.mk b/keyboards/tkc/osav2/rules.mk
new file mode 100644
index 000000000..a11aa7aee
--- /dev/null
+++ b/keyboards/tkc/osav2/rules.mk
@@ -0,0 +1,33 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = no # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = yes # Console for debug
21COMMAND_ENABLE = yes # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = yes # USB Nkey Rollover
26BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
28MIDI_ENABLE = no # MIDI support
29UNICODE_ENABLE = no # Unicode
30BLUETOOTH_ENABLE = no # Enable Bluetooth
31AUDIO_ENABLE = no # Audio output
32FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
33LTO_ENABLE = yes # Reduces compile size