diff options
83 files changed, 2425 insertions, 568 deletions
diff --git a/common_features.mk b/common_features.mk index f5bef3d5dd..20c38ae82e 100644 --- a/common_features.mk +++ b/common_features.mk @@ -298,19 +298,11 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes) endif DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce -# Debounce Modules. If implemented in matrix.c, don't use these. +# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually. DEBOUNCE_TYPE?= sym_g -VALID_DEBOUNCE_TYPES := sym_g eager_pk custom -ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) - $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm) +ifneq ($(strip $(DEBOUNCE_TYPE)), custom) + QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c endif -ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) - QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c -else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) - QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c -endif - - ifeq ($(strip $(SPLIT_KEYBOARD)), yes) OPT_DEFS += -DSPLIT_KEYBOARD diff --git a/docs/_summary.md b/docs/_summary.md index 09ea9e6e79..35936df00d 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -60,6 +60,7 @@ * [Key Lock](feature_key_lock.md) * [Layouts](feature_layouts.md) * [Leader Key](feature_leader_key.md) + * [LED Matrix](feature_led_matrix.md) * [Macros](feature_macros.md) * [Mouse Keys](feature_mouse_keys.md) * [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) diff --git a/docs/config_options.md b/docs/config_options.md index 8fa6e944f0..336feee8fd 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -307,8 +307,8 @@ Use these to enable or disable building certain features. The more you have enab * Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common * `CUSTOM_MATRIX` * Allows replacing the standard matrix scanning routine with a custom one. -* `CUSTOM_DEBOUNCE` - * Allows replacing the standard key debouncing routine with a custom one. +* `DEBOUNCE_TYPE` + * Allows replacing the standard key debouncing routine with an alternative or custom one. * `WAIT_FOR_USB` * Forces the keyboard to wait for a USB connection to be established before it starts up * `NO_USB_STARTUP_CHECK` diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index cc84e141f9..f291fc2d21 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -321,7 +321,7 @@ uint32_t layer_state_set_user(uint32_t state) { ``` ### `layer_state_set_*` Function Documentation -* Keyboard/Revision: `void uint32_t layer_state_set_kb(uint32_t state)` +* Keyboard/Revision: `uint32_t layer_state_set_kb(uint32_t state)` * Keymap: `uint32_t layer_state_set_user(uint32_t state)` The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status) diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md index 82b3d7de12..5d4343f08b 100644 --- a/docs/feature_debounce_type.md +++ b/docs/feature_debounce_type.md @@ -2,45 +2,38 @@ QMK supports multiple debounce algorithms through its debounce API. -The underlying debounce algorithm is determined by which matrix.c file you are using. - The logic for which debounce method called is below. It checks various defines that you have set in rules.mk ``` +DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce DEBOUNCE_TYPE?= sym_g -VALID_DEBOUNCE_TYPES := sym_g eager_pk custom -ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) - $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm) -endif -ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) - QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c -else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) - QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c +ifneq ($(strip $(DEBOUNCE_TYPE)), custom) + QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c endif ``` # Debounce selection -| DEBOUNCE_ALGO | Description | What to do | -| ------------- | --------------------------------------------------- | ----------------------------- | -| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | -| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | +| DEBOUNCE_TYPE | Description | What else is needed | +| ------------- | --------------------------------------------------- | ----------------------------- | +| Not defined | Use the default algorithm, currently sym_g | Nothing | +| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| anything_else | Use another algorithm from quantum/debounce/* | Nothing | -**Regarding split keyboards**: +**Regarding split keyboards**: The debounce code is compatible with split keyboards. # Use your own debouncing code * Set ```DEBOUNCE_TYPE = custom ```. * Add ```SRC += debounce.c``` -* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. +* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples. * Debouncing occurs after every raw matrix scan. * Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. # Changing between included debouncing methods You can either use your own code, by including your own debounce.c, or switch to another included one. Included debounce methods are: -* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key -* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed. +* eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key +* sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed. diff --git a/docs/features.md b/docs/features.md index 9030500a2b..014d6ef107 100644 --- a/docs/features.md +++ b/docs/features.md @@ -17,6 +17,7 @@ QMK has a staggering number of features for building your keyboard. It can take * [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. +* [LED Matrix](feature_led_matrix.md) - LED Matrix single color lights for per key lighting (Single Color, not RGB). * [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. * [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it. diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index bb7e1e7e3b..75eafd42cc 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -143,9 +143,9 @@ As there is no standard split communication driver for ARM-based split keyboards Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan(). -`CUSTOM_DEBOUNCE` +`DEBOUNCE_TYPE` -Lets you replace the default key debouncing routine with your own code. You will need to provide your own implementation of debounce(). +Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation. ## Customizing Makefile Options on a Per-Keymap Basis diff --git a/docs/hand_wire.md b/docs/hand_wire.md index 697a508052..d2cba770e2 100644 --- a/docs/hand_wire.md +++ b/docs/hand_wire.md @@ -196,7 +196,7 @@ If you're more of a visual learner, or want some additional tips and something m From here, you should have a working keyboard once you program a firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch. -To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/). +To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/) (paid) or [Visual Studio Code](https://code.visualstudio.com) (free). The first thing we're going to do is create a new project using the script in the root directory of the firmware. In your terminal, run this command with `<project_name>` replaced by the name of your project - it'll need to be different from any other project in the `keyboards/` folder: diff --git a/keyboards/40percentclub/foobar/info.json b/keyboards/40percentclub/foobar/info.json index cb7f29b256..6d722ae6ee 100644 --- a/keyboards/40percentclub/foobar/info.json +++ b/keyboards/40percentclub/foobar/info.json @@ -2,10 +2,12 @@ "keyboard_name": "foobar", "url": "", "maintainer": "qmk", - "width": 6, - "height": 2, + "width": 10, + "height": 3, "layouts": { "LAYOUT_macro": { + "width": 5, + "height": 3, "key_count": 15, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, diff --git a/keyboards/atreus/keymaps/yttyx/README.md b/keyboards/atreus/keymaps/yttyx/README.md index 9ed9d6239b..aac02c6c11 100644 --- a/keyboards/atreus/keymaps/yttyx/README.md +++ b/keyboards/atreus/keymaps/yttyx/README.md @@ -1,77 +1,103 @@ # Overview -A Balance 12 layout for the Atreus keyboard. +This layout is based on Balance Twelve (mirror variant) by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/) +for more information. It's designed for left-handers who use their right hand for the mouse. -Balance 12 was created by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/) -for some background on the design of the layout. +## To build -* The variant used here is a mirror of the original for left-handers -* The central column of punctuation keys has been moved elsewhere -* Home positions for the left and right forefingers are *T* and *A* respectively +``` +sudo make atreus:yttyx +``` -## To build/flash +## To flash (example) -> make atreus:yttyx:avrdude +``` +sudo avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_yttyx.hex -P /dev/ttyACM0 +``` ## Layers ### Base: - .----------------------------------. .------------------------------. - | P | L | C | D | W | | U | O | Y | K | Q | - +------+------+------+-----+-------| |------+-----+-----+-----+-----| - | N | R | S | T | M | | A | E | I | H |