This repository has been archived on 2025-01-28. You can view files and clone it, but cannot push or open issues or pull requests.
Pete Sevander 7e983796e1
Process combos earlier & overlapping combos (#8591)
* Combo processing improvements.

Now it is possible to use ModTap and LayerTap keys as part of combos.
Overlapping combos also don't trigger all the combos, just exactly the
one that you press.

New settings:
- COMBO_MUST_HOLD_MODS
- COMBO_MOD_TERM
- COMBO_TERM_PER_COMBO
- COMBO_MUST_HOLD_PER_COMBO
- COMBO_STRICT_TIMER
- COMBO_NO_TIMER

* Remove the size flags from combo_t struct boolean members.

This in the end actually saves space as the members are accessed so many
times. The amount of operations needed to access the bits uses more
memory than setting the size saves.

* Fix `process_combo_key_release` not called correctly with tap-only combos

* Fix not passing a pointer when NO_ACTION_TAPPING is defined.

* Docs for `COMBO_ONLY_FROM_LAYER`

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update quantum/process_keycode/process_combo.c

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Add `EXTRA_SHORT_COMBOS` option.

Stuff combo's `disabled` and `active` flags into `state`. Possibly can
save some space.

* Add more examples and clarify things with dict management system.

- Simple examples now has a combo that has modifiers included.
- The slightly more advanced examples now are actually more advanced
  instead of just `tap_code16(<modded-keycode>)`.
- Added a note that `COMBO_ACTION`s are not needed anymore as you can
  just use custom keycodes.
- Added a note that the `g/keymap_combo.h` macros use the
  `process_combo_event` function and that it is not usable in one's
  keymap afterwards.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Change "the" combo action example to "email" example.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Fix sneaky infinite loop with `combo_disable()`

No need to call `dump_key_buffer` when disabling combos because the
buffer is either being dumped if a combo-key was pressed, or the buffer is empty
if a non-combo-key is pressed.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-06 09:44:57 +10:00
..
2021-01-11 19:47:02 +11:00
2021-01-11 19:47:02 +11:00
2021-07-29 11:09:16 -07:00
2021-02-14 23:21:45 -08:00
2021-07-13 06:46:20 -07:00
2021-07-26 19:43:48 -07:00
2021-07-29 12:14:26 -07:00
2020-12-30 02:05:48 +00:00
2021-05-12 18:31:53 -07:00
2021-01-15 05:00:04 +11:00
2021-01-13 16:03:52 -08:00
2021-01-15 05:00:04 +11:00
2021-08-06 08:14:43 +10:00
2021-01-15 05:00:04 +11:00
2021-01-15 05:00:04 +11:00
2021-07-03 20:24:20 -07:00
2021-06-25 13:51:44 +10:00
2021-03-04 13:15:16 -05:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2020-12-07 10:14:40 -08:00
2021-07-29 08:49:51 -07:00
2021-04-03 15:51:21 +02:00
2021-07-31 14:35:30 +01:00
2021-07-29 08:28:33 -07:00
2021-07-31 14:35:30 +01:00
2021-06-27 05:07:44 +10:00
2021-07-31 14:35:30 +01:00
2021-05-17 01:55:37 -07:00
2021-07-31 14:35:30 +01:00
2021-01-18 12:49:25 +11:00
2021-01-20 00:38:12 +11:00
2021-07-31 14:35:30 +01:00
2021-07-12 10:14:18 -07:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-06-16 22:45:27 -07:00
2021-07-02 14:12:05 +01:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-01-02 00:52:49 +11:00
2021-07-31 14:35:30 +01:00
2021-02-20 20:48:52 -08:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-01-20 09:56:41 +11:00
2021-01-20 11:57:45 +11:00
2020-12-22 19:39:29 +01:00
2021-06-25 21:42:09 -07:00
2021-02-28 16:57:04 +11:00
2021-01-08 21:28:35 +00:00
2021-07-22 00:17:47 -07:00
2021-07-31 14:35:30 +01:00
2021-01-22 08:37:36 -08:00
2021-07-31 14:35:30 +01:00
2021-01-01 15:27:13 -08:00
2021-06-09 19:14:44 +10:00
2021-01-20 11:57:45 +11:00
2021-07-19 22:27:18 -07:00
2021-08-05 00:59:50 +01:00
2021-05-31 21:56:23 -07:00
2021-08-04 08:54:12 +10:00
2021-05-12 18:31:53 -07:00
2021-06-26 08:38:14 -07:00
2021-05-26 21:00:16 -07:00
2021-06-26 08:38:14 -07:00
2021-01-20 12:40:35 +11:00
2021-06-20 12:03:11 +10:00
2021-07-31 14:35:30 +01:00
2021-07-31 14:35:30 +01:00
2021-01-20 12:40:35 +11:00
2021-07-17 02:42:50 +10:00
2021-01-20 12:40:35 +11:00
2021-03-25 23:38:31 +11:00
2021-02-27 16:17:12 -08:00
2021-02-18 15:30:16 -05:00
2021-01-20 12:40:35 +11:00
2021-06-25 13:51:44 +10:00
2021-07-24 15:50:32 +01:00
2021-07-21 22:46:15 -07:00
2021-07-31 14:35:30 +01:00
2021-01-20 12:41:34 +11:00
2021-07-04 08:34:50 -07:00
2021-05-17 18:53:45 -04:00
2021-01-25 14:13:10 +11:00
2021-01-20 12:41:34 +11:00

Included Keyboards

QMK runs on a diverse range of keyboards. Some of these keyboards are well maintained and see constant community contributions, while others are part of the repository for historical reasons.

Official QMK Keyboards

Ortholinear Keyboards - Jack Humbert

What makes OLKB keyboards shine is a combo of lean aesthetics, compact size, and killer tactile feel. These are available through olkb.com as well as through Massdrop from time to time, as easy to assemble kits.

  • Planck — A 40% DIY powerhouse of customizability and modification capability. It's a lean, mean, typing machine.
  • Preonic — Like the Planck, but bigger. 50%.
  • Atomic — Imagine the size of the Planck. Now imagine the size of the Preonic. Now imagine bigger. That is the Atomic. A 60% keyboard.

Clueboard - Zach White

Designed and built in Felton, CA, Clueboards keyboard emphasize quality and locally sourced components, available on clueboard.co

  • Clueboard — The 66% custom keyboard.
  • Cluecard — A small board to help you hack on QMK.
  • Cluepad — A mechanical numpad with QMK superpowers.

ErgoDox EZ and Planck EZ - ZSA Technology Labs

ZSA Technology Labs maintains its own fork of QMK which feeds its configurator, for stability and legal purposes. The ZSA boards are:

  • ErgoDox EZ — A powerful split mechanical keyboard.
  • Planck EZ — A 40% DIY powerhouse of customizability and modification capability. It's a lean, mean, typing machine, which ships fully assembled with a two-year warranty.

Community-supported QMK Keyboards

These keyboards are part of the QMK repository, but their manufacturers are not official maintainers of the repository.

  • 9key — A 9-key minipad sold by Bishop Keyboards.
  • Alps64 — A 60% keyboard for Alps keyswitches.
  • AMJ60 — DIY/Assembled compact 60% keyboard.
  • Arrow Pad — A custom creation by IBNobody.
  • Atreus — Made by Technomancy.
  • Bantam44 — It is a 44-key 40% staggered keyboard.
  • DataHand — DataHand keyboard converted to use a Teensy board.
  • Ergodox Infinity - Ergonomic Split Keyboard by Input Club.
  • GH60 — A 60% Geekhack community-driven project.
  • GON NerD — Korean custom 60% PCB
  • Happy Hacking Keyboard — The Happy Hacking keyboard can be hacked with a custom controller to run QMK.
  • Infinity 60% - — Compact community keyboard by Input Club.
  • JD45 — Another Geekhack community project, designed by jdcarpe.
  • JJ40 — ps2avrGB based ortholinear sold by KPrepublic
  • JJ50 — A compact 50% (5x12) ortholinear keyboard sold by KPrepublic.
  • KBD75 — A 75% keyboard made by made by KBDFans.
  • KC60 — A programmable Chinese-made keyboard, lost in the mists of time.
  • Kinesis Advantage — Contoured ergonomic keyboard by Kinesis Computer Ergonomics.
  • KMAC — Korean custom keyboard.
  • The Kitten Paw — A replacement controller (2016 revision) for the Filco Majestouch by Bathroom Epiphanies.
  • Lets Split - Split ortholinear 40% keyboard.
  • Phantom — A tenkeyless kit by Teel, also from Geekhack.
  • Retro Refit — Another creation by IBNobody.
  • S60-x — DIY compact keyboard designed by VinnyCordeiro for Sentraq.
  • Satan — A GH60 variant.
  • SixKeyBoard — A 6-key keyboard made by TechKeys.
  • TheVan 44 — A 44-key staggered keybard by Evangs.
  • WhiteFox — A 65% keyboard designed as a partnership by matt3o, Massdrop and Input Club
  • Vision Division — Full Size / Split Linear Keyboard by IBNobody.
  • XD004 — 1x4 macro keyboard sold by KPrepublic.
  • XD75 — 15x5 ortholinear keyboard by XIUDI.
  • YMDK NP21 — ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress.