summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.editorconfig18
-rw-r--r--.vscode/extensions.json6
-rw-r--r--common_features.mk3
-rw-r--r--docs/_summary.md15
-rw-r--r--docs/config_options.md2
-rw-r--r--docs/feature_auto_shift.md22
-rw-r--r--docs/feature_stenography.md (renamed from docs/stenography.md)0
-rw-r--r--docs/feature_tap_dance.md4
-rw-r--r--docs/features.md16
-rw-r--r--docs/flashing.md74
-rw-r--r--keyboards/chimera_ortho/chimera_ortho.c31
-rw-r--r--keyboards/chimera_ortho/chimera_ortho.h66
-rw-r--r--keyboards/chimera_ortho/config.h87
-rw-r--r--keyboards/chimera_ortho/keymaps/default/keymap.c193
-rw-r--r--keyboards/chimera_ortho/matrix.c164
-rw-r--r--keyboards/chimera_ortho/rules.mk78
-rw-r--r--keyboards/eco/eco.h17
-rw-r--r--keyboards/eco/keymaps/hexwire/keymap.c120
-rw-r--r--keyboards/eco/keymaps/hexwire/rules.mk25
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/README.md25
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c568
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c345
-rw-r--r--keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c275
-rw-r--r--keyboards/ergodox_infinity/keymaps/nordic_ergo/readme.md9
-rw-r--r--keyboards/ergodox_infinity/readme.md2
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/config.h3
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/keymap.c32
-rw-r--r--keyboards/frosty_flake/keymaps/QFR_JM/readme.md53
-rw-r--r--keyboards/gh60/keymaps/maxr1998/keymap.c2
-rw-r--r--keyboards/handwired/terminus_mini/config.h2
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/config.h2
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/keymap.c12
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/readme.md191
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/README.md226
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/config.h3
-rw-r--r--keyboards/nyquist/keymaps/DivergeJM/keymap.c33
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/config.h48
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/keymap.c191
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/readme.md22
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/rules.mk10
-rw-r--r--keyboards/planck/keymaps/gunp/keymap.c21
-rw-r--r--keyboards/planck/keymaps/gunp/readme.md8
-rw-r--r--keyboards/ps2avrGB/README.md17
-rwxr-xr-xkeyboards/ps2avrGB/program3
-rw-r--r--keyboards/tada68/keymaps/isoish/keymap.c48
-rw-r--r--keyboards/tada68/keymaps/isoish/readme.md3
-rw-r--r--keyboards/tada68/keymaps/isoish/rules.mk21
-rwxr-xr-xkeyboards/tada68/tada68.h33
-rw-r--r--layouts/community/ergodox/qwerty_code_friendly/keymap.c89
-rw-r--r--layouts/community/ergodox/qwerty_code_friendly/readme.md30
-rw-r--r--layouts/community/ergodox/zweihander-osx/keymap.c81
-rw-r--r--quantum/pointing_device.h2
-rw-r--r--quantum/process_keycode/process_combo.c6
-rw-r--r--quantum/process_keycode/process_key_lock.c2
-rw-r--r--tmk_core/common/action.c39
-rw-r--r--tmk_core/common/action_tapping.h2
-rw-r--r--tmk_core/protocol/chibios/usb_main.c2
57 files changed, 2986 insertions, 416 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..82837f7f13
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,18 @@
+# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+
+# We recommend you to keep these unchanged
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+indent_size = 4
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000000..0543f3de1e
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,6 @@
+// Suggested extensions
+{
+ "recommendations": [
+ "EditorConfig.EditorConfig"
+ ]
+}
diff --git a/common_features.mk b/common_features.mk
index a7c366a109..3c77f588ed 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -70,7 +70,8 @@ ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
endif
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/pointing_device.c
+ OPT_DEFS += -DPOINTING_DEVICE_ENABLE
+ SRC += $(QUANTUM_DIR)/pointing_device.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
diff --git a/docs/_summary.md b/docs/_summary.md
index b433181a60..1a7e1fc96e 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -3,6 +3,7 @@
* [Install Build Tools](getting_started_build_tools.md)
* Alternative: [Vagrant Guide](getting_started_vagrant_guide.md)
* [Build/Compile instructions](getting_started_make_guide.md)
+ * [Flashing instructions](flashing.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
@@ -21,6 +22,7 @@
* [Features](features.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
+ * [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bootmagic](feature_bootmagic.md)
* [Dynamic Macros](feature_dynamic_macros.md)
@@ -31,6 +33,7 @@
* [Mouse keys](feature_mouse_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [PS2 Mouse](feature_ps2_mouse.md)
+ * [RGB Lighting](feature_rgblight.md)
* [Space Cadet](feature_space_cadet.md)
* [Stenography](feature_stenography.md)
* [Tap Dance](feature_tap_dance.md)
@@ -51,20 +54,20 @@
* [Basic](keycodes_basic.md)
* [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
* [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
- * [Layer Switching](feature_common_shortcuts.md#switching-and-toggling-layers)
- * [Mod+Key](feature_common_shortcuts.md#modifier-keys)
- * [Mod Tap](feature_common_shortcuts.md#mod-tap)
- * [One Shot Keys](feature_common_shortcuts.md#one-shot-keys)
+ * [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
+ * [Mod+Key](feature_advanced_keycodes.md#modifier-keys)
+ * [Mod Tap](feature_advanced_keycodes.md#mod-tap)
+ * [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Quantum](quantum_keycodes.md)
* [RGB Light](feature_rgblight.md#rgblight-keycodes)
- * [Shifted Keys](feature_common_shortcuts.md#shifted-keycodes)
+ * [Shifted Keys](feature_advanced_keycodes.md#shifted-keycodes)
* [Stenography](feature_stenography.md#keycode-reference)
* [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [Unit Testing](unit_testing.md)
* For Makers and Modders
- * [Hand Wiring Guide](hand_wiring.md)
+ * [Hand Wiring Guide](hand_wire.md)
* [ISP flashing guide](isp_flashing_guide.md)
* [Modding your keyboard](modding_your_keyboard.md)
diff --git a/docs/config_options.md b/docs/config_options.md
index de67630adc..faa9c64814 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -109,6 +109,8 @@ If you define these options you will enable the associated feature, which may in
* `#define TAPPING_TERM 200`
* how long before a tap becomes a hold
+* `#define RETRO_TAPPING`
+ * tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
* `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD`
diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md
index 54052a74db..0f482ccaae 100644
--- a/docs/feature_auto_shift.md
+++ b/docs/feature_auto_shift.md
@@ -136,24 +136,22 @@ completely normal and with no intention of shifted keys.
#### An example run
-'''
-hello world. my name is john doe. i am a computer programmer playing with
-keyboards right now.
+ hello world. my name is john doe. i am a computer programmer playing with
+ keyboards right now.
-[PRESS KC_ASDN quite a few times]
+ [PRESS KC_ASDN quite a few times]
-heLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH
-KEYboArDS RiGHT NOw.
+ heLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH
+ KEYboArDS RiGHT NOw.
-[PRESS KC_ASUP a few times]
+ [PRESS KC_ASUP a few times]
-hello world. my name is john Doe. i am a computer programmer playing with
-keyboarDs right now.
+ hello world. my name is john Doe. i am a computer programmer playing with
+ keyboarDs right now.
-[PRESS KC_ASRP]
+ [PRESS KC_ASRP]
-115
-'''
+ 115
The keyboard typed `115` which represents your current `AUTO_SHIFT_TIMEOUT`
value. You are now set! Practice on the *D* key a little bit that showed up
diff --git a/docs/stenography.md b/docs/feature_stenography.md
index 5b457a2a6c..5b457a2a6c 100644
--- a/docs/stenography.md
+++ b/docs/feature_stenography.md
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index 32dffa9cd3..24cd2b4407 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -200,12 +200,12 @@ typedef struct {
int cur_dance (qk_tap_dance_state_t *state) {
if (state->count == 1) {
//If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP
- if (state->interrupted || state->!pressed) return SINGLE_TAP;
+ if (state->interrupted || state->pressed==0) return SINGLE_TAP;
else return SINGLE_HOLD;
}
//If count = 2, and it has been interrupted - assume that user is trying to type the letter associated
//with single tap. In example below, that means to send `xx` instead of `Escape`.
- else if (state->count = 2) {
+ else if (state->count == 2) {
if (state->interrupted) return DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
diff --git a/docs/features.md b/docs/features.md
index afffead499..b315139bb7 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -5,20 +5,22 @@ QMK has a staggering number of features for building your keyboard. It can take
* [Advanced Keycodes](feature_advanced_keycodes.md) - Change layers, type shifted keys, and more. Go beyond typing simple characters.
* [Audio](feature_audio.md) - Connect a speaker to your keyboard for audio feedback, midi support, and music mode.
-* [Backlight](feature_backlight.md) - LED lighting support for your keyboard
-* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys
+* [Auto Shift](feature_auto_shift.md) - Tap for the normal key, hold slightly longer for its shifted state.
+* [Backlight](feature_backlight.md) - LED lighting support for your keyboard.
+* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
-* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key
-* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard
+* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
+* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
* [Pointing Device](feature_pointing_device.md) - Framework for connecting your custom pointing device to your keyboard.
* [PS2 Mouse](feature_ps2_mouse.md) - Driver for connecting a ps2 mouse directly to your keyboard.
+* [RGB Light](feature_rgblight.md) - RGB lighting for your keyboard.
* [Space Cadet](feature_space_cadet_shift.md) - Use your left/right shift keys to type parenthesis and brackets.
* [Stenography](feature_stenography.md) - Put your keyboard into Plover mode for stenography use.
-* [Tap Dance](feature_tap_dance.md) - Make a single key do as many things as you want
-* [Terminal](feature_terminal.md) - CLI interface to the internals of your keyboard
+* [Tap Dance](feature_tap_dance.md) - Make a single key do as many things as you want.
+* [Terminal](feature_terminal.md) - CLI interface to the internals of your keyboard.
* [Thermal Printer](feature_thermal_printer.md) - Connect a thermal printer to your keyboard to be able to toggle on a printed log of everything you type.
* [Unicode](feature_unicode.md) - Unicode input support.
-* [Userspace](feature_userspace.md) - Share code between different keymaps and keyboards
+* [Userspace](feature_userspace.md) - Share code between different keymaps and keyboards.
diff --git a/docs/flashing.md b/docs/flashing.md
new file mode 100644
index 0000000000..a61634d215
--- /dev/null
+++ b/docs/flashing.md
@@ -0,0 +1,74 @@
+# Flashing Intrustructions
+
+There are quite a few different types of bootloaders that keyboards use, and just about all of the use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
+
+## DFU
+
+Atmel's DFU bootloader comes on all atmega32u4 chips by default, and is used by many keyboards that have their own ICs on their PCBs (Older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader (or QMK's fork) (Newer OLKB boards) that adds in additional features specific to that hardware.
+
+These bootloaders are usually 4096 bytes for the atmega32u4 chip.
+
+Compatible flashers:
+
+* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
+* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended commandline)
+* [Atmel's Flip](http://www.atmel.com/tools/flip.aspx) (not recommended)
+
+Flashing sequence:
+
+1. Press the `RESET` keycode, or tap the RESET button (or short RST to GND).
+2. Wait for the OS to detect the device
+3. Erase the memory (may be done automatically)
+4. Flash a .hex file
+5. Reset the device into application mode (may be done automatically)
+
+or:
+
+ make <keyboard>:<keymap>:dfu
+
+## Caterina
+
+Arduino boards and their clones use the [Caterina bootloader](https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/bootloaders/caterina) (any keyboard built with a Pro Micro, or clone), and uses the avr109 protocol to communicate through virtual serial. Bootloaders like [A-Star](https://www.pololu.com/docs/0J61/9) are based on Caterina.
+
+This block of code allows for Caterina compatibility in QMK:
+
+ #define CATERINA_BOOTLOADER
+
+These bootloaders are usually 4096 bytes for the atmega32u4 chip.
+
+Compatible flashers:
+
+* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
+* [avrdude](http://www.nongnu.org/avrdude/) with avr109 / `:avrdude` (recommended commandline)
+* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
+
+Flashing sequence:
+
+1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
+2. Wait for the OS to detect the device
+4. Flash a .hex file
+5. Wait for the device to reset automatically
+
+or
+
+ make <keyboard>:<keymap>:avrdude
+
+## Halfkay
+
+Halfkay is a super-slim protocol developed by PJRC that uses HID, and come on all Teensys (namely the 2.0).
+
+This bootloader is 512 bytes.
+
+Compatible flashers:
+
+* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
+* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
+* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) (recommended commandline)
+
+Flashing sequence:
+
+1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
+2. Wait for the OS to detect the device
+4. Flash a .hex file
+5. Reset the device into application mode (may be done automatically)
+
diff --git a/keyboards/chimera_ortho/chimera_ortho.c b/keyboards/chimera_ortho/chimera_ortho.c
new file mode 100644
index 0000000000..2a602cf2f7
--- /dev/null
+++ b/keyboards/chimera_ortho/chimera_ortho.c
@@ -0,0 +1,31 @@
+#include "chimera_ortho.h"
+
+void uart_init(void) {
+ SERIAL_UART_INIT();
+}
+
+void led_init(void) {
+ DDRD |= (1<<1);
+ PORTD |= (1<<1);
+ DDRF |= (1<<4) | (1<<5);
+ PORTF |= (1<<4) | (1<<5);
+}
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ matrix_init_user();
+ uart_init();
+ led_init();
+}
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+ matrix_scan_user();
+}
+
+void led_set_kb(uint8_t usb_led) {
+
+}
diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h
new file mode 100644
index 0000000000..c21b37ff80
--- /dev/null
+++ b/keyboards/chimera_ortho/chimera_ortho.h
@@ -0,0 +1,66 @@
+#ifndef CHIMERA_ORTHO_H
+#define CHIMERA_ORTHO_H
+
+#include "quantum.h"
+#include "matrix.h"
+#include "backlight.h"
+#include <stddef.h>
+
+#define red_led_off PORTF |= (1<<5)
+#define red_led_on PORTF &= ~(1<<5)
+#define blu_led_off PORTF |= (1<<4)
+#define blu_led_on PORTF &= ~(1<<4)
+#define grn_led_off PORTD |= (1<<1)
+#define grn_led_on PORTD &= ~(1<<1)
+
+#define set_led_off red_led_off; grn_led_off; blu_led_off
+#define set_led_red red_led_on; grn_led_off; blu_led_off
+#define set_led_blue red_led_off; grn_led_off; blu_led_on
+#define set_led_green red_led_off; grn_led_on; blu_led_off
+#define set_led_yellow red_led_on; grn_led_on; blu_led_off
+#define set_led_magenta red_led_on; grn_led_off; blu_led_on
+#define set_led_cyan red_led_off; grn_led_on; blu_led_on
+#define set_led_white red_led_on; grn_led_on; blu_led_on
+
+/*
+#define LED_B 5
+#define LED_R 6
+#define LED_G 7
+
+#define all_leds_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
+
+#define red_led_on PORTF |= (1<<LED_R)
+#define red_led_off PORTF &= ~(1<<LED_R)
+#define grn_led_on PORTF |= (1<<LED_G)
+#define grn_led_off PORTF &= ~(1<<LED_G)
+#define blu_led_on PORTF |= (1<<LED_B)
+#define blu_led_off PORTF &= ~(1<<LED_B)
+
+#define set_led_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
+#define set_led_red PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_G) | (1<<LED_R)
+#define set_led_blue PORTF = PORTF & ~(1<<LED_G) & ~(1<<LED_R) | (1<<LED_B)
+#define set_led_green PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_R) | (1<<LED_G)
+#define set_led_yellow PORTF = PORTF & ~(1<<LED_B) | (1<<LED_R) | (1<<LED_G)
+#define set_led_magenta PORTF = PORTF & ~(1<<LED_G) | (1<<LED_R) | (1<<LED_B)
+#define set_led_cyan PORTF = PORTF & ~(1<<LED_R) | (1<<LED_B) | (1<<LED_G)
+#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
+*/
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
+ k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
+ k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
+ k45, k46, k47, k48 \
+) \
+{ \
+ { KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
+ { KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
+ { KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
+ { KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
+ { KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO }, \
+}
+
+#endif
diff --git a/keyboards/chimera_ortho/config.h b/keyboards/chimera_ortho/config.h
new file mode 100644
index 0000000000..44c6212b17
--- /dev/null
+++ b/keyboards/chimera_ortho/config.h
@@ -0,0 +1,87 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER unknown
+#define PRODUCT Chimera Ortho
+#define DESCRIPTION q.m.k. keyboard firmware for Chimera Ortho
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 10
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+//#define BACKLIGHT_LEVELS 3
+
+#define ONESHOT_TIMEOUT 500
+
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+#define PREVENT_STUCK_MODIFIERS
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+//UART settings for communication with the RF microcontroller
+#define SERIAL_UART_BAUD 1000000
+#define SERIAL_UART_DATA UDR1
+#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
+#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
+#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
+#define SERIAL_UART_INIT() do { \
+ /* baud rate */ \
+ UBRR1L = SERIAL_UART_UBRR; \
+ /* baud rate */ \
+ UBRR1H = SERIAL_UART_UBRR >> 8; \
+ /* enable TX and RX */ \
+ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
+ /* 8-bit data */ \
+ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
+ } while(0)
+
+#endif
diff --git a/keyboards/chimera_ortho/keymaps/default/keymap.c b/keyboards/chimera_ortho/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ef477e6527
--- /dev/null
+++ b/keyboards/chimera_ortho/keymaps/default/keymap.c
@@ -0,0 +1,193 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include "chimera_ortho.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names d