aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--Dockerfile24
-rwxr-xr-xdrivers/avr/i2c_master.c15
-rwxr-xr-xdrivers/avr/i2c_master.h15
-rwxr-xr-xdrivers/avr/i2c_slave.c17
-rwxr-xr-xdrivers/avr/i2c_slave.h17
-rw-r--r--keyboards/angel64/angel64.c51
-rw-r--r--keyboards/angel64/angel64.h48
-rw-r--r--keyboards/angel64/config.h242
-rw-r--r--keyboards/angel64/info.json12
-rw-r--r--keyboards/angel64/keymaps/default/config.h19
-rw-r--r--keyboards/angel64/keymaps/default/keymap.c58
-rw-r--r--keyboards/angel64/keymaps/default/readme.md1
-rw-r--r--keyboards/angel64/matrix.c287
-rw-r--r--keyboards/angel64/readme.md15
-rw-r--r--keyboards/angel64/rules.mk83
-rw-r--r--keyboards/ivy/config.h67
-rw-r--r--keyboards/ivy/ivy.c1
-rw-r--r--keyboards/ivy/ivy.h7
-rw-r--r--keyboards/ivy/keymaps/default/keymap.c46
-rw-r--r--keyboards/ivy/keymaps/default/rules.mk22
-rw-r--r--keyboards/ivy/readme.md15
-rw-r--r--keyboards/ivy/rev1/config.h27
-rw-r--r--keyboards/ivy/rev1/rev1.c5
-rw-r--r--keyboards/ivy/rev1/rev1.h14
-rw-r--r--keyboards/ivy/rev1/rules.mk3
-rw-r--r--keyboards/ivy/rules.mk67
-rw-r--r--keyboards/planck/keymaps/default/keymap.c28
-rw-r--r--keyboards/readme.md1
-rw-r--r--keyboards/shiro/config.h251
-rw-r--r--keyboards/shiro/info.json114
-rw-r--r--keyboards/shiro/keymaps/check/config.h19
-rw-r--r--keyboards/shiro/keymaps/check/keymap.c66
-rw-r--r--keyboards/shiro/keymaps/check/readme.md1
-rw-r--r--keyboards/shiro/keymaps/default/config.h19
-rw-r--r--keyboards/shiro/keymaps/default/keymap.c50
-rw-r--r--keyboards/shiro/keymaps/default/readme.md1
-rw-r--r--keyboards/shiro/readme.md27
-rw-r--r--keyboards/shiro/rules.mk80
-rw-r--r--keyboards/shiro/shiro.c51
-rw-r--r--keyboards/shiro/shiro.h41
-rw-r--r--keyboards/winkeyless/bface/keymaps/p3lim/README.md14
-rw-r--r--keyboards/winkeyless/bface/keymaps/p3lim/keymap.c156
-rw-r--r--keyboards/xd004/info.json11
-rw-r--r--keyboards/xd004/keymaps/default/keymap.c13
-rw-r--r--keyboards/xd004/keymaps/default/readme.md7
-rw-r--r--keyboards/xd004/keymaps/system_and_media/keymap.c61
-rw-r--r--keyboards/xd004/keymaps/system_and_media/readme.md9
-rw-r--r--keyboards/xd004/readme.md16
-rw-r--r--keyboards/xd004/v1/config.h80
-rw-r--r--keyboards/xd004/v1/rules.mk70
-rw-r--r--keyboards/xd004/xd004.c7
-rw-r--r--keyboards/xd004/xd004.h15
-rw-r--r--layouts/community/ortho_1x4/belgorath/keymap.c24
-rw-r--r--layouts/community/ortho_1x4/layout.json1
-rwxr-xr-xutil/docker_build.sh2
-rwxr-xr-xutil/travis_build.sh2
-rw-r--r--util/travis_test.sh2
58 files changed, 2375 insertions, 44 deletions
diff --git a/.travis.yml b/.travis.yml
index b4a76765c..52c8f50a8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,8 +13,6 @@ env:
13 - MAKEFLAGS="-j3 --output-sync" 13 - MAKEFLAGS="-j3 --output-sync"
14services: 14services:
15 - docker 15 - docker
16before_install:
17 - docker build -t qmkfm/qmk_firmware .
18install: 16install:
19 - npm install -g moxygen 17 - npm install -g moxygen
20script: 18script:
diff --git a/Dockerfile b/Dockerfile
index f15eb2ee3..17831c4ec 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,26 +1,4 @@
1FROM debian:9 1FROM qmkfm/base_container
2
3RUN apt-get update && apt-get install --no-install-recommends -y \
4 avr-libc \
5 avrdude \
6 binutils-arm-none-eabi \
7 binutils-avr \
8 build-essential \
9 dfu-programmer \
10 dfu-util \
11 gcc \
12 gcc-avr \
13 git \
14 libnewlib-arm-none-eabi \
15 software-properties-common \
16 unzip \
17 wget \
18 zip \
19 && rm -rf /var/lib/apt/lists/*
20
21# upgrade gcc-arm-none-eabi from the default 5.4.1 to 6.3.1 due to ARM runtime issues
22RUN wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 -O - | \
23 tar xj --strip-components=1 -C /
24 2
25VOLUME /qmk_firmware 3VOLUME /qmk_firmware
26WORKDIR /qmk_firmware 4WORKDIR /qmk_firmware
diff --git a/drivers/avr/i2c_master.c b/drivers/avr/i2c_master.c
index a7364bae0..0acc24642 100755
--- a/drivers/avr/i2c_master.c
+++ b/drivers/avr/i2c_master.c
@@ -1,3 +1,18 @@
1/* Copyright (C) 2019 Elia Ritterbusch
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 3 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 <https://www.gnu.org/licenses/>.
15 */
1/* Library made by: g4lvanix 16/* Library made by: g4lvanix
2 * Github repository: https://github.com/g4lvanix/I2C-master-lib 17 * Github repository: https://github.com/g4lvanix/I2C-master-lib
3 */ 18 */
diff --git a/drivers/avr/i2c_master.h b/drivers/avr/i2c_master.h
index b4613115d..d68142430 100755
--- a/drivers/avr/i2c_master.h
+++ b/drivers/avr/i2c_master.h
@@ -1,3 +1,18 @@
1/* Copyright (C) 2019 Elia Ritterbusch
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 3 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 <https://www.gnu.org/licenses/>.
15 */
1/* Library made by: g4lvanix 16/* Library made by: g4lvanix
2 * Github repository: https://github.com/g4lvanix/I2C-master-lib 17 * Github repository: https://github.com/g4lvanix/I2C-master-lib
3 */ 18 */
diff --git a/drivers/avr/i2c_slave.c b/drivers/avr/i2c_slave.c
index dbb9fb0df..4958a0f8e 100755
--- a/drivers/avr/i2c_slave.c
+++ b/drivers/avr/i2c_slave.c
@@ -1,3 +1,18 @@
1/* Copyright (C) 2019 Elia Ritterbusch
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 3 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 <https://www.gnu.org/licenses/>.
15 */
1/* Library made by: g4lvanix 16/* Library made by: g4lvanix
2 * Github repository: https://github.com/g4lvanix/I2C-slave-lib 17 * Github repository: https://github.com/g4lvanix/I2C-slave-lib
3 */ 18 */
@@ -68,4 +83,4 @@ ISR(TWI_vect){
68 83
69 // Reset i2c state machine to be ready for next interrupt 84 // Reset i2c state machine to be ready for next interrupt
70 TWCR |= (1 << TWIE) | (1 << TWINT) | (ack << TWEA) | (1 << TWEN); 85 TWCR |= (1 << TWIE) | (1 << TWINT) | (ack << TWEA) | (1 << TWEN);
71} \ No newline at end of file 86}
diff --git a/drivers/avr/i2c_slave.h b/drivers/avr/i2c_slave.h
index 7b5dcbdc3..2f4589e9c 100755
--- a/drivers/avr/i2c_slave.h
+++ b/drivers/avr/i2c_slave.h
@@ -1,3 +1,18 @@
1/* Copyright (C) 2019 Elia Ritterbusch
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 3 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 <https://www.gnu.org/licenses/>.
15 */
1/* Library made by: g4lvanix 16/* Library made by: g4lvanix
2 * Github repository: https://github.com/g4lvanix/I2C-slave-lib 17 * Github repository: https://github.com/g4lvanix/I2C-slave-lib
3 18
@@ -15,4 +30,4 @@ extern volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT];
15void i2c_slave_init(uint8_t address); 30void i2c_slave_init(uint8_t address);
16void i2c_slave_stop(void); 31void i2c_slave_stop(void);
17 32
18#endif // I2C_SLAVE_H \ No newline at end of file 33#endif // I2C_SLAVE_H
diff --git a/keyboards/angel64/angel64.c b/keyboards/angel64/angel64.c
new file mode 100644
index 000000000..d26c3608b
--- /dev/null
+++ b/keyboards/angel64/angel64.c
@@ -0,0 +1,51 @@
1/* Copyright 2019 kakunpc
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 "angel64.h"
17
18// Optional override functions below.
19// You can leave any or all of these undefined.
20// These are only required if you want to perform custom actions.
21
22/*
23
24void matrix_init_kb(void) {
25 // put your keyboard start-up code here
26 // runs once when the firmware starts up
27
28 matrix_init_user();
29}
30
31void matrix_scan_kb(void) {
32 // put your looping keyboard code here
33 // runs every cycle (a lot)
34
35 matrix_scan_user();
36}
37
38bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
39 // put your per-action keyboard code here
40 // runs for every action, just before processing by the firmware
41
42 return process_record_user(keycode, record);
43}
44
45void led_set_kb(uint8_t usb_led) {
46 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
47
48 led_set_user(usb_led);
49}
50
51*/
diff --git a/keyboards/angel64/angel64.h b/keyboards/angel64/angel64.h
new file mode 100644
index 000000000..6c0898a56
--- /dev/null
+++ b/keyboards/angel64/angel64.h
@@ -0,0 +1,48 @@
1/* Copyright 2019 kakunpc
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#define LAYOUT( \
29 k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, \
30 k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
31 k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, \
32 k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, \
33 k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64\
34) \
35{ \
36 { k01, k13, k25, k37, k49, k61 }, \
37 { k02, k14, k26, k38, k50, k62 }, \
38 { k03, k15, k27, k39, k51, k63 }, \
39 { k04, k16, k28, k40, k52, k64 }, \
40 { k05, k17, k29, k41, k53, KC_NO }, \
41 { k06, k18, k30, k42, k54, KC_NO }, \
42 { k07, k19, k31, k43, k55, KC_NO }, \
43 { k08, k20, k32, k44, k56, KC_NO }, \
44 { k09, k21, k33, k45, k57, KC_NO }, \
45 { k10, k22, k34, k46, k58, KC_NO }, \
46 { k11, k23, k35, k47, k59, KC_NO }, \
47 { k12, k24, k36, k48, k60, KC_NO } \
48}
diff --git a/keyboards/angel64/config.h b/keyboards/angel64/config.h
new file mode 100644
index 000000000..2289d6667
--- /dev/null
+++ b/keyboards/angel64/config.h
@@ -0,0 +1,242 @@
1/*
2Copyright 2019 kakunpc
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 0xFEED
24#define PRODUCT_ID 0x0000
25#define DEVICE_VER 0x0001
26#define MANUFACTURER kakunpc
27#define PRODUCT angel64
28#define DESCRIPTION A custom keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 12
32#define MATRIX_COLS 6
33
34/*
35 * Keyboard Matrix Assignments
36 *
37*/
38#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
39#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
40#define UNUSED_PINS
41
42/*
43 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
44 */
45#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
46
47// #define BACKLIGHT_PIN B7
48// #define BACKLIGHT_BREATHING
49// #define BACKLIGHT_LEVELS 3
50
51// #define RGB_DI_PIN E2
52// #ifdef RGB_DI_PIN
53// #define RGBLED_NUM 64
54// #define RGBLIGHT_HUE_STEP 8
55// #define RGBLIGHT_SAT_STEP 8
56// #define RGBLIGHT_VAL_STEP 8
57// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
58// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
59// /*== all animations enable ==*/
60// #define RGBLIGHT_ANIMATIONS
61// /*== or choose animations ==*/
62// #define RGBLIGHT_EFFECT_BREATHING
63// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
64// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
65// #define RGBLIGHT_EFFECT_SNAKE
66// #define RGBLIGHT_EFFECT_KNIGHT
67// #define RGBLIGHT_EFFECT_CHRISTMAS
68// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
69// #define RGBLIGHT_EFFECT_RGB_TEST
70// #define RGBLIGHT_EFFECT_ALTERNATING
71// /*== customize breathing effect ==*/
72// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
73// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
74// /*==== use exp() and sin() ====*/
75// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
76// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
77// #endif
78
79/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
80#define DEBOUNCE 5
81
82/* define if matrix has ghost (lacks anti-ghosting diodes) */
83//#define MATRIX_HAS_GHOST
84
85/* number of backlight levels */
86
87/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
88#define LOCKING_SUPPORT_ENABLE
89/* Locking resynchronize hack */
90#define LOCKING_RESYNC_ENABLE
91
92/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
93 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
94 */
95// #define GRAVE_ESC_CTRL_OVERRIDE
96
97/*
98 * Force NKRO
99 *
100 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
101 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
102 * makefile for this to work.)
103 *
104 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
105 * until the next keyboard reset.
106 *
107 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
108 * fully operational during normal computer usage.
109 *
110 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
111 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
112 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
113 * power-up.
114 *
115 */
116//#define FORCE_NKRO
117
118/*
119 * Magic Key Options
120 *
121 * Magic keys are hotkey commands that allow control over firmware functions of
122 * the keyboard. They are best used in combination with the HID Listen program,
123 * found here: https://www.pjrc.com/teensy/hid_listen.html
124 *
125 * The options below allow the magic key functionality to be changed. This is
126 * useful if your keyboard/keypad is missing keys and you want magic key support.
127 *
128 */
129
130/* key combination for magic key command */
131/* defined by default; to change, uncomment and set to the combination you want */
132// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
133
134/* control how magic key switches layers */
135//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
136//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
137//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
138
139/* override magic key keymap */
140//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
141//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
142//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
143//#define MAGIC_KEY_HELP H
144//#define MAGIC_KEY_HELP_ALT SLASH
145//#define MAGIC_KEY_DEBUG D
146//#define MAGIC_KEY_DEBUG_MATRIX X
147//#define MAGIC_KEY_DEBUG_KBD K
148//#define MAGIC_KEY_DEBUG_MOUSE M
149//#define MAGIC_KEY_VERSION V
150//#define MAGIC_KEY_STATUS S
151//#define MAGIC_KEY_CONSOLE C
152//#define MAGIC_KEY_LAYER0 0
153//#define MAGIC_KEY_LAYER0_ALT GRAVE
154//#define MAGIC_KEY_LAYER1 1
155//#define MAGIC_KEY_LAYER2 2
156//#define MAGIC_KEY_LAYER3 3
157//#define MAGIC_KEY_LAYER4 4
158//#define MAGIC_KEY_LAYER5 5
159//#define MAGIC_KEY_LAYER6 6
160//#define MAGIC_KEY_LAYER7 7
161//#define MAGIC_KEY_LAYER8 8
162//#define MAGIC_KEY_LAYER9 9
163//#define MAGIC_KEY_BOOTLOADER B
164//#define MAGIC_KEY_BOOTLOADER_ALT ESC
165//#define MAGIC_KEY_LOCK CAPS
166//#define MAGIC_KEY_EEPROM E
167//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
168//#define MAGIC_KEY_NKRO N
169//#define MAGIC_KEY_SLEEP_LED Z
170
171/*
172 * Feature disable options
173 * These options are also useful to firmware size reduction.
174 */
175
176/* disable debug print */
177//#define NO_DEBUG
178
179/* disable print */
180//#define NO_PRINT
181
182/* disable action features */
183//#define NO_ACTION_LAYER
184//#define NO_ACTION_TAPPING
185//#define NO_ACTION_ONESHOT
186//#define NO_ACTION_MACRO
187//#define NO_ACTION_FUNCTION
188
189/*
190 * MIDI options
191 */
192
193/* Prevent use of disabled MIDI features in the keymap */
194//#define MIDI_ENABLE_STRICT 1
195
196/* enable basic MIDI features:
197 - MIDI notes can be sent when in Music mode is on
198*/
199//#define MIDI_BASIC
200
201/* enable advanced MIDI features:
202 - MIDI notes can be added to the keymap
203 - Octave shift and transpose
204 - Virtual sustain, portamento, and modulation wheel
205 - etc.
206*/
207//#define MIDI_ADVANCED
208
209/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
210//#define MIDI_TONE_KEYCODE_OCTAVES 1
211
212/*
213 * HD44780 LCD Display Configuration
214 */
215/*
216#define LCD_LINES 2 //< number of visible lines of the display
217#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
218
219#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
220
221#if LCD_IO_MODE
222#define LCD_PORT PORTB //< port for the LCD lines
223#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
224#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
225#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
226#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
227#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
228#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
229#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
230#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
231#define LCD_RS_PORT LCD_PORT //< port for RS line
232#define LCD_RS_PIN 3 //< pin for RS line
233#define LCD_RW_PORT LCD_PORT //< port for RW line
234#define LCD_RW_PIN 2 //< pin for RW line
235#define LCD_E_PORT LCD_PORT //< port for Enable line
236#define LCD_E_PIN 1 //< pin for Enable line
237#endif
238*/
239
240/* Bootmagic Lite key configuration */
241// #define BOOTMAGIC_LITE_ROW 0
242// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/angel64/info.json b/keyboards/angel64/info.json
new file mode 100644
index 000000000..2bcd0c9ea
--- /dev/null
+++ b/keyboards/angel64/info.json
@@ -0,0 +1,12 @@
1{
2 "keyboard_name": "angel64",
3 "url": "https://kakunpc.booth.pm/",
4 "maintainer": "kakunpc",
5 "width": 14,
6 "height": 5,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"back", "x":13, "y":0}, {"label":"Q", "x":0, "y":1, "w":1.5}, {"label":"W", "x":1.5, "y":1}, {"label":"E", "x":2.5, "y":1}, {"label":"R", "x":3.5, "y":1}, {"label":"T", "x":4.5, "y":1}, {"label":"Y", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"I", "x":7.5, "y":1}, {"label":"O", "x":8.5, "y":1}, {"label":"P", "x":9.5, "y":1}, {"label":"[", "x":10.5, "y":1}, {"label":"]", "x":11.5, "y":1}, {"label":"|", "x":12.5, "y":1, "w":1.5}, {"label":"Ctrl", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"H", "x":6, "y":2}, {"label":"J", "x":7, "y":2}, {"label":"K", "x":8, "y":2}, {"label":"L", "x":9, "y":2}, {"label":";:", "x":10, "y":2}, {"label":"`", "x":11, "y":2}, {"label":"Enter", "x":12, "y":2, "w":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":"Z", "x":1.5, "y":3}, {"label":"X", "x":2.5, "y":3}, {"label":"C", "x":3.5, "y":3}, {"label":"V", "x":4.5, "y":3}, {"label":"B", "x":5.5, "y":3}, {"label":"N", "x":6.5, "y":3}, {"label":"M", "x":7.5, "y":3}, {"label":"<", "x":8.5, "y":3}, {"label":">", "x":9.5, "y":3}, {"label":"?", "x":10.5, "y":3}, {"label":"\u2191", "x":11.5, "y":3}, {"label":"Fn", "x":12.5, "y":3, "w":1.5}, {"label":"Caps", "x":0, "y":4}, {"label":"Alt", "x":1, "y":4}, {"label":"Start", "x":2, "y":4, "w":1.5}, {"label":"Ctrl", "x":3.5, "y":4, "w":1.5}, {"label":"Space", "x":5, "y":4, "w":2}, {"label":"Ctrl", "x":7, "y":4, "w":1.5}, {"label":"Alt", "x":8.5, "y":4, "w":1.5}, {"label":"\u2190", "x":10, "y":4}, {"label":"\u2193", "x":11, "y":4}, {"label":"\u2192", "x":12, "y":4}, {"label":"Alt", "x":13, "y":4}]
10 }
11 }
12}
diff --git a/keyboards/angel64/keymaps/default/config.h b/keyboards/angel64/keymaps/default/config.h
new file mode 100644
index 000000000..bf1149ebc
--- /dev/null
+++ b/keyboards/angel64/keymaps/default/config.h
@@ -0,0 +1,19 @@
1/* Copyright 2019 kakunpc
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
17#pragma once
18
19// place overrides here
diff --git a/keyboards/angel64/keymaps/default/keymap.c b/keyboards/angel64/keymaps/default/keymap.c
new file mode 100644
index 000000000..50ca64fde
--- /dev/null
+++ b/keyboards/angel64/keymaps/default/keymap.c
@@ -0,0 +1,58 @@
1/* Copyright 2019 kakunpc
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
18enum layers{
19 BASE = 0,
20 COMMAND
21};
22
23#define KC_COMMAND LT(COMMAND,KC_SPC)
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 [BASE] = LAYOUT(
27 KC_GRV, 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 ,
28 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,
29 KC_TAB, 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_UP, KC_RSFT,
31 KC_LCTL, KC_LALT, KC_LGUI, KC_COMMAND, KC_SPC, KC_COMMAND, KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL
32 ),
33 [COMMAND] = LAYOUT(
34 KC_ESC, 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_BSPC ,
35 KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
36 KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
37 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
38 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
39 )
40};
41
42bool process_record_user(uint16_t keycode, keyrecord_t *record) {
43 return true;
44}
45
46void matrix_init_user(void) {
47}
48
49void matrix_scan_user(void) {
50
51}
52
53void led_set_user(uint8_t usb_led) {
54
55}
56
57void keyboard_post_init_user(void) {
58}
diff --git a/keyboards/angel64/keymaps/default/readme.md b/keyboards/angel64/keymaps/default/readme.md
new file mode 100644
index 000000000..f4cd48f2e
--- /dev/null
+++ b/keyboards/angel64/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for angel64 \ No newline at end of file
diff --git a/keyboards/angel64/matrix.c b/keyboards/angel64/matrix.c
new file mode 100644
index 000000000..e06fc15dc
--- /dev/null
+++ b/keyboards/angel64/matrix.c
@@ -0,0 +1,287 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
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#include <stdint.h>
18#include <stdbool.h>
19#include "wait.h"
20#include "print.h"
21#include "debug.h"
22#include "util.h"
23#include "matrix.h"
24#include "debounce.h"
25#include "quantum.h"
26
27#if (MATRIX_COLS <= 8)
28# define print_matrix_header() print("\nr/c 01234567\n")
29# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
30# define matrix_bitpop(i) bitpop(matrix[i])
31# define ROW_SHIFTER ((uint8_t)1)
32#elif (MATRIX_COLS <= 16)
33# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
34# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
35# define matrix_bitpop(i) bitpop16(matrix[i])
36# define ROW_SHIFTER ((uint16_t)1)
37#elif (MATRIX_COLS <= 32)
38# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
39# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
40# define matrix_bitpop(i) bitpop32(matrix[i])
41# define ROW_SHIFTER ((uint32_t)1)
42#endif
43
44#ifdef MATRIX_MASKED
45 extern const matrix_row_t matrix_mask[];
46#endif
47
48static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
49static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
50
51/* matrix state(1:on, 0:off) */
52static matrix_row_t raw_matrix[MATRIX_ROWS]; //raw values
53static matrix_row_t matrix[MATRIX_ROWS]; //debounced values
54
55__attribute__ ((weak))
56void matrix_init_quantum(void) {
57 matrix_init_kb();
58}
59
60__attribute__ ((weak))
61void matrix_scan_quantum(void) {
62 matrix_scan_kb();
63}
64
65__attribute__ ((weak))
66void matrix_init_kb(void) {
67 matrix_init_user();
68}
69
70__attribute__ ((weak))
71void matrix_scan_kb(void) {
72 matrix_scan_user();
73}
74
75__attribute__ ((weak))
76void matrix_init_user(void) {
77}
78
79__attribute__ ((weak))
80void matrix_scan_user(void) {
81}
82
83inline
84uint8_t matrix_rows(void) {
85 return MATRIX_ROWS;
86}
87
88inline
89uint8_t matrix_cols(void) {
90 return MATRIX_COLS;
91}
92
93//Deprecated.
94bool matrix_is_modified(void)
95{
96 if (debounce_active()) return false;
97 return true;
98}
99
100inline
101bool matrix_is_on(uint8_t row, uint8_t col)
102{
103 return (matrix[row] & ((matrix_row_t)1<<col));
104}
105
106inline
107matrix_row_t matrix_get_row(uint8_t row)
108{
109 // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
110 // switch blocker installed and the switch is always pressed.
111#ifdef MATRIX_MASKED
112 return matrix[row] & matrix_mask[row];
113#else
114 return matrix[row];
115#endif
116}
117
118void matrix_print(void)
119{
120 print_matrix_header();
121
122 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
123 phex(row); print(": ");
124 print_matrix_row(row);
125 print("\n");
126 }
127}
128
129uint8_t matrix_key_count(void)
130{
131 uint8_t count = 0;
132 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
133 count += matrix_bitpop(i);
134 }
135 return count;
136}
137
138static void select_row(uint8_t row)
139{
140 setPinOutput(row_pins[row]);
141 writePinLow(row_pins[row]);
142}
143
144static void unselect_row(uint8_t row)
145{
146 setPinInputHigh(row_pins[row]);
147}
148
149static void unselect_rows(void)
150{
151 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
152 setPinInputHigh(row_pins[x]);
153 }
154}
155
156static void select_col(uint8_t col)
157{
158 setPinOutput(col_pins[col]);
159 writePinLow(col_pins[col]);
160}
161
162static void unselect_col(uint8_t col)
163{
164 setPinInputHigh(col_pins[col]);
165}
166
167static void unselect_cols(void)
168{
169 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
170 setPinInputHigh(col_pins[x]);
171 }
172}
173
174static void init_pins(void) {
175 unselect_rows();
176 unselect_cols();
177 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
178 setPinInputHigh(col_pins[x]);
179 }
180 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
181 setPinInputHigh(row_pins[x]);
182 }
183}
184
185static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
186{
187 // Store last value of row prior to reading
188 matrix_row_t last_row_value = current_matrix[current_row];
189
190 // Clear data in matrix row
191 current_matrix[current_row] = 0;
192
193 // Select row and wait for row selecton to stabilize
194 select_row(current_row);
195 wait_us(30);
196
197 // For each col...
198 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
199
200 // Select the col pin to read (active low)
201 uint8_t pin_state = readPin(col_pins[col_index]);
202
203 // Populate the matrix row with the state of the col pin
204 current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
205 }
206
207 // Unselect row
208 unselect_row(current_row);
209
210 return (last_row_value != current_matrix[current_row]);
211}
212
213static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
214{
215 bool matrix_changed = false;
216
217 // Select col and wait for col selecton to stabilize
218 select_col(current_col);
219 wait_us(30);
220
221 // For each row...
222 for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
223 {
224 uint8_t tmp = row_index + MATRIX_ROWS/2;
225 // Store last value of row prior to reading
226 matrix_row_t last_row_value = current_matrix[tmp];
227
228 // Check row pin state
229 if (readPin(row_pins[row_index]) == 0)
230 {
231 // Pin LO, set col bit
232 current_matrix[tmp] |= (ROW_SHIFTER << current_col);
233 }
234 else
235 {
236 // Pin HI, clear col bit
237 current_matrix[tmp] &= ~(ROW_SHIFTER << current_col);
238 }
239
240 // Determine if the matrix changed state
241 if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
242 {
243 matrix_changed = true;
244 }
245 }
246
247 // Unselect col
248 unselect_col(current_col);
249
250 return matrix_changed;
251}
252
253void matrix_init(void) {
254
255 // initialize key pins
256 init_pins();
257
258 // initialize matrix state: all keys off
259 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
260 raw_matrix[i] = 0;
261 matrix[i] = 0;
262 }
263
264 debounce_init(MATRIX_ROWS);
265
266 matrix_init_quantum();
267}
268
269uint8_t matrix_scan(void)
270{
271 bool changed = false;
272
273 // Set row, read cols
274 for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
275 changed |= read_cols_on_row(raw_matrix, current_row);
276 }
277 //else
278 // Set col, read rows
279 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
280 changed |= read_rows_on_col(raw_matrix, current_col);
281 }
282
283 debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
284
285 matrix_scan_quantum();
286 return (uint8_t)changed;
287}
diff --git a/keyboards/angel64/readme.md b/keyboards/angel64/readme.md
new file mode 100644
index 000000000..b56592cbb
--- /dev/null
+++ b/keyboards/angel64/readme.md
@@ -0,0 +1,15 @@
1# angel64
2
3![angel64](https://i.gyazo.com/6e2ea6c58d3253c496dc0518f2641ff9.jpg)
4
5Keyboard for tablets.
6
7Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
8Hardware Supported: angel64_alpha, promicro
9Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
10
11Make example for this keyboard (after setting up your build environment):
12
13 make angel64: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/angel64/rules.mk b/keyboards/angel64/rules.mk
new file mode 100644
index 000000000..b1ef9b765
--- /dev/null
+++ b/keyboards/angel64/rules.mk
@@ -0,0 +1,83 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Bootloader selection
42# Teensy halfkay
43# Pro Micro caterina
44# Atmel DFU atmel-dfu
45# LUFA DFU lufa-dfu
46# QMK DFU qmk-dfu
47# atmega32a bootloadHID
48BOOTLOADER = atmel-dfu
49
50
51# If you don't know the bootloader type, then you can specify the
52# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
53# Teensy halfKay 512
54# Teensy++ halfKay 1024
55# Atmel DFU loader 4096
56# LUFA bootloader 4096
57# USBaspLoader 2048
58# OPT_DEFS += -DBOOTLOADER_SIZE=4096
59
60
61# Build Options
62# change yes to no to disable
63#
64BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
65MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
66EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
67CONSOLE_ENABLE = yes # Console for debug(+400)
68COMMAND_ENABLE = yes # Commands for debug and configuration
69# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
70SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
71# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
72NKRO_ENABLE = no # USB Nkey Rollover
73BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
74RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
75MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
76UNICODE_ENABLE = no # Unicode
77BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
78AUDIO_ENABLE = no # Audio output on port C6
79FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
80HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
81CUSTOM_MATRIX = yes
82
83SRC += matrix.c
diff --git a/keyboards/ivy/config.h b/keyboards/ivy/config.h
new file mode 100644
index 000000000..1e6f5bc96
--- /dev/null
+++ b/keyboards/ivy/config.h
@@ -0,0 +1,67 @@
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#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0x1337
23#define PRODUCT_ID 0x6012
24#define MANUFACTURER Maple Computing
25#define PRODUCT Ivy
26#define DESCRIPTION A 3 key macro pad
27
28/* key matrix size */
29#define MATRIX_ROWS 3
30#define MATRIX_COLS 3
31
32/* COL2ROW or ROW2COL */
33#define DIODE_DIRECTION COL2ROW
34
35/* define if matrix has ghost */
36//#define MATRIX_HAS_GHOST
37
38/* Set 0 if debouncing isn't needed */
39#define DEBOUNCE 5
40
41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
42#define LOCKING_SUPPORT_ENABLE
43/* Locking resynchronize hack */
44#define LOCKING_RESYNC_ENABLE
45
46#define BACKLIGHT_PIN D2
47
48/* number of backlight levels */
49#define BACKLIGHT_LEVELS 3
50
51/*
52 * Feature disable options
53 * These options are also useful to firmware size reduction.
54 */
55
56/* disable debug print */
57//#define NO_DEBUG
58
59/* disable print */
60//#define NO_PRINT
61
62/* disable action features */
63//#define NO_ACTION_LAYER
64//#define NO_ACTION_TAPPING
65//#define NO_ACTION_ONESHOT
66//#define NO_ACTION_MACRO
67//#define NO_ACTION_FUNCTION
diff --git a/keyboards/ivy/ivy.c b/keyboards/ivy/ivy.c
new file mode 100644
index 000000000..007ef6725
--- /dev/null
+++ b/keyboards/ivy/ivy.c
@@ -0,0 +1 @@
#include "ivy.h"
diff --git a/keyboards/ivy/ivy.h b/keyboards/ivy/ivy.h
new file mode 100644
index 000000000..2cba5f495
--- /dev/null
+++ b/keyboards/ivy/ivy.h
@@ -0,0 +1,7 @@
1#pragma once
2
3#ifdef KEYBOARD_ivy_rev1
4 #include "rev1.h"
5#endif
6
7#include "quantum.h"
diff --git a/keyboards/ivy/keymaps/default/keymap.c b/keyboards/ivy/keymaps/default/keymap.c
new file mode 100644
index 000000000..9a95ba820
--- /dev/null
+++ b/keyboards/ivy/keymaps/default/keymap.c
@@ -0,0 +1,46 @@
1#include QMK_KEYBOARD_H
2
3extern keymap_config_t keymap_config;
4
5// Each layer gets a name for readability, which is then used in the keymap matrix below.
6// The underscores don't mean anything - you can have a layer called STUFF or any other name.
7// Layer names don't all need to be of the same length, obviously, and you can also skip them
8// entirely and just use numbers.
9
10enum pad_layers {
11 _L1,
12 _FUNC
13};
14
15// Defines for task manager and such
16#define CALTDEL LCTL(LALT(KC_DEL))
17#define TSKMGR LCTL(LSFT(KC_ESC))
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21/* Layer 1
22 * ,------.
23 * | 1 |
24 * |------|
25 * | 2 |
26 * |------|
27 * | FN |
28 * `------'
29 */
30[_L1] = LAYOUT( \
31 KC_1, \
32 KC_2, \
33 MO(_FUNC) \
34),
35
36[_FUNC] = LAYOUT( \
37 CALTDEL, \
38 TSKMGR, \
39 _______ \
40)
41
42};
43
44void matrix_init_user(void) {
45
46}
diff --git a/keyboards/ivy/keymaps/default/rules.mk b/keyboards/ivy/keymaps/default/rules.mk
new file mode 100644
index 000000000..cd169fbfd
--- /dev/null
+++ b/keyboards/ivy/keymaps/default/rules.mk
@@ -0,0 +1,22 @@
1
2
3# Build Options
4# change to "no" to disable the options, or define them in the Makefile in
5# the appropriate keymap folder that will get included automatically
6#
7BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
8MOUSEKEY_ENABLE = no # Mouse keys(+4700)
9EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
10CONSOLE_ENABLE = no # Console for debug(+400)
11COMMAND_ENABLE = no # Commands for debug and configuration
12NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
13BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
14MIDI_ENABLE = no # MIDI controls
15AUDIO_ENABLE = no # Audio output on port C6
16UNICODE_ENABLE = no # Unicode
17BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
18RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
19
20# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
21SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
22
diff --git a/keyboards/ivy/readme.md b/keyboards/ivy/readme.md
new file mode 100644
index 000000000..f70630b52
--- /dev/null
+++ b/keyboards/ivy/readme.md
@@ -0,0 +1,15 @@
1IVY
2===
3
4![Ivy](https://i.imgur.com/fnVQet6.jpg)
5
6Make example for this keyboard (after setting up your build environment):
7
8 make ivy/rev1:default
9
10Install examples:
11
12 make ivy/rev1:default:dfu
13
14See 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.
15Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ivy/rev1/config.h b/keyboards/ivy/rev1/config.h
new file mode 100644
index 000000000..9b88b89e5
--- /dev/null
+++ b/keyboards/ivy/rev1/config.h
@@ -0,0 +1,27 @@
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#pragma once
19
20#define DEVICE_VER 0x0001
21
22/* Let's Macro V2 pin-out */
23#define MATRIX_ROW_PINS { F1, B2, D3 }
24#define MATRIX_COL_PINS { F5, B3, D5 }
25#define UNUSED_PINS
26
27#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ivy/rev1/rev1.c b/keyboards/ivy/rev1/rev1.c
new file mode 100644
index 000000000..c099e32c4
--- /dev/null
+++ b/keyboards/ivy/rev1/rev1.c
@@ -0,0 +1,5 @@
1#include "ivy.h"
2
3void matrix_init_kb(void) {
4 matrix_init_user();
5};
diff --git a/keyboards/ivy/rev1/rev1.h b/keyboards/ivy/rev1/rev1.h
new file mode 100644
index 000000000..ac338368e
--- /dev/null
+++ b/keyboards/ivy/rev1/rev1.h
@@ -0,0 +1,14 @@
1#pragma once
2
3#include "ivy.h"
4
5#define LAYOUT( \
6 K00, \
7 K01, \
8 K02 \
9 ) \
10 { \
11 { K00, KC_NO, KC_NO }, \
12 { KC_NO, K01, KC_NO }, \
13 { KC_NO, KC_NO, K02 }, \
14 }
diff --git a/keyboards/ivy/rev1/rules.mk b/keyboards/ivy/rev1/rules.mk
new file mode 100644
index 000000000..f4043e2b7
--- /dev/null
+++ b/keyboards/ivy/rev1/rules.mk
@@ -0,0 +1,3 @@
1BACKLIGHT_ENABLE = yes
2RGBLIGHT_ENABLE = no
3AUDIO_ENABLE = no \ No newline at end of file
diff --git a/keyboards/ivy/rules.mk b/keyboards/ivy/rules.mk
new file mode 100644
index 000000000..1ef5b4aad
--- /dev/null
+++ b/keyboards/ivy/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# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Bootloader
38# This definition is optional, and if your keyboard supports multiple bootloaders of
39# different sizes, comment this out, and the correct address will be loaded
40# automatically (+60). See bootloader.mk for all options.
41BOOTLOADER = caterina
42
43# Interrupt driven control endpoint task(+60)
44OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
45
46# Build Options
47# change to "no" to disable the options, or define them in the Makefile in
48# the appropriate keymap folder that will get included automatically
49#
50BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
51MOUSEKEY_ENABLE = no # Mouse keys(+4700)
52EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
53CONSOLE_ENABLE = no # Console for debug(+400)
54COMMAND_ENABLE = yes # Commands for debug and configuration
55NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
56BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
57MIDI_ENABLE = no # MIDI controls
58AUDIO_ENABLE = no # Audio output on port C6
59UNICODE_ENABLE = no # Unicode
60BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
61RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
62API_SYSEX_ENABLE = no
63
64# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
65SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
66
67DEFAULT_FOLDER = ivy/rev1 \ No newline at end of file
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index cc090200b..280249a9c 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -46,9 +46,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46/* Qwerty 46/* Qwerty
47 * ,-----------------------------------------------------------------------------------. 47 * ,-----------------------------------------------------------------------------------.
48 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | 48 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
49 * |------+------+------+------+------+-------------+------+------+------+------+------| 49 * |------+------+------+------+------+------+------+------+------+------+------+------|
50 * | Esc | A | S | D | F | G | H | J | K | L | ; | " | 50 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
51 * |------+------+------+------+------+------|------+------+------+------+------+------| 51 * |------+------+------+------+------+------+------+------+------+------+------+------|
52 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | 52 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
53 * |------+------+------+------+------+------+------+------+------+------+------+------| 53 * |------+------+------+------+------+------+------+------+------+------+------+------|
54 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | 54 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -64,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
64/* Colemak 64/* Colemak
65 * ,-----------------------------------------------------------------------------------. 65 * ,-----------------------------------------------------------------------------------.
66 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | 66 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
67 * |------+------+------+------+------+-------------+------+------+------+------+------| 67 * |------+------+------+------+------+------+------+------+------+------+------+------|
68 * | Esc | A | R | S | T | D | H | N | E | I | O | " | 68 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
69 * |------+------+------+------+------+------|------+------+------+------+------+------| 69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | 70 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
71 * |------+------+------+------+------+------+------+------+------+------+------+------| 71 * |------+------+------+------+------+------+------+------+------+------+------+------|
72 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | 72 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -82,9 +82,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
82/* Dvorak 82/* Dvorak
83 * ,-----------------------------------------------------------------------------------. 83 * ,-----------------------------------------------------------------------------------.
84 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | 84 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
85 * |------+------+------+------+------+-------------+------+------+------+------+------| 85 * |------+------+------+------+------+------+------+------+------+------+------+------|
86 * | Esc | A | O | E | U | I | D | H | T | N | S | / | 86 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
87 * |------+------+------+------+------+------|------+------+------+------+------+------| 87 * |------+------+------+------+------+------+------+------+------+------+------+------|
88 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | 88 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
89 * |------+------+------+------+------+------+------+------+------+------+------+------| 89 * |------+------+------+------+------+------+------+------+------+------+------+------|
90 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | 90 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
@@ -100,9 +100,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
100/* Lower 100/* Lower
101 * ,-----------------------------------------------------------------------------------. 101 * ,-----------------------------------------------------------------------------------.
102 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | 102 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
103 * |------+------+------+------+------+-------------+------+------+------+------+------| 103 * |------+------+------+------+------+------+------+------+------+------+------+------|
104 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | 104 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
105 * |------+------+------+------+------+------|------+------+------+------+------+------| 105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | 106 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------| 107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | | | | | | | Next | Vol- | Vol+ | Play | 108 * | | | | | | | | Next | Vol- | Vol+ | Play |
@@ -118,9 +118,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
118/* Raise 118/* Raise
119 * ,-----------------------------------------------------------------------------------. 119 * ,-----------------------------------------------------------------------------------.
120 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | 120 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
121 * |------+------+------+------+------+-------------+------+------+------+------+------| 121 * |------+------+------+------+------+------+------+------+------+------+------+------|
122 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | 122 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
123 * |------+------+------+------+------+------|------+------+------+------+------+------| 123 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | 124 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
125 * |------+------+------+------+------+------+------+------+------+------+------+------| 125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | | | | | | | | Next | Vol- | Vol+ | Play | 126 * | | | | | | | | Next | Vol- | Vol+ | Play |
@@ -136,9 +136,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
136/* Plover layer (http://opensteno.org) 136/* Plover layer (http://opensteno.org)
137 * ,-----------------------------------------------------------------------------------. 137 * ,-----------------------------------------------------------------------------------.
138 * | # | # | # | # | # | # | # | # | # | # | # | # | 138 * | # | # | # | # | # | # | # | # | # | # | # | # |
139 * |------+------+------+------+------+-------------+------+------+------+------+------| 139 * |------+------+------+------+------+------+------+------+------+------+------+------|
140 * | | S | T | P | H | * | * | F | P | L | T | D | 140 * | | S | T | P | H | * | * | F | P | L | T | D |
141 * |------+------+------+------+------+------|------+------+------+------+------+------| 141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * | | S | K | W | R | * | * | R | B | G | S | Z | 142 * | | S | K | W | R | * | * | R | B | G | S | Z |
143 * |------+------+------+------+------+------+------+------+------+------+------+------| 143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | Exit | | | A | O | | E | U | | | | 144 * | Exit | | | A | O | | E | U | | | |
@@ -154,9 +154,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
154/* Adjust (Lower + Raise) 154/* Adjust (Lower + Raise)
155 * ,-----------------------------------------------------------------------------------. 155 * ,-----------------------------------------------------------------------------------.
156 * | | Reset| | | | | | | | | | Del | 156 * | | Reset| | | | | | | | | | Del |
157 * |------+------+------+------+------+-------------+------+------+------+------+------| 157 * |------+------+------+------+------+------+------+------+------+------+------+------|
158 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | 158 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
159 * |------+------+------+------+------+------|------+------+------+------+------+------| 159 * |------+------+------+------+------+------+------+------+------+------+------+------|
160 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | 160 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
161 * |------+------+------+------+------+------+------+------+------+------+------+------| 161 * |------+------+------+------+------+------+------+------+------+------+------+------|
162 * | | | | | | | | | | | | 162 * | | | | | | | | | | | |
diff --git a/keyboards/readme.md b/keyboards/readme.md
index 8b6e40721..db2a18cc9 100644
--- a/keyboards/readme.md
+++ b/keyboards/readme.md
@@ -59,5 +59,6 @@ These keyboards are part of the QMK repository, but their manufacturers are not
59* [TheVan 44](/keyboards/tv44) &mdash; A 44-key staggered keybard by Evangs. 59* [TheVan 44](/keyboards/tv44) &mdash; A 44-key staggered keybard by Evangs.
60* [WhiteFox](/keyboards/whitefox) &mdash; A 65% keyboard designed as a partnership by matt3o, Massdrop and Input Club 60* [WhiteFox](/keyboards/whitefox) &mdash; A 65% keyboard designed as a partnership by matt3o, Massdrop and Input Club
61* [Vision Division](/keyboards/vision_division) &mdash; Full Size / Split Linear Keyboard by IBNobody. 61* [Vision Division](/keyboards/vision_division) &mdash; Full Size / Split Linear Keyboard by IBNobody.
62* [XD004](/keyboards/xd004) &mdash; 1x4 macro keyboard sold by KPrepublic.
62* [XD75](/keyboards/xd75) &mdash; 15x5 ortholinear keyboard by XIUDI. 63* [XD75](/keyboards/xd75) &mdash; 15x5 ortholinear keyboard by XIUDI.
63* [YMDK NP21](/keyboards/ymdk_np21) &mdash; ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress. 64* [YMDK NP21](/keyboards/ymdk_np21) &mdash; ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress.
diff --git a/keyboards/shiro/config.h b/keyboards/shiro/config.h
new file mode 100644
index 000000000..d97be0cd2
--- /dev/null
+++ b/keyboards/shiro/config.h
@@ -0,0 +1,251 @@
1/*
2Copyright 2019 T.Shinohara
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 0xFEED
24#define PRODUCT_ID 0x0000
25#define DEVICE_VER 0x0001
26#define MANUFACTURER T.Shinohara
27#define PRODUCT Shiro
28#define DESCRIPTION A custom keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 5
32#define MATRIX_COLS 3
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 { D4, C6, D7, E6, B4 }
45#define MATRIX_COL_PINS { F4, F5, F6 }
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 B7
57// #define BACKLIGHT_BREATHING
58// #define BACKLIGHT_LEVELS 3
59
60// #define RGB_DI_PIN E2
61// #ifdef RGB_DI_PIN
62// #define RGBLED_NUM 16
63// #define RGBLIGHT_HUE_STEP 8
64// #define RGBLIGHT_SAT_STEP 8
65// #define RGBLIGHT_VAL_STEP 8
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 256 // 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 DEBOUNCING_DELAY 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/*
222 * HD44780 LCD Display Configuration
223 */
224/*
225#define LCD_LINES 2 //< number of visible lines of the display
226#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
227
228#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
229
230#if LCD_IO_MODE
231#define LCD_PORT PORTB //< port for the LCD lines
232#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
233#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
234#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
235#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
236#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
237#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
238#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
239#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
240#define LCD_RS_PORT LCD_PORT //< port for RS line
241#define LCD_RS_PIN 3 //< pin for RS line
242#define LCD_RW_PORT LCD_PORT //< port for RW line
243#define LCD_RW_PIN 2 //< pin for RW line
244#define LCD_E_PORT LCD_PORT //< port for Enable line
245#define LCD_E_PIN 1 //< pin for Enable line
246#endif
247*/
248
249/* Bootmagic Lite key configuration */
250// #define BOOTMAGIC_LITE_ROW 0
251// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/shiro/info.json b/keyboards/shiro/info.json
new file mode 100644
index 000000000..71d4bb551
--- /dev/null
+++ b/keyboards/shiro/info.json
@@ -0,0 +1,114 @@
1{
2 "keyboard_name": "Shiro",
3 "url": "https://github.com/ShinoharaTa/keyboards/blob/master/Shiro/manual/build_guide_ja.md",
4 "maintainer": "T.Shinohara",
5 "width": 3,
6 "height": 5,
7 "layouts": {
8 "LAYOUT": {
9 "key_count": 15,
10 "layout": [
11 {
12 "x": 0,
13 "y": 0
14 },
15 {
16 "x": 1,
17 "y": 0
18 },
19 {
20 "x": 2,
21 "y": 0
22 },
23 {
24 "x": 3,
25 "y": 0
26 },
27 {
28 "x": 4,
29 "y": 0
30 },
31 {
32 "x": 0,
33 "y": 1
34 },
35 {
36 "x": 1,
37 "y": 1
38 },
39 {
40 "x": 2,
41 "y": 1
42 },
43 {
44 "x": 3,
45 "y": 1
46 },
47 {
48 "x": 4,
49 "y": 1
50 },
51 {
52 "x": 0,
53 "y": 2
54 },
55 {
56 "x": 1,
57 "y": 2
58 },
59 {
60 "x": 2,
61 "y": 2
62 },
63 {
64 "x": 3,
65 "y": 2
66 },
67 {
68 "x": 4,
69 "y": 2
70 },
71 {
72 "x": 0,
73 "y": 3
74 },
75 {
76 "x": 1,
77 "y": 3
78 },
79 {
80 "x": 2,
81 "y": 3
82 },
83 {
84 "x": 3,
85 "y": 3
86 },
87 {
88 "x": 4,
89 "y": 3
90 },
91 {
92 "x": 0,
93 "y": 4
94 },
95 {
96 "x": 1,
97 "y": 4
98 },
99 {
100 "x": 2,
101 "y": 4
102 },
103 {
104 "x": 3,
105 "y": 4
106 },
107 {
108 "x": 4,
109 "y": 4
110 }
111 ]
112 }
113 }
114}
diff --git a/keyboards/shiro/keymaps/check/config.h b/keyboards/shiro/keymaps/check/config.h
new file mode 100644
index 000000000..369388ada
--- /dev/null
+++ b/keyboards/shiro/keymaps/check/config.h
@@ -0,0 +1,19 @@
1/* Copyright 2019 T.Shinohara
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
17#pragma once
18
19// place overrides here
diff --git a/keyboards/shiro/keymaps/check/keymap.c b/keyboards/shiro/keymaps/check/keymap.c
new file mode 100644
index 000000000..1f41f61dd
--- /dev/null
+++ b/keyboards/shiro/keymaps/check/keymap.c
@@ -0,0 +1,66 @@
1/* Copyright 2019 T.Shinohara
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
18// Defines the keycodes used by our macros in process_record_user
19enum custom_keycodes {
20 TEST_A1 = SAFE_RANGE,
21 TEST_A2,
22 TEST_A3,
23 TEST_B1,
24 TEST_B2,
25 TEST_B3,
26 TEST_C1,
27 TEST_C2,
28 TEST_C3,
29 TEST_D1,
30 TEST_D2,
31 TEST_D3,
32 TEST_E1,
33 TEST_E2,
34 TEST_E3
35};
36
37const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38 [0] = LAYOUT( /* Base */
39 TEST_A1, TEST_A2, TEST_A3,
40 TEST_B1, TEST_B2, TEST_B3,
41 TEST_C1, TEST_C2, TEST_C3,
42 TEST_D1, TEST_D2, TEST_D3,
43 TEST_E1, TEST_E2, TEST_E3
44 )
45};
46
47bool process_record_user(uint16_t keycode, keyrecord_t *record) {
48 switch (keycode) {
49 case TEST_A1: if(record->event.pressed){ SEND_STRING("A1"); } break;
50 case TEST_A2: if(record->event.pressed){ SEND_STRING("A2"); } break;
51 case TEST_A3: if(record->event.pressed){ SEND_STRING("A3"); } break;
52 case TEST_B1: if(record->event.pressed){ SEND_STRING("B1"); } break;
53 case TEST_B2: if(record->event.pressed){ SEND_STRING("B2"); } break;
54 case TEST_B3: if(record->event.pressed){ SEND_STRING("B3"); } break;
55 case TEST_C1: if(record->event.pressed){ SEND_STRING("C1"); } break;
56 case TEST_C2: if(record->event.pressed){ SEND_STRING("C2"); } break;
57 case TEST_C3: if(record->event.pressed){ SEND_STRING("C3"); } break;
58 case TEST_D1: if(record->event.pressed){ SEND_STRING("D1"); } break;
59 case TEST_D2: if(record->event.pressed){ SEND_STRING("D2"); } break;
60 case TEST_D3: if(record->event.pressed){ SEND_STRING("D3"); } break;
61 case TEST_E1: if(record->event.pressed){ SEND_STRING("E1"); } break;
62 case TEST_E2: if(record->event.pressed){ SEND_STRING("E2"); } break;
63 case TEST_E3: if(record->event.pressed){ SEND_STRING("E3"); } break;
64 }
65 return true;
66}
diff --git a/keyboards/shiro/keymaps/check/readme.md b/keyboards/shiro/keymaps/check/readme.md
new file mode 100644
index 000000000..715ddd335
--- /dev/null
+++ b/keyboards/shiro/keymaps/check/readme.md
@@ -0,0 +1 @@
# The default keymap for Shiro \ No newline at end of file
diff --git a/keyboards/shiro/keymaps/default/config.h b/keyboards/shiro/keymaps/default/config.h
new file mode 100644
index 000000000..369388ada
--- /dev/null
+++ b/keyboards/shiro/keymaps/default/config.h
@@ -0,0 +1,19 @@
1/* Copyright 2019 T.Shinohara
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
17#pragma once
18
19// place overrides here
diff --git a/keyboards/shiro/keymaps/default/keymap.c b/keyboards/shiro/keymaps/default/keymap.c
new file mode 100644
index 000000000..b80c29452
--- /dev/null
+++ b/keyboards/shiro/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
1/* Copyright 2019 T.Shinohara
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
18enum layer_number {
19 _NUMBER = 0,
20 _CURSOL,
21 _MOUSE
22};
23
24#define NUMBER TO(_NUMBER)
25#define CURSOL TO(_CURSOL)
26#define MOUSE TO(_MOUSE)
27
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 [_NUMBER] = LAYOUT(
30 NUMBER, CURSOL, MOUSE,
31 KC_P7, KC_P8, KC_P9,
32 KC_P4, KC_P5, KC_P6,
33 KC_P1, KC_P2, KC_P3,
34 KC_P0, KC_BSPC, KC_ENT
35 ),
36 [_CURSOL] = LAYOUT(
37 NUMBER, CURSOL, MOUSE,
38 KC_HOME, KC_UP, KC_PGUP,
39 KC_LEFT, KC_ESC, KC_RIGHT,
40 KC_END, KC_DOWN, KC_PGDN,
41 KC_DEL, KC_BSPC, KC_ENT
42 ),
43 [_MOUSE] = LAYOUT(
44 NUMBER, CURSOL, MOUSE,
45 KC_CUT, KC_COPY, KC_PSTE,
46 KC_UNDO, KC_FIND, KC_AGIN,
47 XXXXXXX, XXXXXXX, XXXXXXX,
48 KC_DEL, KC_BSPC, KC_ENT
49 ),
50};
diff --git a/keyboards/shiro/keymaps/default/readme.md b/keyboards/shiro/keymaps/default/readme.md
new file mode 100644
index 000000000..715ddd335
--- /dev/null
+++ b/keyboards/shiro/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for Shiro \ No newline at end of file
diff --git a/keyboards/shiro/readme.md b/keyboards/shiro/readme.md
new file mode 100644
index 000000000..7c4c024a6
--- /dev/null
+++ b/keyboards/shiro/readme.md
@@ -0,0 +1,27 @@
1# 素 - Shiro
2
3![Shiro](https://cdn.discordapp.com/attachments/536423734144401422/597447002288291861/P7070070_cp.jpg)
4
5これは日本の名刺(55mmx91mm)に、3x5の15キーを詰め込んだとても小さいキーパッドです。
6
7This product is a 3x5 very small keypad.
8It is made in 55mm x 91mm according to the Japanese business card.
9
10Keyboard Maintainer: [T.Shinohara](https://github.com/ShinoharaTa)
11Hardware Supported: The Shiro PCBs, ProMicro supported. Using only Kailh Low Profile Switches.
12Hardware Availability: [Booth (Japanese Site)](https://shino3.booth.pm/items/1444895)
13日本国内ではBoothで入手できます: [Booth (Japanese Site)](https://shino3.booth.pm/items/1444895)
14
15![Shiro-backside](https://cdn.discordapp.com/attachments/536423734144401422/597464086640328724/20190707_033520.jpg)
16
17Make for this keyboard default keymap (after setting up your build environment):
18
19 make shiro:default
20
21Make for this keyboard build check keymap (after setting up your build environment):
22
23 make shiro:check
24
25See 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).
26
27[Build guide - Japanese](https://github.com/ShinoharaTa/keyboards/blob/master/Shiro/manual/build_guide_ja.md) \ No newline at end of file
diff --git a/keyboards/shiro/rules.mk b/keyboards/shiro/rules.mk
new file mode 100644
index 000000000..3ea1516fc
--- /dev/null
+++ b/keyboards/shiro/rules.mk
@@ -0,0 +1,80 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Bootloader selection
42# Teensy halfkay
43# Pro Micro caterina
44# Atmel DFU atmel-dfu
45# LUFA DFU lufa-dfu
46# QMK DFU qmk-dfu
47# atmega32a bootloadHID
48BOOTLOADER = caterina
49
50
51# If you don't know the bootloader type, then you can specify the
52# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
53# Teensy halfKay 512
54# Teensy++ halfKay 1024
55# Atmel DFU loader 4096
56# LUFA bootloader 4096
57# USBaspLoader 2048
58# OPT_DEFS += -DBOOTLOADER_SIZE=4096
59
60
61# Build Options
62# change yes to no to disable
63#
64BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
65MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
66EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
67CONSOLE_ENABLE = yes # Console for debug(+400)
68COMMAND_ENABLE = yes # Commands for debug and configuration
69# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
70SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
71# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
72NKRO_ENABLE = no # USB Nkey Rollover
73BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
74RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
75MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
76UNICODE_ENABLE = no # Unicode
77BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
78AUDIO_ENABLE = no # Audio output on port C6
79FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
80HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
diff --git a/keyboards/shiro/shiro.c b/keyboards/shiro/shiro.c
new file mode 100644
index 000000000..b30329d33
--- /dev/null
+++ b/keyboards/shiro/shiro.c
@@ -0,0 +1,51 @@
1/* Copyright 2019 T.Shinohara
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 "shiro.h"
17
18// Optional override functions below.
19// You can leave any or all of these undefined.
20// These are only required if you want to perform custom actions.
21
22/*
23
24void matrix_init_kb(void) {
25 // put your keyboard start-up code here
26 // runs once when the firmware starts up
27
28 matrix_init_user();
29}
30
31void matrix_scan_kb(void) {
32 // put your looping keyboard code here
33 // runs every cycle (a lot)
34
35 matrix_scan_user();
36}
37
38bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
39 // put your per-action keyboard code here
40 // runs for every action, just before processing by the firmware
41
42 return process_record_user(keycode, record);
43}
44
45void led_set_kb(uint8_t usb_led) {
46 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
47
48 led_set_user(usb_led);
49}
50
51*/
diff --git a/keyboards/shiro/shiro.h b/keyboards/shiro/shiro.h
new file mode 100644
index 000000000..9e088ba55
--- /dev/null
+++ b/keyboards/shiro/shiro.h
@@ -0,0 +1,41 @@
1/* Copyright 2019 T.Shinohara
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#define LAYOUT( \
29 k00, k01, k02, \
30 k10, k11, k12, \
31 k20, k21, k22, \
32 k30, k31, k32, \
33 k40, k41, k42 \
34) \
35{ \
36 { k00, k01, k02 }, \
37 { k10, k11, k12 }, \
38 { k20, k21, k22 }, \
39 { k30, k31, k32 }, \
40 { k40, k41, k42 } \
41}
diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/README.md b/keyboards/winkeyless/bface/keymaps/p3lim/README.md
new file mode 100644
index 000000000..81f99ec96
--- /dev/null
+++ b/keyboards/winkeyless/bface/keymaps/p3lim/README.md
@@ -0,0 +1,14 @@
1# p3lim's b.face layout
2
3![](https://user-images.githubusercontent.com/26496/61170794-bf8a2c80-a56e-11e9-893f-f1766e7a9a04.png)
4
5My layout using the winkeyless b.face X2 PCB. The keys indicated with a gray color was not supported by the layout so a custom one was made.
6
7### Building & Flashing
8
9- Hold <kbd>LCTRL</kbd> while connecting to put in flashing mode
10- Follow instructions in the main _bface_ directory
11
12### Layout notes
13
14The two additional keys were on pins 22+41 and 22+42, C3+B1 and C3+B2, which is mapped to col 10 row 1 and col 10 row 2 in the matrix.
diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c b/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c
new file mode 100644
index 000000000..0ec124529
--- /dev/null
+++ b/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c
@@ -0,0 +1,156 @@
1/*
2Copyright 2019 Adrian L Lange <legal@p3lim.net>
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#include QMK_KEYBOARD_H
19#include "quantum.h"
20
21#define LAYOUT_p3lim(\
22 K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \
23 K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, \
24 K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KC2, KD2, \
25 K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, KC1, \
26 K00, K10, K20, K56, K57, KB0, KC0 \
27){ \
28 { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KC_NO, KC_NO }, \
29 { K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC1, KC_NO, KC_NO }, \
30 { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC2, KD2, KC_NO }, \
31 { K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KC_NO, KC_NO }, \
32 { K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \
33 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
34 { KC_NO, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB6, KC6, KD6, KE6 }, \
35 { KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \
36}
37
38enum my_keycodes {
39 C_ESC0 = SAFE_RANGE, // layer 0 esc
40 C_ESC1 // layer 1 esc
41};
42
43// use compiler macros for simpler stuff
44#define C_NO1 RALT(KC_QUOT)
45#define C_NO2 RALT(KC_SCLN)
46#define C_NO3 RALT(KC_LBRC)
47#define C_KVM1 LCA(KC_1)
48#define C_KVM2 LCA(KC_2)
49#define C_KVM3 LCA(KC_3)
50#define C_KVM4 LCA(KC_4)
51
52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
53 /* QWERTY
54 * ,-----------------------------------------------------------------------------------------.
55 * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc |
56 * |-----------------------------------------------------------------------------------------+
57 * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | |
58 * |---------------------------------------------------------------------------------| Enter |
59 * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | \ | |
60 * |-----------------------------------------------------------------------------------------+
61 * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Del |
62 * |-----------------------------------------------------------------------------------------+
63 * | FN1 | Alt | GUI | Space | FN2 | Alt | Ctrl |
64 * `-----------------------------------------------------------------------------------------'
65 */
66 [0] = LAYOUT_p3lim(
67 C_ESC0, 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,
68 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,
69 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_BSLS, KC_ENT,
70 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_DEL,
71 MO(1), KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_RGUI, KC_RCTL
72 ),
73
74 /* FN1
75 * ,-----------------------------------------------------------------------------------------.
76 * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
77 * |-----------------------------------------------------------------------------------------+
78 * | Caps | Home| Up | End | PgUp| | | | | | | | | |
79 * |---------------------------------------------------------------------------------| |
80 * | | Left| Down|Right| PgDn| | | | | | | | | |
81 * |-----------------------------------------------------------------------------------------+
82 * | | KVM1| KVM2| KVM3| KVM4| | | | | | | | |
83 * |-----------------------------------------------------------------------------------------+
84 * | | | | | | | |
85 * `-----------------------------------------------------------------------------------------'
86 */
87 [1] = LAYOUT_p3lim(
88 C_ESC1, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
89 KC_CAPS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______,
90 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______,
91 _______, C_KVM1, C_KVM2, C_KVM3, C_KVM4, _______, _______, _______, _______, _______, _______, _______, _______,
92 _______, _______, _______, _______, KC_NO, _______, _______
93 ),
94
95 /* FN2
96 * ,-----------------------------------------------------------------------------------------.
97 * | | | | | | | | | | | | | | |
98 * |-----------------------------------------------------------------------------------------+
99 * | | | | | | | | | | | | Å | | |
100 * |---------------------------------------------------------------------------------| |
101 * | | | | | | | | | | | Ø | Æ | | |
102 * |-----------------------------------------------------------------------------------------+
103 * | | | | | | | | | | | | | |
104 * |-----------------------------------------------------------------------------------------+
105 * | | | | | | | |
106 * `-----------------------------------------------------------------------------------------'
107 */
108 [2] = LAYOUT_p3lim(
109 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
110 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO3, _______,
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO2, C_NO1, _______, _______,
112 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
113 KC_NO, _______, _______, _______, _______, _______, _______
114 ),
115 /*
116 [n] = LAYOUT_p3lim(
117 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
118 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
119 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
120 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
121 _______, _______, _______, _______, _______, _______, _______
122 ),
123 */
124};
125
126bool process_record_user(uint16_t keycode, keyrecord_t *record){
127 switch(keycode){
128 case C_ESC0: // layer 0
129 if(record->event.pressed){
130 if(get_mods() & MOD_MASK_SHIFT)
131 register_code(KC_GRAVE);
132 else
133 register_code(KC_ESCAPE);
134 } else {
135 if(get_mods() & MOD_MASK_SHIFT)
136 unregister_code(KC_GRAVE);
137 else
138 unregister_code(KC_ESCAPE);
139 }
140 return false;
141 case C_ESC1: // layer 1
142 if(record->event.pressed){
143 if(get_mods() & MOD_MASK_SHIFT)
144 register_code(KC_ESCAPE);
145 else
146 register_code(KC_GRAVE);
147 } else {
148 if(get_mods() & MOD_MASK_SHIFT)
149 unregister_code(KC_ESCAPE);
150 else
151 unregister_code(KC_GRAVE);
152 }
153 return false;
154 }
155 return true;
156}
diff --git a/keyboards/xd004/info.json b/keyboards/xd004/info.json
new file mode 100644
index 000000000..72c15da7f
--- /dev/null
+++ b/keyboards/xd004/info.json
@@ -0,0 +1,11 @@
1{
2 "keyboard_name": "XD004",
3 "maintainer": "",
4 "width": 4,
5 "height": 1,
6 "layouts": {
7 "LAYOUT_all": {
8 "layout": [{"label":"L", "x":0, "y":0}, {"label":"O", "x":1, "y":0}, {"label":"V", "x":2, "y":0}, {"label":"E", "x":3, "y":0}]
9 }
10 }
11}
diff --git a/keyboards/xd004/keymaps/default/keymap.c b/keyboards/xd004/keymaps/default/keymap.c
new file mode 100644
index 000000000..e82ce5e97
--- /dev/null
+++ b/keyboards/xd004/keymaps/default/keymap.c
@@ -0,0 +1,13 @@
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4
5 // 0: Base Layer
6 LAYOUT_all(KC_L, KC_O, KC_V, KC_E),
7
8};
9
10// Loop
11void matrix_scan_user(void){
12 // Empty
13};
diff --git a/keyboards/xd004/keymaps/default/readme.md b/keyboards/xd004/keymaps/default/readme.md
new file mode 100644
index 000000000..fdf07cc87
--- /dev/null
+++ b/keyboards/xd004/keymaps/default/readme.md
@@ -0,0 +1,7 @@
1# Default Keymap for XD004 PCB
2
3This keymap is not very useful, but it will validate that the board works.
4
5## Build
6
7To build the default keymap, simply run `make xd004:default`.
diff --git a/keyboards/xd004/keymaps/system_and_media/keymap.c b/keyboards/xd004/keymaps/system_and_media/keymap.c
new file mode 100644
index 000000000..740132639
--- /dev/null
+++ b/keyboards/xd004/keymaps/system_and_media/keymap.c
@@ -0,0 +1,61 @@
1#include QMK_KEYBOARD_H
2
3#define _BASE 0 // Base layer
4#define _SYSTEM 1 // System actions
5#define _VOLUME 2 // Volume actions
6
7#define SUPER_ALT_F4_TIMER 300 // Timeout on the super alt-f4 key
8
9/*
10 The idea of this is pretty simple: base layer has four action, two of which (the outermost)
11 are regular keystrokes on tap, and a momentary layer switch on hold, sending you to layers 1 and 2.
12
13 The other bit of customization here is the 'Super Alt F4' which does Alt-F4, and then Enter if tapped
14 again SUPER_ALT_F4_TIMER miliseconds after. This lets you Alt-F4 applications, and finally quickly
15 double-tap it to Alt-F4+Enter to shut down the PC.
16*/
17
18bool is_alt_f4_active = false;
19uint16_t alt_f4_timer = 0;
20
21enum custom_keycodes { // Make sure have the awesome keycode ready
22 SUPER_ALT_F4 = SAFE_RANGE,
23};
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26
27 // 0: Base Layer
28 [_BASE] = LAYOUT_all(LT(_SYSTEM, KC_F5), C(G(KC_LEFT)), C(G(KC_RIGHT)), LT(_VOLUME, KC_F7)),
29
30 // 1: System actions
31 [_SYSTEM] = LAYOUT_all(_______, SUPER_ALT_F4, G(KC_D), G(KC_L)),
32
33 // 2: Volume actions
34 [_VOLUME] = LAYOUT_all(KC_MEDIA_NEXT_TRACK, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _______),
35
36};
37
38bool process_record_user(uint16_t keycode, keyrecord_t *record) {
39 switch (keycode) { // This will do most of the grunt work with the keycodes.
40 case SUPER_ALT_F4:
41 if (record->event.pressed) {
42 if (!is_alt_f4_active) {
43 is_alt_f4_active = true;
44 tap_code_16(LALT(KC_F4); // Alt-F4
45 } else {
46 tap_code(KC_ENTER); // Tap enter
47 }
48 } else {
49 unregister_code(KC_TAB);
50 }
51 alt_f4_timer = timer_read();
52 break;
53 }
54 return true;
55}
56
57void matrix_scan_user(void) {
58 if (is_alt_f4_active && timer_elapsed(alt_f4_timer) > SUPER_ALT_F4_TIMER) {
59 is_alt_f4_active = false;
60 }
61};
diff --git a/keyboards/xd004/keymaps/system_and_media/readme.md b/keyboards/xd004/keymaps/system_and_media/readme.md
new file mode 100644
index 000000000..0fb3c61b6
--- /dev/null
+++ b/keyboards/xd004/keymaps/system_and_media/readme.md
@@ -0,0 +1,9 @@
1# Default Keymap for XD004 PCB
2
3A somehow more useful keymap, allowing one to move across virtual desktops on Windows, etc.
4
5It also has a 'Super Alt-F4' key for Windows that, when tapped does Alt-F4, unless two consecutive taps are less than 300ms apart, in which case the second tap becomes Enter. This allows you to close all apps doing taps, and then when the System shutdown window arrives you do a second quick tap and it will type enter, thus shutting down the computer.
6
7## Build
8
9To build the keymap, simply run `make xd004:system_and_media`.
diff --git a/keyboards/xd004/readme.md b/keyboards/xd004/readme.md
new file mode 100644
index 000000000..8b32c6a48
--- /dev/null
+++ b/keyboards/xd004/readme.md
@@ -0,0 +1,16 @@
1XD004
2==
3
44-keys board
5
6![Top View of a XD004 board](https://ae01.alicdn.com/kf/HTB1_G9IX21H3KVjSZFHq6zKppXa0/xd004-xiudi-4-Custom-Mechanical-Keyboard-4-keys-switch-leds-PCB-programmed-hot-swappable-macro-key.jpg)
7
8Keyboard Maintainer: QMK Community
9Hardware Supported: XD004 PCB v1.0
10Hardware Availability: [KPRepublic](https://kprepublic.com/products/xd004-xiudi-4-custom-mechanical-keyboard-4-keys-switch-leds-pcb-programmed-hot-swappable-macro-key-silver-case-micro-port)
11
12To build with a default keymap (not useful at all, have a look at other keymaps):
13
14```make xd004/v1:default```
15
16See 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/xd004/v1/config.h b/keyboards/xd004/v1/config.h
new file mode 100644
index 000000000..a141137e9
--- /dev/null
+++ b/keyboards/xd004/v1/config.h
@@ -0,0 +1,80 @@
1/*
2Copyright 2019 Sidney Bovet <sidney.bovet@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/*
19Note: the following configuration uses 98% of the flash memory, be
20careful if you enable anything else. Also have a look at rules.mk
21where some things are disabled to save space as well.
22*/
23
24#pragma once
25
26#include "config_common.h"
27
28/* USB Device descriptor parameter */
29#define VENDOR_ID 0xCDCD
30#define PRODUCT_ID 0x0404
31#define DEVICE_VER 0x0001
32// Note: unsure about manufacturer
33#define MANUFACTURER XIUDI
34#define PRODUCT XD004 v1
35#define DESCRIPTION XD004 v1 Keyboard PCB
36
37/* key matrix size */
38#define MATRIX_ROWS 1
39#define MATRIX_COLS 4
40
41/*
42 * Keyboard Matrix Assignments
43 *
44 * On this board we have direct connection: no diodes.
45 */
46#define DIRECT_PINS \
47 { \
48 { D3, D0, C4, B4 } \
49 }
50#define UNUSED_PINS
51
52/* Backlight Setup */
53// Looks like each backlight LED is connected to a single output, D5 is the one furtherst away from USB port
54#define BACKLIGHT_PIN D5
55#define BACKLIGHT_LEVELS 6
56
57/* COL2ROW or ROW2COL */
58#define DIODE_DIRECTION COL2ROW
59
60/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
61#define DEBOUNCE 5
62
63/* RGB Underglow
64This will not be used, as RGBLIGHT_ENABLE is set to 'no' in rules.mk
65We do not have enough space in the flash for this at the moment, maybe
66further optimizations can be done on that side.
67*/
68#define RGB_DI_PIN C6
69#define RGBLIGHT_EFFECT_STATIC_GRADIENT
70#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
71#define RGBLED_NUM 2
72#define RGBLIGHT_HUE_STEP 10
73#define RGBLIGHT_SAT_STEP 17
74#define RGBLIGHT_VAL_STEP 17
75
76/* disable action features */
77// #define NO_ACTION_ONESHOT // 462 bytes <- this needs to be un-commented out if Link Time Optimization is disabled, otherwise file is too large
78// The two below are implicit since we use LINK_TIME_OPTIMIZATION_ENABLE (in rules.mk)
79// #define NO_ACTION_MACRO
80// #define NO_ACTION_FUNCTION \ No newline at end of file
diff --git a/keyboards/xd004/v1/rules.mk b/keyboards/xd004/v1/rules.mk
new file mode 100644
index 000000000..ad2d732d4
--- /dev/null
+++ b/keyboards/xd004/v1/rules.mk
@@ -0,0 +1,70 @@
1# MCU name
2MCU = atmega16u2
3
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# LUFA specific
20# Target architecture (see library "Board Types" documentation).
21ARCH = AVR8
22
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
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 2048
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49BOOTLOADER = atmel-dfu
50
51
52# Build Options
53BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
54MOUSEKEY_ENABLE = no # Mouse keys(+4700)
55EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
56CONSOLE_ENABLE = no # Console for debug(+400)
57COMMAND_ENABLE = no # Commands for debug and configuration
58NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
59BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
60MIDI_ENABLE = no # MIDI controls
61AUDIO_ENABLE = no # Audio output on port C6
62UNICODE_ENABLE = no # Unicode
63BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
64RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
65SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
66
67# Saves about 5% of space:
68LINK_TIME_OPTIMIZATION_ENABLE = yes
69
70#LAYOUTS = ortho_1x4
diff --git a/keyboards/xd004/xd004.c b/keyboards/xd004/xd004.c
new file mode 100644
index 000000000..37a1dca14
--- /dev/null
+++ b/keyboards/xd004/xd004.c
@@ -0,0 +1,7 @@
1#include "xd004.h"
2
3void led_set_kb(uint8_t usb_led) {
4 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
5
6 led_set_user(usb_led);
7}
diff --git a/keyboards/xd004/xd004.h b/keyboards/xd004/xd004.h
new file mode 100644
index 000000000..a53ad537f
--- /dev/null
+++ b/keyboards/xd004/xd004.h
@@ -0,0 +1,15 @@
1#pragma once
2
3#include "quantum.h"
4//#include "led.h"
5
6/* XD60 Keymap Definition Macro */
7/*
8 +--------------------------------+
9 | K0 K1 K2 K3 [----- USB
10 +--------------------------------+
11*/
12#define LAYOUT_all(K00, K01, K02, K03) \
13 { \
14 { K00, K01, K02, K03 } \
15 }
diff --git a/layouts/community/ortho_1x4/belgorath/keymap.c b/layouts/community/ortho_1x4/belgorath/keymap.c
new file mode 100644
index 000000000..ace402295
--- /dev/null
+++ b/layouts/community/ortho_1x4/belgorath/keymap.c
@@ -0,0 +1,24 @@
1#include QMK_KEYBOARD_H
2
3extern keymap_config_t keymap_config;
4
5// Each layer gets a name for readability, which is then used in the keymap matrix below.
6// The underscores don't mean anything - you can have a layer called STUFF or any other name.
7// Layer names don't all need to be of the same length, obviously, and you can also skip them
8// entirely and just use numbers.
9
10#define _DEFAULT 0
11#define _LOWER 1
12#define LOWER LT(_LOWER, KC_PENT)
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15
16[_DEFAULT] = LAYOUT_ortho_1x4 (
17 LOWER, KC_P0, KC_PDOT,KC_PAST
18),
19
20/* Lower */
21[_LOWER] = LAYOUT_ortho_1x4 (
22 _______,_______,_______,_______
23),
24};
diff --git a/layouts/community/ortho_1x4/layout.json b/layouts/community/ortho_1x4/layout.json
new file mode 100644
index 000000000..6103c7e24
--- /dev/null
+++ b/layouts/community/ortho_1x4/layout.json
@@ -0,0 +1 @@
["","","",""] \ No newline at end of file
diff --git a/util/docker_build.sh b/util/docker_build.sh
index c573ebcae..6feeb1f5d 100755
--- a/util/docker_build.sh
+++ b/util/docker_build.sh
@@ -46,5 +46,5 @@ fi
46dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows 46dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows
47 47
48# Run container and build firmware 48# Run container and build firmware
49docker run --rm -it $usb_args -v "$dir":/qmk_firmware qmkfm/qmk_firmware \ 49docker run --rm -it $usb_args -w /qmk_firmware/ -v "$dir":/qmk_firmware qmkfm/base_container \
50 make "$keyboard${keymap:+:$keymap}${target:+:$target}" 50 make "$keyboard${keymap:+:$keymap}${target:+:$target}"
diff --git a/util/travis_build.sh b/util/travis_build.sh
index 554ec8b68..fd5511a72 100755
--- a/util/travis_build.sh
+++ b/util/travis_build.sh
@@ -3,7 +3,7 @@
3# if docker is installed - call make within the qmk docker image 3# if docker is installed - call make within the qmk docker image
4if command -v docker >/dev/null; then 4if command -v docker >/dev/null; then
5 function make() { 5 function make() {
6 docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/qmk_firmware make "$@" 6 docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
7 } 7 }
8fi 8fi
9 9
diff --git a/util/travis_test.sh b/util/travis_test.sh
index 3be4afff7..e6a50ac16 100644
--- a/util/travis_test.sh
+++ b/util/travis_test.sh
@@ -22,7 +22,7 @@ fi
22# if docker is installed - call make within the qmk docker image 22# if docker is installed - call make within the qmk docker image
23if command -v docker >/dev/null; then 23if command -v docker >/dev/null; then
24 function make() { 24 function make() {
25 docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/qmk_firmware make "$@" 25 docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
26 } 26 }
27fi 27fi
28 28