aboutsummaryrefslogtreecommitdiff
path: root/docs/config_options.md
diff options
context:
space:
mode:
authorAlex Ong <the.onga@gmail.com>2019-01-04 19:39:14 +1100
committerAlex Ong <the.onga@gmail.com>2019-01-04 19:39:14 +1100
commit47c91fc7f75ae0a477e55b687aa0fc30da0a283c (patch)
tree65ad39452748ff2e6d4a83ce54ede6ca22c9ada9 /docs/config_options.md
parentac9b88e8ccbbf38762871504cd827ff0d941c426 (diff)
parent563ce3f225d981ce460c12ca5130dfe47af41df0 (diff)
downloadqmk_firmware-47c91fc7f75ae0a477e55b687aa0fc30da0a283c.tar.gz
qmk_firmware-47c91fc7f75ae0a477e55b687aa0fc30da0a283c.zip
Merge branch 'master' of https://github.com/qmk/qmk_firmware
Diffstat (limited to 'docs/config_options.md')
-rw-r--r--docs/config_options.md109
1 files changed, 99 insertions, 10 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index afc29fae9..085ab3ee5 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -119,8 +119,8 @@ If you define these options you will enable the associated feature, which may in
119 119
120* `#define FORCE_NKRO` 120* `#define FORCE_NKRO`
121 * NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 121 * NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
122* `#define PREVENT_STUCK_MODIFIERS` 122* `#define STRICT_LAYER_RELEASE`
123 * stores the layer a key press came from so the same layer is used when the key is released, regardless of which layers are enabled 123 * force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
124 124
125## Behaviors That Can Be Configured 125## Behaviors That Can Be Configured
126 126
@@ -132,16 +132,22 @@ If you define these options you will enable the associated feature, which may in
132* `#define TAPPING_TOGGLE 2` 132* `#define TAPPING_TOGGLE 2`
133 * how many taps before triggering the toggle 133 * how many taps before triggering the toggle
134* `#define PERMISSIVE_HOLD` 134* `#define PERMISSIVE_HOLD`
135 * makes tap and hold keys work better for fast typers who don't want tapping term set above 500 135 * makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
136 * See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details 136 * See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
137* `#define IGNORE_MOD_TAP_INTERRUPT` 137* `#define IGNORE_MOD_TAP_INTERRUPT`
138 * makes it possible to do rolling combos (zx) with keys that convert to other keys on hold 138 * makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
139 * See [Mod tap interrupt](feature_advanced_keycodes.md#mod-tap-interrupt) for details 139 * See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
140* `#define TAPPING_FORCE_HOLD` 140* `#define TAPPING_FORCE_HOLD`
141 * makes it possible to use a dual role key as modifier shortly after having been tapped 141 * makes it possible to use a dual role key as modifier shortly after having been tapped
142 * See [Hold after tap](feature_advanced_keycodes.md#hold-after-tap) 142 * See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
143 * Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
143* `#define LEADER_TIMEOUT 300` 144* `#define LEADER_TIMEOUT 300`
144 * how long before the leader key times out 145 * how long before the leader key times out
146 * If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped.
147* `#define LEADER_PER_KEY_TIMING`
148 * sets the timer for leader key chords to run on each key press rather than overall
149* `#define LEADER_KEY_STRICT_KEY_PROCESSING`
150 * Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify `MT(MOD_CTL, KC_A)` if you want to use `KC_A`.
145* `#define ONESHOT_TIMEOUT 300` 151* `#define ONESHOT_TIMEOUT 300`
146 * how long before oneshot times out 152 * how long before oneshot times out
147* `#define ONESHOT_TAP_TOGGLE 2` 153* `#define ONESHOT_TAP_TOGGLE 2`
@@ -155,6 +161,12 @@ If you define these options you will enable the associated feature, which may in
155 going to produce the 500 keystrokes a second needed to actually get more than a 161 going to produce the 500 keystrokes a second needed to actually get more than a
156 few ms of delay from this. But if you're doing chording on something with 3-4ms 162 few ms of delay from this. But if you're doing chording on something with 3-4ms
157 scan times? You probably want this. 163 scan times? You probably want this.
164* `#define COMBO_COUNT 2`
165 * Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature.
166* `#define COMBO_TERM 200`
167 * how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined.
168* `#define TAP_CODE_DELAY 100`
169 * Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
158 170
159## RGB Light Configuration 171## RGB Light Configuration
160 172
@@ -185,12 +197,48 @@ If you define these options you will enable the associated feature, which may in
185 197
186Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk 198Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk
187 199
188* `#define SPLIT_HAND_PIN B7` 200### Setting Handedness
189 * For using high/low pin to determine handedness, low = right hand, high = left hand. Replace 'B7' with the pin you are using. This is optional and you can still use the EEHANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses. 201
190 202One thing to remember, the side that the USB port is plugged into is always the master half. The side not plugged into USB is the slave.
203
204There are a few different ways to set handedness for split keyboards (listed in order of precedence):
205
2061. Set `SPLIT_HAND_PIN`: Reads a pin to determine handedness. If pin is high, it's the left side, if low, the half is determined to be the right side
2072. Set `EE_HANDS` and flash `eeprom-lefthand.eep`/`eeprom-righthand.eep` to each half
2083. Set `MASTER_RIGHT`: Half that is plugged into the USB port is determined to be the master and right half (inverse of the default)
2094. Default: The side that is plugged into the USB port is the master half and is assumed to be the left half. The slave side is the right half
210
211* `#define SPLIT_HAND_PIN B7`
212 * For using high/low pin to determine handedness, low = right hand, high = left hand. Replace `B7` with the pin you are using. This is optional, and if you leave `SPLIT_HAND_PIN` undefined, then you can still use the EE_HANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
213
214* `#define EE_HANDS` (only works if `SPLIT_HAND_PIN` is not defined)
215 * Reads the handedness value stored in the EEPROM after `eeprom-lefthand.eep`/`eeprom-righthand.eep` has been flashed to their respective halves.
216
217* `#define MASTER_RIGHT`
218 * Master half is defined to be the right half.
219
220### Other Options
221
191* `#define USE_I2C` 222* `#define USE_I2C`
192 * For using I2C instead of Serial (defaults to serial) 223 * For using I2C instead of Serial (defaults to serial)
193 224
225* `#define SOFT_SERIAL_PIN D0`
226 * When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
227
228* `#define MATRIX_ROW_PINS_RIGHT { <row pins> }`
229* `#define MATRIX_COL_PINS_RIGHT { <col pins> }`
230 * If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns.
231
232* `#define SELECT_SOFT_SERIAL_SPEED <speed>` (default speed is 1)
233 * Sets the protocol speed when using serial communication
234 * Speeds:
235 * 0: about 189kbps (Experimental only)
236 * 1: about 137kbps (default)
237 * 2: about 75kbps
238 * 3: about 39kbps
239 * 4: about 26kbps
240 * 5: about 20kbps
241
194# The `rules.mk` File 242# The `rules.mk` File
195 243
196This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features. 244This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -199,6 +247,8 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
199 247
200* `DEFAULT_FOLDER` 248* `DEFAULT_FOLDER`
201 * Used to specify a default folder when a keyboard has more than one sub-folder. 249 * Used to specify a default folder when a keyboard has more than one sub-folder.
250* `FIRMWARE_FORMAT`
251 * Defines which format (bin, hex) is copied to the root `qmk_firmware` folder after building.
202* `SRC` 252* `SRC`
203 * Used to add files to the compilation/linking list. 253 * Used to add files to the compilation/linking list.
204* `LAYOUTS` 254* `LAYOUTS`
@@ -232,17 +282,56 @@ Use these to enable or disable building certain features. The more you have enab
232 * Console for debug(+400) 282 * Console for debug(+400)
233* `COMMAND_ENABLE` 283* `COMMAND_ENABLE`
234 * Commands for debug and configuration 284 * Commands for debug and configuration
285* `COMBO_ENABLE`
286 * Key combo feature
235* `NKRO_ENABLE` 287* `NKRO_ENABLE`
236 * USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 288 * USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
237* `AUDIO_ENABLE` 289* `AUDIO_ENABLE`
238 * Enable the audio subsystem. 290 * Enable the audio subsystem.
239* `RGBLIGHT_ENABLE` 291* `RGBLIGHT_ENABLE`
240 * Enable keyboard underlight functionality 292 * Enable keyboard underlight functionality
293* `LEADER_ENABLE`
294 * Enable leader key chording
241* `MIDI_ENABLE` 295* `MIDI_ENABLE`
242 * MIDI controls 296 * MIDI controls
243* `UNICODE_ENABLE` 297* `UNICODE_ENABLE`
244 * Unicode 298 * Unicode
245* `BLUETOOTH_ENABLE` 299* `BLUETOOTH_ENABLE`
246 * Enable Bluetooth with the Adafruit EZ-Key HID 300 * Legacy option to Enable Bluetooth with the Adafruit EZ-Key HID. See BLUETOOTH
301* `BLUETOOTH`
302 * Current options are AdafruitEzKey, AdafruitBLE, RN42
247* `SPLIT_KEYBOARD` 303* `SPLIT_KEYBOARD`
248 * 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 304 * 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
305* `WAIT_FOR_USB`
306 * Forces the keyboard to wait for a USB connection to be established before it starts up
307* `NO_USB_STARTUP_CHECK`
308 * Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
309
310## USB Endpoint Limitations
311
312In order to provide services over USB, QMK has to use USB endpoints.
313These are a finite resource: each microcontroller has only a certain number.
314This limits what features can be enabled together.
315If the available endpoints are exceeded, a build error is thrown.
316
317The following features can require separate endpoints:
318
319* `MOUSEKEY_ENABLE`
320* `EXTRAKEY_ENABLE`
321* `CONSOLE_ENABLE`
322* `NKRO_ENABLE`
323* `MIDI_ENABLE`
324* `RAW_ENABLE`
325* `VIRTSER_ENABLE`
326
327In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint.
328By default, `MOUSEKEY`, `EXTRAKEY`, and `NKRO` are combined into a single endpoint.
329
330The base keyboard functionality can also be combined into the endpoint,
331by setting `KEYBOARD_SHARED_EP = yes`.
332This frees up one more endpoint,
333but it can prevent the keyboard working in some BIOSes,
334as they do not implement Boot Keyboard protocol switching.
335
336Combining the mouse also breaks Boot Mouse compatibility.
337The mouse can be uncombined by setting `MOUSE_SHARED_EP = no` if this functionality is required.