aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXyverz <xyverz@gmail.com>2017-04-06 22:07:34 -0700
committerXyverz <xyverz@gmail.com>2017-04-06 22:07:34 -0700
commit303bc6999efc07f38a50c3cdc06503e6fce5fa6a (patch)
tree42f46f79866f9e64254148cca77c20562e52c2f6
parent8813365ec5c091c0185563943bbf73ec53d846e0 (diff)
parent154305ce1be16b2c8abce5e5d4dee421f295d6b3 (diff)
downloadqmk_firmware-303bc6999efc07f38a50c3cdc06503e6fce5fa6a.tar.gz
qmk_firmware-303bc6999efc07f38a50c3cdc06503e6fce5fa6a.zip
Merge remote-tracking branch 'upstream/master'
-rw-r--r--doc/BUILD_GUIDE.md2
-rw-r--r--keyboards/atomic/keymaps/twolayer.c72
-rw-r--r--keyboards/ergodox/ez/config.h3
-rw-r--r--keyboards/gh60/keymaps/dbroqua_7U/Makefile111
-rw-r--r--keyboards/gh60/keymaps/dbroqua_7U/keymap.c88
-rw-r--r--keyboards/handwired/kbod/Makefile3
-rw-r--r--keyboards/handwired/kbod/config.h167
-rw-r--r--keyboards/handwired/kbod/kbod.c28
-rw-r--r--keyboards/handwired/kbod/kbod.h21
-rw-r--r--keyboards/handwired/kbod/keymaps/default/Makefile21
-rw-r--r--keyboards/handwired/kbod/keymaps/default/config.h8
-rw-r--r--keyboards/handwired/kbod/keymaps/default/keymap.c104
-rw-r--r--keyboards/handwired/kbod/keymaps/default/readme.md5
-rw-r--r--keyboards/handwired/kbod/readme.md21
-rw-r--r--keyboards/handwired/kbod/rules.mk68
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/config.h17
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/keymap.c3
-rw-r--r--keyboards/lets_split/keymaps/hexwire/config.h49
-rw-r--r--keyboards/lets_split/keymaps/hexwire/keymap.c12
-rw-r--r--keyboards/lets_split/lets_split.h14
-rw-r--r--keyboards/lets_split/readme.md11
-rw-r--r--keyboards/lets_split/rev1/rev1.h24
-rw-r--r--keyboards/lets_split/rev2/rev2.c1
-rw-r--r--keyboards/lets_split/rev2/rev2.h73
-rw-r--r--keyboards/lets_split/rules.mk14
-rw-r--r--keyboards/lets_split/split_util.c2
-rw-r--r--keyboards/lets_split/ssd1306.c6
-rw-r--r--keyboards/lets_split/ssd1306.h17
-rw-r--r--keyboards/miuni32/Makefile3
-rw-r--r--keyboards/miuni32/config.h170
-rw-r--r--keyboards/miuni32/keymaps/default/Makefile21
-rw-r--r--keyboards/miuni32/keymaps/default/config.h8
-rw-r--r--keyboards/miuni32/keymaps/default/keymap.c49
-rw-r--r--keyboards/miuni32/keymaps/default/readme.md1
-rw-r--r--keyboards/miuni32/miuni32.c28
-rw-r--r--keyboards/miuni32/miuni32.h15
-rw-r--r--keyboards/miuni32/readme.md28
-rw-r--r--keyboards/miuni32/rules.mk67
-rw-r--r--keyboards/tv44/keymaps/tong92/Makefile21
-rw-r--r--keyboards/tv44/keymaps/tong92/config.h12
-rw-r--r--keyboards/tv44/keymaps/tong92/keymap.c138
-rw-r--r--keyboards/tv44/keymaps/tong92/readme.md52
-rw-r--r--quantum/quantum.c10
-rw-r--r--readme.md2
44 files changed, 1463 insertions, 127 deletions
diff --git a/doc/BUILD_GUIDE.md b/doc/BUILD_GUIDE.md
index 175019183..78cf00b91 100644
--- a/doc/BUILD_GUIDE.md
+++ b/doc/BUILD_GUIDE.md
@@ -96,7 +96,7 @@ The keyboard `config.h` is included only if the keymap one doesn't exist. The fo
96``` 96```
97#undef MY_SETTING 97#undef MY_SETTING
98#define MY_SETTING 4 98#define MY_SETTING 4
99```c 99```
100 100
101For a value of `4` for this imaginary setting. So we `undef` it first, then `define` it. 101For a value of `4` for this imaginary setting. So we `undef` it first, then `define` it.
102 102
diff --git a/keyboards/atomic/keymaps/twolayer.c b/keyboards/atomic/keymaps/twolayer.c
new file mode 100644
index 000000000..8ea045d80
--- /dev/null
+++ b/keyboards/atomic/keymaps/twolayer.c
@@ -0,0 +1,72 @@
1#include "atomic.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4
5/* QWERTY - MIT ENHANCED / GRID COMPATIBLE
6 * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
7 * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
8 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
9 * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
10 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
11 * | LCTRL1 | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
12 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
13 * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
14 * |--------+--------+--------+--------+--------+- 6.25u ---------+--------+--------+--------+--------+-----------------+--------+--------|
15 * | BRITE | LALT | FN | XXXXXX . SPACE | RCTRL | RALT | FN | LEFT | DOWN | RIGHT |
16 * '--------------------------------------------------------------------------------------------------------------------------------------'
17 */
18
19 [0] = { /* QWERTY */
20 { 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_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 },
22 { KC_LCTL, 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_ENT, KC_PGUP },
23 { 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_RSFT, KC_UP, KC_PGDN },
24 { M(0), KC_ALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT },
25 },
26
27
28/* FUNCTION
29 * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
30 * | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . |
31 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
32 * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR |
33 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
34 * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ |
35 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
36 * | NUM LK | | | | | | | | INSERT | END1 | HOME | XXXXXX . | MOUS U | WHEEL- |
37 * |--------+--------+--------+--------+--------+- 6.25 ------------+--------+--------+------+--------+-----------------+--------+--------|
38 * | | | FN | XXXXXX . MS BT1 | | | FN | MOUS L | MOUS D | MOUS R |
39 * '--------------------------------------------------------------------------------------------------------------------------------------'
40 */
41
42 [1] = { /* FUNCTION LAYER*/
43 { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
44 { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
45 { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
46 { KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_INSERT, KC_END, KC_HOME, ___T___, ___T___, KC_MS_U, KC_WH_D },
47 { _______, _______, MO(1), _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, MO(1), KC_MS_L, KC_MS_D, KC_MS_R },
48 },
49};
50
51const uint16_t PROGMEM fn_actions[] = {
52 [1] = ACTION_LAYER_MOMENTARY(1),
53 [2] = ACTION_LAYER_MOMENTARY(1),
54};
55
56const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
57{
58 // MACRODOWN only works in this function
59 switch(id) {
60 case 0:
61 if (record->event.pressed) {
62 register_code(KC_RSFT);
63 #ifdef BACKLIGHT_ENABLE
64 backlight_step();
65 #endif
66 } else {
67 unregister_code(KC_RSFT);
68 }
69 break;
70 }
71 return MACRO_NONE;
72};
diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
index e4f95c302..a3347de45 100644
--- a/keyboards/ergodox/ez/config.h
+++ b/keyboards/ergodox/ez/config.h
@@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49#define RGBLIGHT_SAT_STEP 255 49#define RGBLIGHT_SAT_STEP 255
50#define RGBLIGHT_VAL_STEP 12 50#define RGBLIGHT_VAL_STEP 12
51 51
52/* fix space cadet rollover issue */
53#define DISABLE_SPACE_CADET_ROLLOVER
54
52// #define RGB_MIDI 55// #define RGB_MIDI
53#define RGBW_BB_TWI 56#define RGBW_BB_TWI
54 57
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/Makefile b/keyboards/gh60/keymaps/dbroqua_7U/Makefile
new file mode 100644
index 000000000..da0f07d7d
--- /dev/null
+++ b/keyboards/gh60/keymaps/dbroqua_7U/Makefile
@@ -0,0 +1,111 @@
1#----------------------------------------------------------------------------
2# On command line:
3#
4# make all = Make software.
5#
6# make clean = Clean out built project files.
7#
8# make coff = Convert ELF to AVR COFF.
9#
10# make extcoff = Convert ELF to AVR Extended COFF.
11#
12# make program = Download the hex file to the device.
13# Please customize your programmer settings(PROGRAM_CMD)
14#
15# make teensy = Download the hex file to the device, using teensy_loader_cli.
16# (must have teensy_loader_cli installed).
17#
18# make dfu = Download the hex file to the device, using dfu-programmer (must
19# have dfu-programmer installed).
20#
21# make flip = Download the hex file to the device, using Atmel FLIP (must
22# have Atmel FLIP installed).
23#
24# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
25# (must have dfu-programmer installed).
26#
27# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
28# (must have Atmel FLIP installed).
29#
30# make debug = Start either simulavr or avarice as specified for debugging,
31# with avr-gdb or avr-insight as the front end for debugging.
32#
33# make filename.s = Just compile filename.c into the assembler code only.
34#
35# make filename.i = Create a preprocessed source file for use in submitting
36# bug reports to the GCC project.
37#
38# To rebuild project do "make clean" then "make all".
39#----------------------------------------------------------------------------
40
41# MCU name
42#MCU = at90usb1287
43MCU = atmega32u4
44
45# Processor frequency.
46# This will define a symbol, F_CPU, in all source code files equal to the
47# processor frequency in Hz. You can then use this symbol in your source code to
48# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
49# automatically to create a 32-bit value in your source code.
50#
51# This will be an integer division of F_USB below, as it is sourced by
52# F_USB after it has run through any CPU prescalers. Note that this value
53# does not *change* the processor frequency - it should merely be updated to
54# reflect the processor speed set externally so that the code can use accurate
55# software delays.
56F_CPU = 16000000
57
58
59#
60# LUFA specific
61#
62# Target architecture (see library "Board Types" documentation).
63ARCH = AVR8
64
65# Input clock frequency.
66# This will define a symbol, F_USB, in all source code files equal to the
67# input clock frequency (before any prescaling is performed) in Hz. This value may
68# differ from F_CPU if prescaling is used on the latter, and is required as the
69# raw input clock is fed directly to the PLL sections of the AVR for high speed
70# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
71# at the end, this will be done automatically to create a 32-bit value in your
72# source code.
73#
74# If no clock division is performed on the input clock inside the AVR (via the
75# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
76F_USB = $(F_CPU)
77
78# Interrupt driven control endpoint task(+60)
79OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
80
81
82# Boot Section Size in *bytes*
83# Teensy halfKay 512
84# Teensy++ halfKay 1024
85# Atmel DFU loader 4096
86# LUFA bootloader 4096
87# USBaspLoader 2048
88OPT_DEFS += -DBOOTLOADER_SIZE=4096
89
90
91# Build Options
92# comment out to disable the options.
93#
94BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
95MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
96EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
97# CONSOLE_ENABLE ?= yes # Console for debug(+400)
98# COMMAND_ENABLE ?= yes # Commands for debug and configuration
99KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
100# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
101SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
102NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
103# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
104# MIDI_ENABLE ?= YES # MIDI controls
105# UNICODE_ENABLE ?= YES # Unicode
106# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
107RGBLIGHT_ENABLE ?= no # Enable RGB Underglow
108
109ifndef QUANTUM_DIR
110 include ../../../../Makefile
111endif \ No newline at end of file
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/keymap.c b/keyboards/gh60/keymaps/dbroqua_7U/keymap.c
new file mode 100644
index 000000000..bebfe5af5
--- /dev/null
+++ b/keyboards/gh60/keymaps/dbroqua_7U/keymap.c
@@ -0,0 +1,88 @@
1#include "gh60.h"
2#include "action_layer.h"
3
4#define _DEFAULT 0
5#define _FN 1
6
7int esc_led = 0;
8
9// Fillers to make layering more clear
10#define ______ KC_TRNS
11
12const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13/* Qwerty gui/alt/space/alt/gui
14 * ,-----------------------------------------------------------------------------------------.
15 * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
16 * |-----------------------------------------------------------------------------------------+
17 * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
18 * |-----------------------------------------------------------------------------------------+
19 * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
20 * |-----------------------------------------------------------------------------------------+
21 * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN |
22 * |-----------------------------------------------------------------------------------------+
23 * |LGUI | LAlt | Space | RAlt |RGUI |
24 * `-----------------------------------------------------------------'
25 */
26 [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */
27 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_BSLS, KC_GRV, \
28 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_BSPC, \
29 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
30 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \
31 ______, KC_LGUI, KC_LALT, KC_SPC, ______, KC_RALT, KC_RGUI, ______ \
32 ),
33
34/* FN Layer
35 * ,-----------------------------------------------------------------------------------------.
36 * | Led | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
37 * |-----------------------------------------------------------------------------------------+
38 * | CAPS | | | | | | | | Psc | Slck| Paus| Up | | |
39 * |-----------------------------------------------------------------------------------------+
40 * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left|Right| |
41 * |-----------------------------------------------------------------------------------------+
42 * | | Prev| Play| Next| | | + | - | End |PgDn| Down| | |
43 * |-----------------------------------------------------------------------------------------+
44 * | | | | Stop | |
45 * `-----------------------------------------------------------------'
46 */
47 [_FN] = KEYMAP_HHKB( /* Layer 1 */
48 F(0), 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_INS, KC_DEL, \
49 KC_CAPS, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \
50 ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,______, \
51 ______, KC_MPRV, KC_MPLY, KC_MNXT, ______, ______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, ______, ______, \
52 ______, ______, ______, ______, ______, KC_MSTP, ______, ______ \
53 )
54};
55
56const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
57{
58 // MACRODOWN only works in this function
59 return MACRO_NONE;
60};
61
62enum function_id {
63 LED_TOGGLE
64};
65
66const uint16_t PROGMEM fn_actions[] = {
67 [0] = ACTION_FUNCTION(LED_TOGGLE)
68};
69
70void esc_led_toggle(void) {
71 if (esc_led == 0){
72 esc_led = 1;
73 gh60_esc_led_on();
74 } else {
75 esc_led = 0;
76 gh60_esc_led_off();
77 }
78}
79
80void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
81 switch (id) {
82 case LED_TOGGLE:
83 if (record->event.pressed) {
84 esc_led_toggle();
85 }
86 break;
87 }
88} \ No newline at end of file
diff --git a/keyboards/handwired/kbod/Makefile b/keyboards/handwired/kbod/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/handwired/kbod/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/handwired/kbod/config.h b/keyboards/handwired/kbod/config.h
new file mode 100644
index 000000000..f3d0c8bf2
--- /dev/null
+++ b/keyboards/handwired/kbod/config.h
@@ -0,0 +1,167 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
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#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER fudanchii
28#define PRODUCT kbod
29#define DESCRIPTION Keyboard of Disapproval
30
31/* key matrix size */
32#define MATRIX_ROWS 8
33#define MATRIX_COLS 8
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5, B6, B7, D6 }
46#define MATRIX_COL_PINS { D0, D1, F0, F1, F4, F5, F6, F7 }
47#define UNUSED_PINS
48
49/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
50#define DIODE_DIRECTION COL2ROW
51
52// #define BACKLIGHT_PIN B7
53// #define BACKLIGHT_BREATHING
54// #define BACKLIGHT_LEVELS 3
55
56
57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
58#define DEBOUNCING_DELAY 5
59
60/* define if matrix has ghost (lacks anti-ghosting diodes) */
61//#define MATRIX_HAS_GHOST
62
63/* number of backlight levels */
64
65/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
66#define LOCKING_SUPPORT_ENABLE
67/* Locking resynchronize hack */
68#define LOCKING_RESYNC_ENABLE
69
70/*
71 * Force NKRO
72 *
73 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
74 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
75 * makefile for this to work.)
76 *
77 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
78 * until the next keyboard reset.
79 *
80 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
81 * fully operational during normal computer usage.
82 *
83 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
84 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
85 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
86 * power-up.
87 *
88 */
89//#define FORCE_NKRO
90
91/*
92 * Magic Key Options
93 *
94 * Magic keys are hotkey commands that allow control over firmware functions of
95 * the keyboard. They are best used in combination with the HID Listen program,
96 * found here: https://www.pjrc.com/teensy/hid_listen.html
97 *
98 * The options below allow the magic key functionality to be changed. This is
99 * useful if your keyboard/keypad is missing keys and you want magic key support.
100 *
101 */
102
103/* key combination for magic key command */
104#define IS_COMMAND() ( \
105 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
106)
107
108/* control how magic key switches layers */
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
112
113/* override magic key keymap */
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
117//#define MAGIC_KEY_HELP1 H
118//#define MAGIC_KEY_HELP2 SLASH
119//#define MAGIC_KEY_DEBUG D
120//#define MAGIC_KEY_DEBUG_MATRIX X
121//#define MAGIC_KEY_DEBUG_KBD K
122//#define MAGIC_KEY_DEBUG_MOUSE M
123//#define MAGIC_KEY_VERSION V
124//#define MAGIC_KEY_STATUS S
125//#define MAGIC_KEY_CONSOLE C
126//#define MAGIC_KEY_LAYER0_ALT1 ESC
127//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
128//#define MAGIC_KEY_LAYER0 0
129//#define MAGIC_KEY_LAYER1 1
130//#define MAGIC_KEY_LAYER2 2
131//#define MAGIC_KEY_LAYER3 3
132//#define MAGIC_KEY_LAYER4 4
133//#define MAGIC_KEY_LAYER5 5
134//#define MAGIC_KEY_LAYER6 6
135//#define MAGIC_KEY_LAYER7 7
136//#define MAGIC_KEY_LAYER8 8
137//#define MAGIC_KEY_LAYER9 9
138//#define MAGIC_KEY_BOOTLOADER PAUSE
139//#define MAGIC_KEY_LOCK CAPS
140//#define MAGIC_KEY_EEPROM E
141//#define MAGIC_KEY_NKRO N
142//#define MAGIC_KEY_SLEEP_LED Z
143
144/*
145 * Feature disable options
146 * These options are also useful to firmware size reduction.
147 */
148
149/* disable debug print */
150//#define NO_DEBUG
151
152/* disable print */
153//#define NO_PRINT
154
155/* disable action features */
156//#define NO_ACTION_LAYER
157//#define NO_ACTION_TAPPING
158//#define NO_ACTION_ONESHOT
159//#define NO_ACTION_MACRO
160//#define NO_ACTION_FUNCTION
161
162#define PREVENT_STUCK_MODIFIERS
163
164#undef TAPPING_TOGGLE
165#define TAPPING_TOGGLE 2
166
167#endif
diff --git a/keyboards/handwired/kbod/kbod.c b/keyboards/handwired/kbod/kbod.c
new file mode 100644
index 000000000..9a12cae0d
--- /dev/null
+++ b/keyboards/handwired/kbod/kbod.c
@@ -0,0 +1,28 @@
1#include "kbod.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h
new file mode 100644
index 000000000..356063624
--- /dev/null
+++ b/keyboards/handwired/kbod/kbod.h
@@ -0,0 +1,21 @@
1#ifndef KBOD_H
2#define KBOD_H
3
4#include "quantum.h"
5
6#define KEYMAP( \
7 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
8 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
9 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
10 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
11 k40, k41, k42, k43, k44, k45, k46, k47 \
12) \
13{ \
14 { k00, k01, k02, k03, k04, k05, k06, k07 }, { k08, k09, k0A, k0B, k0C, k0D, KC_NO, KC_NO }, \
15 { k10, k11, k12, k13, k14, k15, k16, k17 }, { k18, k19, k1A, k1B, k1C, k1D, KC_NO, k3B }, \
16 { k20, k21, k22, k23, k24, k25, k26, k27 }, { k28, k29, k2A, k2B, k2C, k38, k39, k3A }, \
17 { k30, k31, k32, k33, k34, k35, k36, k37 }, \
18 { k40, k41, k42, k43, k44, k45, k46, k47 }, \
19}
20
21#endif
diff --git a/keyboards/handwired/kbod/keymaps/default/Makefile b/keyboards/handwired/kbod/keymaps/default/Makefile
new file mode 100644
index 000000000..0d9def930
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/handwired/kbod/keymaps/default/config.h b/keyboards/handwired/kbod/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
new file mode 100644
index 000000000..1386b742f
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -0,0 +1,104 @@
1#include "kbod.h"
2
3#define _____ KC_TRNS
4
5#define MODS_PRESSED(btn) (get_mods() & (MOD_BIT(KC_L##btn)|MOD_BIT(KC_R##btn)))
6
7#define SET_WHETHER(mask, btn1, btn2) \
8if (record->event.pressed) { \
9 if (mask) { \
10 add_key(btn2); \
11 send_keyboard_report(); \
12 } else { \
13 add_key(btn1); \
14 send_keyboard_report(); \
15 } \
16} else { \
17 if (mask) { \
18 del_key(btn2); \
19 send_keyboard_report(); \
20 } else { \
21 del_key(btn1); \
22 send_keyboard_report(); \
23 } \
24} \
25
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 KEYMAP( /* Base */
29 F(0), KC_1, KC_2, KC_3, F(1), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
30 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_BSLASH,
31 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOT, KC_ENTER,
32 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT,
33 TT(1), KC_LCTL, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
34 ),
35 KEYMAP( /* Cursor layer */
36 KC_GRAVE, 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,
37 TT(3), _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_INSERT,
38 TT(2), _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_HOME, _____,
39 _____, _____, _____, _____, _____, _____, _____, _____, KC_PGUP, KC_PGDN, KC_END, KC_UP,
40 _____, _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_RIGHT
41 ),
42 KEYMAP( /* Keypad layer */
43 TO(0), KC_1, KC_2, KC_3, F(1), KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC,
44 _____, _____, _____, _____, _____, _____, _____, KC_P4, KC_P5, KC_P6, _____, _____, _____, _____,
45 _____, _____, _____, _____, _____, _____, _____, KC_P1, KC_P2, KC_P3, _____, _____, _____,
46 _____, _____, _____, _____, _____, _____, _____, KC_P0, KC_PDOT, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
47 _____, _____, _____, _____, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3
48 ),
49 KEYMAP( /* Multimedia layer */
50 TO(0), _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _____,
51 _____, _____, KC_WAKE, _____, _____, _____, _____, _____, _____, _____, KC_MSTP, KC_MPRV, KC_MNXT, _____,
52 _____, _____, KC_SLEP, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____,
53 _____, _____, KC_PWR, _____, _____, _____, _____, _____, _____, KC_MS_BTN1, KC_MS_WH_UP, KC_MS_BTN2,
54 _____, _____, _____, KC_MPLY, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_MS_BTN3
55 ),
56};
57
58const uint16_t PROGMEM fn_actions[] = {
59 [0] = ACTION_FUNCTION(0),
60 [1] = ACTION_FUNCTION(1),
61};
62
63
64void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
65 static uint8_t shift_esc_mask;
66 static uint8_t alt_mask;
67 switch (id) {
68 case 0:
69 shift_esc_mask = MODS_PRESSED(SHIFT);
70 SET_WHETHER(shift_esc_mask, KC_ESC, KC_GRAVE);
71 break;
72 case 1:
73 alt_mask = MODS_PRESSED(ALT);
74 SET_WHETHER(alt_mask, KC_4, KC_F4);
75 break;
76 }
77}
78
79const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
80{
81 return MACRO_NONE;
82};
83
84void led_set_user(uint8_t usb_led) {
85 if (usb_led & _BV(USB_LED_CAPS_LOCK)) {
86 PORTB |= _BV(PB0);
87 } else {
88 PORTB &= ~_BV(PB0);
89 }
90}
91
92void matrix_init_user(void) {
93 DDRB |= _BV(PB0);
94 DDRC |= _BV(PC7);
95}
96
97void matrix_scan_user(void) {
98 uint8_t layer = biton32(layer_state);
99 if (layer) {
100 PORTC |= _BV(PC7);
101 } else {
102 PORTC &= ~_BV(PC7);
103 }
104} \ No newline at end of file
diff --git a/keyboards/handwired/kbod/keymaps/default/readme.md b/keyboards/handwired/kbod/keymaps/default/readme.md
new file mode 100644
index 000000000..35c22ec00
--- /dev/null
+++ b/keyboards/handwired/kbod/keymaps/default/readme.md
@@ -0,0 +1,5 @@
1# The default keymap for kbod
2
3This is the default keymap for kbod,
4
5it consists of a base layer with QWERTY layout, a momentary cursor-layer, and mouse-keys and multimedia layers. \ No newline at end of file
diff --git a/keyboards/handwired/kbod/readme.md b/keyboards/handwired/kbod/readme.md
new file mode 100644
index 000000000..67bf711be
--- /dev/null
+++ b/keyboards/handwired/kbod/readme.md
@@ -0,0 +1,21 @@
1KBOD keyboard firmware
2======================
3
4KBOD is a 60% Keyboard kit, hand-wired, with Arduino Micro as its controller. It's utilize 8x8 matrix and has layout similar to GH-60
5
6## Quantum MK Firmware
7
8For the full Quantum feature list, see [the parent readme](/).
9
10## Building
11
12Download or clone the whole firmware and use ```make handwired-kbod-default``` to generate the .hex file. You may flash it with avrdude
13
14## Flashing
15Something along this line:
16
17```
18avrdude -p m32u4 -c avr109 -P <COM PORT> -C <avrdude conf file> -e -u flash:w:handwired_kbod_default.hex
19```
20
21[More info](https://github.com/fudanchii/keyboard_of_disapproval) \ No newline at end of file
diff --git a/keyboards/handwired/kbod/rules.mk b/keyboards/handwired/kbod/rules.mk
new file mode 100644
index 000000000..4fcd147a9
--- /dev/null
+++ b/keyboards/handwired/kbod/rules.mk
@@ -0,0 +1,68 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
57CONSOLE_ENABLE ?= no # Console for debug(+400)
58COMMAND_ENABLE ?= no # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE ?= no # USB Nkey Rollover
63BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE ?= no # MIDI controls
65UNICODE_ENABLE ?= no # Unicode
66BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE ?= no # Audio output on port C6
68FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
diff --git a/keyboards/lets_split/keymaps/OLED_sample/config.h b/keyboards/lets_split/keymaps/OLED_sample/config.h
index 353ea368c..8389ba111 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/config.h
+++ b/keyboards/lets_split/keymaps/OLED_sample/config.h
@@ -27,19 +27,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
27#define TAPPING_FORCE_HOLD 27#define TAPPING_FORCE_HOLD
28#define TAPPING_TERM 100 28#define TAPPING_TERM 100
29 29
30#ifdef SUBPROJECT_rev1
31 #include "../../rev1/config.h"
32#endif
33#ifdef SUBPROJECT_rev2
34 #include "../../rev2/config.h"
35#endif
36
30#undef RGBLED_NUM 37#undef RGBLED_NUM
31#define RGBLIGHT_ANIMATIONS 38#define RGBLIGHT_ANIMATIONS
32#define RGBLED_NUM 6 39#define RGBLED_NUM 6
33#define RGBLIGHT_HUE_STEP 10 40#define RGBLIGHT_HUE_STEP 10
34#define RGBLIGHT_SAT_STEP 17 41#define RGBLIGHT_SAT_STEP 17
35#define RGBLIGHT_VAL_STEP 17 42#define RGBLIGHT_VAL_STEP 17
36
37
38
39
40#ifdef SUBPROJECT_rev1
41 #include "../../rev1/config.h"
42#endif
43#ifdef SUBPROJECT_rev2
44 #include "../../rev2/config.h"
45#endif \ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/OLED_sample/keymap.c b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
index 072b825ab..493ebcd3f 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/keymap.c
+++ b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
@@ -6,6 +6,9 @@
6#ifdef AUDIO_ENABLE 6#ifdef AUDIO_ENABLE
7 #include "audio.h" 7 #include "audio.h"
8#endif 8#endif
9#ifdef SSD1306OLED
10 #include "ssd1306.h"
11#endif
9 12
10extern keymap_config_t keymap_config; 13extern keymap_config_t keymap_config;
11 14
diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h
index 9c8c6d7f4..e315d8c0c 100644
--- a/keyboards/lets_split/keymaps/hexwire/config.h
+++ b/keyboards/lets_split/keymaps/hexwire/config.h
@@ -20,51 +20,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20 20
21#define TAPPING_TERM 150 21#define TAPPING_TERM 150
22 22
23#undef RGBLED_NUM
24#define RGBLIGHT_ANIMATIONS
25#define RGBLED_NUM 8
26#define RGBLIGHT_HUE_STEP 8
27#define RGBLIGHT_SAT_STEP 8
28#define RGBLIGHT_VAL_STEP 8
29
30#ifdef SUBPROJECT_rev1 23#ifdef SUBPROJECT_rev1
31 #include "../../rev1/config.h" 24 #include "../../rev1/config.h"
32 #define COMPACT_KEYMAP( \
33 k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
34 k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
35 k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
36 k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
37 ) \
38 { \
39 { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
40 { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
41 { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
42 { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
43 { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
44 { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
45 { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
46 { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
47 }
48#endif 25#endif
49#ifdef SUBPROJECT_rev2 26#ifdef SUBPROJECT_rev2
50 #include "../../rev2/config.h" 27 #include "../../rev2/config.h"
51 #define COMPACT_KEYMAP( \
52 k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
53 k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
54 k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
55 k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
56 ) \
57 { \
58 { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
59 { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
60 { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
61 { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
62 { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
63 { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
64 { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
65 { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
66 }
67#endif
68#ifdef SUBPROJECT_rev2fliphalf
69 #include "../../rev2fliphalf/config.h"
70#endif 28#endif
29
30#undef RGBLED_NUM
31#define RGBLIGHT_ANIMATIONS
32#define RGBLED_NUM 8
33#define RGBLIGHT_HUE_STEP 8
34#define RGBLIGHT_SAT_STEP 8
35#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c
index f8370490d..fcf3cde75 100644
--- a/keyboards/lets_split/keymaps/hexwire/keymap.c
+++ b/keyboards/lets_split/keymaps/hexwire/keymap.c
@@ -39,7 +39,7 @@ enum custom_keycodes {
39 39
40const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 40const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41 41
42 [_QWERTY] = COMPACT_KEYMAP( 42 [_QWERTY] = KC_KEYMAP(
43 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 43 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
44 TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, 44 TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS,
45 //|----+----+----+----+----+----| |----+----+----+----+----+----| 45 //|----+----+----+----+----+----| |----+----+----+----+----+----|
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
51 //`----+----+----+----+----+----' `----+----+----+----+----+----' 51 //`----+----+----+----+----+----' `----+----+----+----+----+----'
52 ), 52 ),
53 53
54 [_COLEMAK] = COMPACT_KEYMAP( 54 [_COLEMAK] = KC_KEYMAP(
55 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 55 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
56 TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, 56 TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS,
57 //|----+----+----+----+----+----| |----+----+----+----+----+----| 57 //|----+----+----+----+----+----| |----+----+----+----+----+----|
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 //`----+----+----+----+----+----' `----+----+----+----+----+----' 63 //`----+----+----+----+----+----' `----+----+----+----+----+----'
64 ), 64 ),
65 65
66 [_DVORAK] = COMPACT_KEYMAP( 66 [_DVORAK] = KC_KEYMAP(
67 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 67 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
68 TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, 68 TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS,
69 //|----+----+----+----+----+----| |----+----+----+----+----+----| 69 //|----+----+----+----+----+----| |----+----+----+----+----+----|
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
75 //`----+----+----+----+----+----' `----+----+----+----+----+----' 75 //`----+----+----+----+----+----' `----+----+----+----+----+----'
76 ), 76 ),
77 77
78 [_LOWER] = COMPACT_KEYMAP( 78 [_LOWER] = KC_KEYMAP(
79 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 79 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
80 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , 80 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
81 //|----+----+----+----+----+----| |----+----+----+----+----+----| 81 //|----+----+----+----+----+----| |----+----+----+----+----+----|
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
87 //`----+----+----+----+----+----' `----+----+----+----+----+----' 87 //`----+----+----+----+----+----' `----+----+----+----+----+----'
88 ), 88 ),
89 89
90 [_RAISE] = COMPACT_KEYMAP( 90 [_RAISE] = KC_KEYMAP(
91 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 91 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
92 ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , 92 ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
93 //|----+----+----+----+----+----| |----+----+----+----+----+----| 93 //|----+----+----+----+----+----| |----+----+----+----+----+----|
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99 //`----+----+----+----+----+----' `----+----+----+----+----+----' 99 //`----+----+----+----+----+----' `----+----+----+----+----+----'
100 ), 100 ),
101 101
102 [_FN3] = COMPACT_KEYMAP( 102 [_FN3] = KC_KEYMAP(
103 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 103 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
104 F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , 104 F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,
105 //|----+----+----+----+----+----| |----+----+----+----+----+----| 105 //|----+----+----+----+----+----| |----+----+----+----+----+----|
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index 0de308c7a..1892bf2cb 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -11,6 +11,20 @@
11 #include "rev2fliphalf.h" 11 #include "rev2fliphalf.h"
12#endif 12#endif
13 13
14// Used to create a keymap using only KC_ prefixed keys
15#define KC_KEYMAP( \
16 L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
17 L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
18 L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
19 L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
20 ) \
21 KEYMAP( \
22 KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
23 KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
24 KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
25 KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
26 )
27
14#include "quantum.h" 28#include "quantum.h"
15 29
16#endif \ No newline at end of file 30#endif \ No newline at end of file
diff --git a/keyboards/lets_split/readme.md b/keyboards/lets_split/readme.md
index ecce3f415..7e5a54602 100644
--- a/keyboards/lets_split/readme.md
+++ b/keyboards/lets_split/readme.md
@@ -7,6 +7,12 @@ Split keyboard firmware for Arduino Pro Micro or other ATmega32u4
7based boards. 7based boards.
8 8
9 9
10## Build Guide
11
12A build guide for putting together the Let's Split v2 can be found here: [An Overly Verbose Guide to Building a Let's Split Keyboard](https://github.com/nicinabox/lets-split-guide)
13
14There is additional information there about flashing and adding RGB underglow.
15
10## First Time Setup 16## First Time Setup
11 17
12Download or clone the whole firmware and navigate to the keyboards/lets_split directory. Once your dev env is setup, you'll be able to generate the default .hex using: 18Download or clone the whole firmware and navigate to the keyboards/lets_split directory. Once your dev env is setup, you'll be able to generate the default .hex using:
@@ -62,8 +68,7 @@ Apart from diodes and key switches for the keyboard matrix in each half, you
62will need: 68will need:
63 69
64* 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each. 70* 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each.
65* 2 TRS sockets 71* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
66* 1 TRS cable.
67 72
68Alternatively, you can use any sort of cable and socket that has at least 3 73Alternatively, you can use any sort of cable and socket that has at least 3
69wires. If you want to use I2C to communicate between halves, you will need a 74wires. If you want to use I2C to communicate between halves, you will need a
@@ -77,7 +82,7 @@ A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and t
77Wiring 82Wiring
78------ 83------
79 84
80The 3 wires of the TRS cable need to connect GND, VCC, and digital pin 3 (i.e. 85The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and digital pin 3 (i.e.
81PD0 on the ATmega32u4) between the two Pro Micros. 86PD0 on the ATmega32u4) between the two Pro Micros.
82 87
83Then wire your key matrix to any of the remaining 17 IO pins of the pro micro 88Then wire your key matrix to any of the remaining 17 IO pins of the pro micro
diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
index 4667c9fb0..6bf9f0f03 100644
--- a/keyboards/lets_split/rev1/rev1.h
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -9,20 +9,20 @@
9//void promicro_bootloader_jmp(bool program); 9//void promicro_bootloader_jmp(bool program);
10 10
11#define KEYMAP( \ 11#define KEYMAP( \
12 k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ 12 L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
13 k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ 13 L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
14 k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ 14 L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
15 k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ 15 L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
16 ) \ 16 ) \
17 { \ 17 { \
18 { k00, k01, k02, k03, k04, k05 }, \ 18 { L00, L01, L02, L03, L04, L05 }, \
19 { k10, k11, k12, k13, k14, k15 }, \ 19 { L10, L11, L12, L13, L14, L15 }, \
20 { k20, k21, k22, k23, k24, k25 }, \ 20 { L20, L21, L22, L23, L24, L25 }, \
21 { k30, k31, k32, k33, k34, k35 }, \ 21 { L30, L31, L32, L33, L34, L35 }, \
22 { k40, k41, k42, k43, k44, k45 }, \ 22 { R00, R01, R02, R03, R04, R05 }, \
23 { k50, k51, k52, k53, k54, k55 }, \ 23 { R10, R11, R12, R13, R14, R15 }, \
24 { k60, k61, k62, k63, k64, k65 }, \ 24 { R20, R21, R22, R23, R24, R25 }, \
25 { k70, k71, k72, k73, k74, k75 } \ 25 { R30, R31, R32, R33, R34, R35 } \
26 } 26 }
27 27
28#endif \ No newline at end of file 28#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
index 8bfa171d0..20a4c6be1 100644
--- a/keyboards/lets_split/rev2/rev2.c
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -37,4 +37,3 @@ void shutdown_user(void) {
37 stop_all_notes(); 37 stop_all_notes();
38 #endif 38 #endif
39} 39}
40
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
index 054731366..0c4e8e7de 100644
--- a/keyboards/lets_split/rev2/rev2.h
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -10,62 +10,51 @@
10#ifdef USE_I2C 10#ifdef USE_I2C
11#include <stddef.h> 11#include <stddef.h>
12#ifdef __AVR__ 12#ifdef __AVR__
13#include <avr/io.h> 13 #include <avr/io.h>
14#include <avr/interrupt.h> 14 #include <avr/interrupt.h>
15#endif
16#ifdef SSD1306OLED
17extern bool iota_gfx_init(void);
18extern void iota_gfx_task(void);
19extern bool iota_gfx_off(void);
20extern bool iota_gfx_on(void);
21extern void iota_gfx_flush(void);
22extern void iota_gfx_write_char(uint8_t c);
23extern void iota_gfx_write(const char *data);
24extern void iota_gfx_write_P(const char *data);
25extern void iota_gfx_clear_screen(void);
26#endif 15#endif
27#endif 16#endif
28 17
29//void promicro_bootloader_jmp(bool program); 18//void promicro_bootloader_jmp(bool program);
30 19
31#ifndef FLIP_HALF 20#ifndef FLIP_HALF
32//Standard Keymap 21// Standard Keymap
22// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
33#define KEYMAP( \ 23#define KEYMAP( \
34 k40, k41, k42, k43, k44, k45, k05, k04, k03, k02, k01, k00, \ 24 L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
35 k50, k51, k52, k53, k54, k55, k15, k14, k13, k12, k11, k10, \ 25 L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
36 k60, k61, k62, k63, k64, k65, k25, k24, k23, k22, k21, k20, \ 26 L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
37 k70, k71, k72, k73, k74, k75, k35, k34, k33, k32, k31, k30 \ 27 L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
38 ) \ 28 ) \
39 { \ 29 { \
40 { k45, k44, k43, k42, k41, k40 }, \ 30 { L00, L01, L02, L03, L04, L05 }, \
41 { k55, k54, k53, k52, k51, k50 }, \ 31 { L10, L11, L12, L13, L14, L15 }, \
42 { k65, k64, k63, k62, k61, k60 }, \ 32 { L20, L21, L22, L23, L24, L25 }, \
43 { k75, k74, k73, k72, k71, k70 }, \ 33 { L30, L31, L32, L33, L34, L35 }, \
44 { k00, k01, k02, k03, k04, k05 }, \ 34 { R05, R04, R03, R02, R01, R00 }, \
45 { k10, k11, k12, k13, k14, k15 }, \ 35 { R15, R14, R13, R12, R11, R10 }, \
46 { k20, k21, k22, k23, k24, k25 }, \ 36 { R25, R24, R23, R22, R21, R20 }, \
47 { k30, k31, k32, k33, k34, k35 } \ 37 { R35, R34, R33, R32, R31, R30 } \
48 } 38 }
49
50#else 39#else
51// Keymap with one side flipped 40// Keymap with right side flipped
41// (TRRS jack on both halves are to the right)
52#define KEYMAP( \ 42#define KEYMAP( \
53 k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ 43 L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
54 k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ 44 L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
55 k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ 45 L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
56 k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ 46 L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
57 ) \ 47 ) \
58 { \ 48 { \
59 { k00, k01, k02, k03, k04, k05 }, \ 49 { L00, L01, L02, L03, L04, L05 }, \
60 { k10, k11, k12, k13, k14, k15 }, \ 50 { L10, L11, L12, L13, L14, L15 }, \
61 { k20, k21, k22, k23, k24, k25 }, \ 51 { L20, L21, L22, L23, L24, L25 }, \
62 { k30, k31, k32, k33, k34, k35 }, \ 52 { L30, L31, L32, L33, L34, L35 }, \
63 { k45, k44, k43, k42, k41, k40 }, \ 53 { R00, R01, R02, R03, R04, R05 }, \
64 { k55, k54, k53, k52, k51, k50 }, \ 54 { R10, R11, R12, R13, R14, R15 }, \
65 { k65, k64, k63, k62, k61, k60 }, \ 55 { R20, R21, R22, R23, R24, R25 }, \
66 { k75, k74, k73, k72, k71, k70 } \ 56 { R30, R31, R32, R33, R34, R35 } \
67 } 57 }
68#endif 58#endif
69 59
70 60#endif
71#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index ff159e0f0..79860ea35 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -1,7 +1,7 @@
1SRC += matrix.c \ 1SRC += matrix.c \
2 i2c.c \ 2 i2c.c \
3 split_util.c \ 3 split_util.c \
4 serial.c\ 4 serial.c \
5 ssd1306.c 5 ssd1306.c
6 6
7# MCU name 7# MCU name
@@ -74,3 +74,15 @@ USE_I2C ?= yes
74SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend 74SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
75 75
76CUSTOM_MATRIX = yes 76CUSTOM_MATRIX = yes
77
78avrdude: build
79 ls /dev/tty* > /tmp/1; \
80 echo "Reset your Pro Micro now"; \
81 while [[ -z $$USB ]]; do \
82 sleep 1; \
83 ls /dev/tty* > /tmp/2; \
84 USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
85 done; \
86 avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
87
88.PHONY: avrdude
diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c
index 46586fbc0..39639c3b4 100644
--- a/keyboards/lets_split/split_util.c
+++ b/keyboards/lets_split/split_util.c
@@ -21,7 +21,7 @@ static void setup_handedness(void) {
21 #ifdef EE_HANDS 21 #ifdef EE_HANDS
22 isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); 22 isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
23 #else 23 #else
24 // I2c_MASTER_RIGHT ish deprecate use MASTER_RIGHT instead since this works for both serial and i2c: 24 // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
25 #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) 25 #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
26 isLeftHand = !has_usb(); 26 isLeftHand = !has_usb();
27 #else 27 #else
diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c
index 3c7816bb3..5c6dff27f 100644
--- a/keyboards/lets_split/ssd1306.c
+++ b/keyboards/lets_split/ssd1306.c
@@ -1,8 +1,9 @@
1#ifdef SSD1306OLED
2
3#include "ssd1306.h"
1#include "config.h" 4#include "config.h"
2#include "i2c.h" 5#include "i2c.h"
3#include <stdbool.h>
4#include <string.h> 6#include <string.h>
5#include <stdio.h>
6#include "print.h" 7#include "print.h"
7#include "lets_split.h" 8#include "lets_split.h"
8#include "common/glcdfont.c" 9#include "common/glcdfont.c"
@@ -466,3 +467,4 @@ void iota_gfx_task(void) {
466 iota_gfx_off(); 467 iota_gfx_off();
467 } 468 }
468} 469}
470#endif
diff --git a/keyboards/lets_split/ssd1306.h b/keyboards/lets_split/ssd1306.h
new file mode 100644
index 000000000..b0c74f987
--- /dev/null
+++ b/keyboards/lets_split/ssd1306.h
@@ -0,0 +1,17 @@
1#ifndef SSD1306_H
2#define SSD1306_H
3
4#include <stdbool.h>
5#include <stdio.h>
6
7bool iota_gfx_init(void);
8void iota_gfx_task(void);
9bool iota_gfx_off(void);
10bool iota_gfx_on(void);
11void iota_gfx_flush(void);
12void iota_gfx_write_char(uint8_t c);
13void iota_gfx_write(const char *data);
14void iota_gfx_write_P(const char *data);
15void iota_gfx_clear_screen(void);
16
17#endif
diff --git a/keyboards/miuni32/Makefile b/keyboards/miuni32/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/miuni32/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif
diff --git a/keyboards/miuni32/config.h b/keyboards/miuni32/config.h
new file mode 100644
index 000000000..4f9b68551
--- /dev/null
+++ b/keyboards/miuni32/config.h
@@ -0,0 +1,170 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
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#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Bigtuna.io
28#define PRODUCT Miuni32
29#define DESCRIPTION A custom keyboard for writers
30
31/* key matrix size */
32#define MATRIX_ROWS 3
33#define MATRIX_COLS 11
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45#define MATRIX_ROW_PINS { F0, F4, D7}
46#define MATRIX_COL_PINS { C6, C7, F7, F6, F1, E6, B7, B3, B2, B1, B0}
47#define UNUSED_PINS
48
49/* COL2ROW or ROW2COL */
50#define DIODE_DIRECTION ROW2COL
51
52// #define BACKLIGHT_PIN B7
53// #define BACKLIGHT_BREATHING
54// #define BACKLIGHT_LEVELS 3
55
56
57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
58#define DEBOUNCING_DELAY 5
59
60/* define if matrix has ghost (lacks anti-ghosting diodes) */
61//#define MATRIX_HAS_GHOST
62
63/* number of backlight levels */
64
65/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
66#define LOCKING_SUPPORT_ENABLE
67/* Locking resynchronize hack */
68#define LOCKING_RESYNC_ENABLE
69
70/*
71 * Force NKRO
72 *
73 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
74 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
75 * makefile for this to work.)
76 *
77 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
78 * until the next keyboard reset.
79 *
80 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
81 * fully operational during normal computer usage.
82 *
83 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
84 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
85 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
86 * power-up.
87 *
88 */
89//#define FORCE_NKRO
90
91/*
92 * Magic Key Options
93 *
94 * Magic keys are hotkey commands that allow control over firmware functions of
95 * the keyboard. They are best used in combination with the HID Listen program,
96 * found here: https://www.pjrc.com/teensy/hid_listen.html
97 *
98 * The options below allow the magic key functionality to be changed. This is
99 * useful if your keyboard/keypad is missing keys and you want magic key support.
100 *
101 */
102
103/* key combination for magic key command */
104#define IS_COMMAND() ( \
105 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
106)
107
108/* control how magic key switches layers */
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
112
113/* override magic key keymap */
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
117//#define MAGIC_KEY_HELP1 H
118//#define MAGIC_KEY_HELP2 SLASH
119//#define MAGIC_KEY_DEBUG D
120//#define MAGIC_KEY_DEBUG_MATRIX X
121//#define MAGIC_KEY_DEBUG_KBD K
122//#define MAGIC_KEY_DEBUG_MOUSE M
123//#define MAGIC_KEY_VERSION V
124//#define MAGIC_KEY_STATUS S
125//#define MAGIC_KEY_CONSOLE C
126//#define MAGIC_KEY_LAYER0_ALT1 ESC
127//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
128//#define MAGIC_KEY_LAYER0 0
129//#define MAGIC_KEY_LAYER1 1
130//#define MAGIC_KEY_LAYER2 2
131//#define MAGIC_KEY_LAYER3 3
132//#define MAGIC_KEY_LAYER4 4
133//#define MAGIC_KEY_LAYER5 5
134//#define MAGIC_KEY_LAYER6 6
135//#define MAGIC_KEY_LAYER7 7
136//#define MAGIC_KEY_LAYER8 8
137//#define MAGIC_KEY_LAYER9 9
138//#define MAGIC_KEY_BOOTLOADER PAUSE
139//#define MAGIC_KEY_LOCK CAPS
140//#define MAGIC_KEY_EEPROM E
141//#define MAGIC_KEY_NKRO N
142//#define MAGIC_KEY_SLEEP_LED Z
143
144/*
145 * Feature disable options
146 * These options are also useful to firmware size reduction.
147 */
148
149/* disable debug print */
150//#define NO_DEBUG
151
152/* disable print */
153//#define NO_PRINT
154
155/* disable action features */
156//#define NO_ACTION_LAYER
157//#define NO_ACTION_TAPPING
158//#define NO_ACTION_ONESHOT
159//#define NO_ACTION_MACRO
160//#define NO_ACTION_FUNCTION
161
162#define RGBLIGHT_TIMER
163#define RGB_DI_PIN D0 // The pin your RGB strip is wired to
164#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio)
165#define RGBLED_NUM 7 // Number of LEDs
166#define RGBLIGHT_HUE_STEP 10
167#define RGBLIGHT_SAT_STEP 17
168#define RGBLIGHT_VAL_STEP 17
169
170#endif
diff --git a/keyboards/miuni32/keymaps/default/Makefile b/keyboards/miuni32/keymaps/default/Makefile
new file mode 100644
index 000000000..88a3aea74
--- /dev/null
+++ b/keyboards/miuni32/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/miuni32/keymaps/default/config.h b/keyboards/miuni32/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/miuni32/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/miuni32/keymaps/default/keymap.c b/keyboards/miuni32/keymaps/default/keymap.c
new file mode 100644
index 000000000..15e2fa45c
--- /dev/null
+++ b/keyboards/miuni32/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
1#include "miuni32.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4[0] ={
5 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
6 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_RSFT, KC_ENT},
7 {KC_Z, KC_X, KC_C, KC_V, KC_V, KC_SPC, KC_B, KC_N, KC_M , MO(1), KC_RCTL}
8 },
9[1] ={
10 {KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL},
11 {KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_TRNS},
12 {RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, KC_TRNS, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, RGB_MOD},
13 }
14};
15const uint16_t PROGMEM fn_actions[] = {
16
17};
18
19const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
20{
21 // MACRODOWN only works in this function
22 switch(id) {
23 case 0:
24 if (record->event.pressed) {
25 register_code(KC_RSFT);
26 } else {
27 unregister_code(KC_RSFT);
28 }
29 break;
30 }
31 return MACRO_NONE;
32};
33
34
35void matrix_init_user(void) {
36
37}
38
39void matrix_scan_user(void) {
40
41}
42
43bool process_record_user(uint16_t keycode, keyrecord_t *record) {
44 return true;
45}
46
47void led_set_user(uint8_t usb_led) {
48
49}
diff --git a/keyboards/miuni32/keymaps/default/readme.md b/keyboards/miuni32/keymaps/default/readme.md
new file mode 100644
index 000000000..4cff8ef5a
--- /dev/null
+++ b/keyboards/miuni32/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for miuni32 \ No newline at end of file
diff --git a/keyboards/miuni32/miuni32.c b/keyboards/miuni32/miuni32.c
new file mode 100644
index 000000000..1c1983a56
--- /dev/null
+++ b/keyboards/miuni32/miuni32.c
@@ -0,0 +1,28 @@
1#include "miuni32.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/miuni32/miuni32.h b/keyboards/miuni32/miuni32.h
new file mode 100644
index 000000000..eecb17f81
--- /dev/null
+++ b/keyboards/miuni32/miuni32.h
@@ -0,0 +1,15 @@
1#ifndef MIUNI32_H
2#define MIUNI32_H
3
4#include "quantum.h"
5
6#define KEYMAP( \
7 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
8 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
9 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A ) { \
10 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \
11 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \
12 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A } \
13}
14
15#endif
diff --git a/keyboards/miuni32/readme.md b/keyboards/miuni32/readme.md
new file mode 100644
index 000000000..36696ddbc
--- /dev/null
+++ b/keyboards/miuni32/readme.md
@@ -0,0 +1,28 @@
1miuni32 keyboard firmware
2======================
3
4## Quantum MK Firmware
5
6For the full Quantum feature list, see [the parent readme](/).
7
8## Building
9
10Download or clone the whole firmware and navigate to the keyboards/miuni32 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
11
12Depending on which keymap you would like to use, you will have to compile slightly differently.
13
14### Default
15
16To build with the default keymap, simply run `make default`.
17
18### Other Keymaps
19
20Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
21
22To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
23
24```
25$ make [default|jack|<name>]
26```
27
28Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboards/miuni32/rules.mk b/keyboards/miuni32/rules.mk
new file mode 100644
index 000000000..ef8daf3ca
--- /dev/null
+++ b/keyboards/miuni32/rules.mk
@@ -0,0 +1,67 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
57CONSOLE_ENABLE ?= yes # Console for debug(+400)
58COMMAND_ENABLE ?= yes # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE ?= no # USB Nkey Rollover
63BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE ?= no # MIDI controls
65UNICODE_ENABLE ?= no # Unicode
66BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/tv44/keymaps/tong92/Makefile b/keyboards/tv44/keymaps/tong92/Makefile
new file mode 100644
index 000000000..e60e3c5c5
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = no # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/tv44/keymaps/tong92/config.h b/keyboards/tv44/keymaps/tong92/config.h
new file mode 100644
index 000000000..be959a823
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/config.h
@@ -0,0 +1,12 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7#ifdef BACKLIGHT_ENABLE
8 #define BACKLIGHT_PIN B2
9 #define BACKLIGHT_LEVELS 7
10#endif
11
12#endif
diff --git a/keyboards/tv44/keymaps/tong92/keymap.c b/keyboards/tv44/keymaps/tong92/keymap.c
new file mode 100644
index 000000000..4a16b3554
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/keymap.c
@@ -0,0 +1,138 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3//Author: tong92 <tong92power@gmail.com>
4
5#include "tv44.h"
6#include "action_layer.h"
7#include "eeconfig.h"
8#ifdef BACKLIGHT_ENABLE
9 #include "backlight.h"
10#endif
11
12// Fillers to make layering more clear
13#define _______ KC_TRNS
14#define LOWER F(1)
15#define RAISE F(2)
16#define FTN MO(4)
17#define MOUSE M(10)
18#define GO_DEFT M(99)
19#define XXXXXXX KC_NO
20
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22
23/* Qwerty
24 * ,--------------------------------------------------------------------------.
25 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
26 * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
27 * | Ctrl | A | S | D | F | G | H | J | K | L | ; | Enter|
28 * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
29 * | Shift | Z | X | C | V | B | N | M | , | . | / |Shift|
30 * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
31 * | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
32 * `--------------------------------------------------------------------------'
33 */
34[0] = {
35{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
36{KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT},
37{KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT },
38{FTN ,KC_LGUI,KC_LALT,LOWER,XXXXXXX,XXXXXXX,XXXXXXX,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT}
39},
40/* LOWER
41 * ,--------------------------------------------------------------------------.
42 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
43 * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
44 * | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ |
45 * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
46 * | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
47 * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
48 * | | | | | | END | LEFT| Down|RIGHT|
49 * `--------------------------------------------------------------------------'
50 */
51[1] = {
52{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______},
53{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS },
54{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
55{XXXXXXX,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
56},
57/* RAISE
58 * ,--------------------------------------------------------------------------.
59 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
60 * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
61 * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
62 * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
63 * | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
64 * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
65 * | | | | | | END | LEFT| Down|RIGHT|
66 * `--------------------------------------------------------------------------'
67 */
68[2] ={
69{KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______ },
70{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE },
71{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
72{XXXXXXX,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
73},
74/* FTN
75 * ,--------------------------------------------------------------------------.
76 * | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
77 * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
78 * | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
79 * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
80 * | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | Ctrl|
81 * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
82 * | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
83 * `--------------------------------------------------------------------------'
84 */
85[4] = {
86{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT},
87{_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX},
88{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,KC_RCTL},
89{_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LCTL(LALT(KC_DELT)),XXXXXXX,XXXXXXX,XXXXXXX,LGUI(LCTL(KC_F4)),MOUSE,XXXXXXX,XXXXXXX,M(0)}
90},
91/* MOUSE
92 * ,--------------------------------------------------------------------------.
93 * | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
94 * |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
95 * | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
96 * |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
97 * | | | | | | | |M_AC0|M_AC1|M_AC2| | |
98 * |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
99 * | | | | GO_DEFAULT | GO_DEFAULT | | | | |
100 * `--------------------------------------------------------------------------'
101 */
102[10] ={
103{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET},
104{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX},
105{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX},
106{XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX}
107}
108};
109
110const uint16_t PROGMEM fn_actions[] = {
111 [1] = ACTION_LAYER_TAP_KEY(1, KC_SPC),
112 [2] = ACTION_LAYER_TAP_KEY(2, KC_SPC)
113};
114
115const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
116{
117 switch(id) {
118 case 0:
119 if (record->event.pressed) {
120 #ifdef BACKLIGHT_ENABLE
121 backlight_step();
122 #endif
123 }
124 break;
125 case 10:
126 if (record->event.pressed) {
127 layer_on(10);
128 }
129 break;
130 case 99:
131 if (record->event.pressed) {
132 layer_off(10);
133 layer_off(4);
134 }
135 break;
136 }
137 return MACRO_NONE;
138}; \ No newline at end of file
diff --git a/keyboards/tv44/keymaps/tong92/readme.md b/keyboards/tv44/keymaps/tong92/readme.md
new file mode 100644
index 000000000..820857256
--- /dev/null
+++ b/keyboards/tv44/keymaps/tong92/readme.md
@@ -0,0 +1,52 @@
1# The tong92's keymap for tv44
2
3- Arrow Layout (45key)
4- my keymap for Window User
5- Mouse Layer : space -> Default Layer
6
7## Qwerty
8 ,--------------------------------------------------------------------------.
9 | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
10 |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
11 | Ctrl | A | S | D | F | G | H | J | K | L | ; | Enter|
12 |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
13 | Shift | Z | X | C | V | B | N | M | , | . | / |Shift|
14 |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
15 | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
16 `--------------------------------------------------------------------------'
17
18
19## RAISE
20 ,--------------------------------------------------------------------------.
21 | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
22 |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
23 | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
24 |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
25 | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
26 |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
27 | | | | | | END | LEFT| Down|RIGHT|
28 `--------------------------------------------------------------------------'
29
30
31## FTN
32 ,--------------------------------------------------------------------------.
33 | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
34 |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
35 | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
36 |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
37 | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | Ctrl|
38 |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
39 | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
40 `--------------------------------------------------------------------------'
41
42
43## MOUSE
44 ,--------------------------------------------------------------------------.
45 | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
46 |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
47 | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
48 |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
49 | | | | | | | |M_AC0|M_AC1|M_AC2| | |
50 |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
51 | | | | GO_DEFAULT | GO_DEFAULT | | | | |
52 `--------------------------------------------------------------------------'
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 62d9ef923..4f4cee4e9 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -135,7 +135,7 @@ void reset_keyboard(void) {
135#endif 135#endif
136 136
137static bool shift_interrupted[2] = {0, 0}; 137static bool shift_interrupted[2] = {0, 0};
138static uint16_t scs_timer = 0; 138static uint16_t scs_timer[2] = {0, 0};
139 139
140bool process_record_quantum(keyrecord_t *record) { 140bool process_record_quantum(keyrecord_t *record) {
141 141
@@ -395,7 +395,7 @@ bool process_record_quantum(keyrecord_t *record) {
395 case KC_LSPO: { 395 case KC_LSPO: {
396 if (record->event.pressed) { 396 if (record->event.pressed) {
397 shift_interrupted[0] = false; 397 shift_interrupted[0] = false;
398 scs_timer = timer_read (); 398 scs_timer[0] = timer_read ();
399 register_mods(MOD_BIT(KC_LSFT)); 399 register_mods(MOD_BIT(KC_LSFT));
400 } 400 }
401 else { 401 else {
@@ -405,7 +405,7 @@ bool process_record_quantum(keyrecord_t *record) {
405 shift_interrupted[1] = true; 405 shift_interrupted[1] = true;
406 } 406 }
407 #endif 407 #endif
408 if (!shift_interrupted[0] && timer_elapsed(scs_timer) < TAPPING_TERM) { 408 if (!shift_interrupted[0] && timer_elapsed(scs_timer[0]) < TAPPING_TERM) {
409 register_code(LSPO_KEY); 409 register_code(LSPO_KEY);
410 unregister_code(LSPO_KEY); 410 unregister_code(LSPO_KEY);
411 } 411 }
@@ -418,7 +418,7 @@ bool process_record_quantum(keyrecord_t *record) {
418 case KC_RSPC: { 418 case KC_RSPC: {
419 if (record->event.pressed) { 419 if (record->event.pressed) {
420 shift_interrupted[1] = false; 420 shift_interrupted[1] = false;
421 scs_timer = timer_read (); 421 scs_timer[1] = timer_read ();
422 register_mods(MOD_BIT(KC_RSFT)); 422 register_mods(MOD_BIT(KC_RSFT));
423 } 423 }
424 else { 424 else {
@@ -428,7 +428,7 @@ bool process_record_quantum(keyrecord_t *record) {
428 shift_interrupted[1] = true; 428 shift_interrupted[1] = true;
429 } 429 }
430 #endif 430 #endif
431 if (!shift_interrupted[1] && timer_elapsed(scs_timer) < TAPPING_TERM) { 431 if (!shift_interrupted[1] && timer_elapsed(scs_timer[1]) < TAPPING_TERM) {
432 register_code(RSPC_KEY); 432 register_code(RSPC_KEY);
433 unregister_code(RSPC_KEY); 433 unregister_code(RSPC_KEY);
434 } 434 }
diff --git a/readme.md b/readme.md
index b2dfc5f75..f7bf14b6a 100644
--- a/readme.md
+++ b/readme.md
@@ -32,7 +32,7 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j
32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest: 32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest:
33 33
34* [**The Wiki**](https://github.com/qmk/qmk_firmware/wiki) - the entirety of the readme has been moved here 34* [**The Wiki**](https://github.com/qmk/qmk_firmware/wiki) - the entirety of the readme has been moved here
35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. 35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox, it's [here](keyboards/ergodox/); for the Planck, it's [here](keyboards/planck/) and so on.
36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places: 36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places:
37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. 37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes.
38 * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined. 38 * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined.