qmk-firmware/keyboards
James Laird-Wah 03b8ce206d Keyboard: add Keyboardio Model 01 (#3900)
* Keyboard: add Keyboardio Model01

This port implements key scanning and everything in their default
keymap.

It doesn't implement mouse warping; QMK can't do that (yet).

LED control is mostly not implemented. The ability to set all LEDs is
included because they can get stuck on coming from the bootloader
otherwise. Single LED control is also implemented for numpad indication.
The scanners also support batch LED transfer which is what you'd need if
you wanted to do fast effects. Gamma correction is also not implemented,
but is present in the original firmware. The necessary info for further
implementation is in the KeyboardioScanner module for Kaleidoscope.

To install on your keyboard:

    make model01:avrdude

When prompted, hold the "prog" key on the keyboard to put it into
programming mode. This can also be achieved by holding the "prog" key
while plugging in the keyboard. This works even if the firmware is
corrupt or missing.

Hot plugging the halves seems to work fine, but there is no explicit
support for eg. making sure the matrix scan rate is reconfigured.

* model01: clean up includes and include guards

Uses #pragma once everywhere.

* model01: split LED and matrix code

This makes space if someone wants to implement better LED support
later on, the keyboard is a lot more capable than the current code.

* model01: separate I2C timeouts for matrix vs. LED

If the scanners have no data they don't ACK reads and just time out.
So we want a pretty short timeout to keep scan rates high.

Meanwhile the LED transfers might take longer - I don't know though,
so here we are conservative.

* model01: implement better LED control

- gamma correction from the manufacturer's firmware
- suitable delays to allow back to back LED writes
    - this is fast enough to write the whole keyboard without noticeable
    delay, in my experience
- minor bug fix: RHS Fn key was not addressable

* model01: add license to wire-protocol-constants.h

* model01: replace gamma LUT

The original was of unclear license origin. This one is functionally
identical and includes a generator should people wish to adjust it.

* model01: use the already-present CIE1931 lightness curve

...rather than baking in another gamma curve.

It's said that CIE1931 is the right thing to be using rather than gamma.
OK. Let it be so.

* model01: call matrix_init_user() from matrix_init_kb()

* model01: remove inapplicable config options from rules.mk

* model01: readme.md: update build environment links
2018-09-17 15:49:20 -07:00
..
1upkeyboards Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
4x4 Keymap: Wanleg updates (#3794) 2018-08-30 09:34:14 -07:00
5x5 Keymap: Wanleg updates (#3794) 2018-08-30 09:34:14 -07:00
6ball
9key
acr60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
al1 Keyboard: AL1 Configurator fix: misplaced arrow keys (#3716) 2018-08-22 08:59:00 -07:00
alf Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
alpha Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
alps64
alu84 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
amj40 turn on permissive hold for my keymap (#3295) 2018-07-03 16:18:01 -07:00
amj60 Keyboard: AMJ60 LAYOUT_iso matrix fix (#3705) 2018-08-21 08:41:40 -07:00
amj96 Keyboard: AMJ96 Refactor and Configurator update (#3707) 2018-08-22 08:58:12 -07:00
amjpad Keyboard: Configurator render fix for AMJPad (#3706) 2018-08-21 08:42:18 -07:00
at101_blackheart Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
atom47
atomic
atreus Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
atreus62 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
bantam44
bface Keymap: Added personal keymap for bface (#3719) 2018-08-21 19:07:18 -07:00
bfake Update ps2avrgb readme (#3599) 2018-08-09 17:45:43 -07:00
bfo9000 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
bigseries Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
bigswitch Keymap: Big switch config (#3904) 2018-09-17 13:41:59 -07:00
blockey Keyboard: Blockey refactor (#3722) 2018-08-22 09:00:40 -07:00
bmini Update ps2avrgb readme (#3599) 2018-08-09 17:45:43 -07:00
canoe Update ps2avrgb readme (#3599) 2018-08-09 17:45:43 -07:00
catch22 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
chibios_test
chimera_ergo Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
chimera_ls Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
chimera_ortho Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
chocopad Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
christmas_tree Configurator fix for Christmas Tree (#3338) 2018-07-07 18:35:31 -07:00
ckeys Keyboard: Ckeys refactor (#3681) 2018-08-17 16:12:22 -07:00
clueboard Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
cod67 COD67 "Support" (#3332) 2018-07-07 11:47:24 -07:00
comet46 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
contra Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
converter add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
cospad Keyboard: Added gamepad layout to cospad (#3714) 2018-08-25 10:35:24 -07:00
crawlpad Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
crkbd Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
cu24
cu75
daisy
dc01 Keyboard: Fix UTF-8 encoding for DC01 Numpad info.json (#3462) 2018-07-21 15:35:57 -07:00
deltasplit75 Fix Mbsurfer deltasplit75 keymap (#3262) 2018-06-29 08:22:23 -07:00
dichotemy Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
dilly Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
diverge3
divergetm2 Keyboard: Add support for Diverge TM2 (#3829) 2018-09-03 16:35:27 -07:00
dk60
do60 add support for the 60_ansi_split_bs_rshift community layout (#3227) 2018-06-25 07:56:48 -07:00
duck Keyboard: Updated info.json for Duck Jetfire (#3866) 2018-09-13 09:04:55 -07:00
dz60 Keymap: dz60/macos_arrow: fix rev3 broken media layer (#3928) 2018-09-17 15:10:00 -07:00
e6v2 Keyboard: E6V2 Layout Fix (#3490) 2018-07-25 20:12:15 -07:00
eco Eco: Refactor, Configurator support and Readme changes (#3143) 2018-06-07 08:26:46 -07:00
ergo42 Keymap: add yshrsmz keymaps (#3770) 2018-09-01 09:38:29 -07:00
ergodash Keyboard: add ergodash mini keyboard (#3901) 2018-09-15 10:57:46 -07:00
ergodone Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ergodox_ez Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ergodox_infinity Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ergoinu Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ergotravel Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
facew add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
fc660c Keymap: Updated my FC660C config (#3870) 2018-09-09 19:43:45 -07:00
fc980c
felix Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
fleuron Keyboard: Adds Fleuron v1.0 keyboard (#3571) 2018-08-07 17:47:49 -07:00
fortitude60 Fortitude60: Refactor and Configurator support (#3161) 2018-06-10 07:13:01 -07:00
four_banger Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
fourier Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
fractal Keyboard: Fix pin numbers for Fractal keyboard (#3743) 2018-09-17 15:18:19 -07:00
frosty_flake Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
gh60 Keymap: Create ISO HHKB keymapping for GH60 (#3832) 2018-09-04 08:52:52 -07:00
gh80_3000 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
gherkin Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
gonnerd Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
h87a Keyboard: make sure LAYOUT macro names match in info.json and h87a.h (#3550) 2018-08-02 14:41:20 -07:00
hadron Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
handwired Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
helix Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
hhkb Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
hid_liber Keyboard: Add support for bpiphany's HID Liberation Device (#3470) 2018-07-30 23:37:34 -07:00
hs60 Addition of hard brigtness limit for RGB_Matrix (#3299) 2018-07-03 12:52:04 -04:00
infinity60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
iris Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
jc65 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
jd40 add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
jd45 add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
jj40 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
jj50 ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453) 2018-07-23 12:11:56 -07:00
jm60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
k_type Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
katana60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
kbd6x Keyboard: formatting changes for readme and enable bootmagic (#3851) 2018-09-04 13:29:58 -07:00
kbd8x Fixed kbd8x compile issues (#3409) 2018-07-15 11:21:26 -07:00
kbd66 KBD66 info.json update (#3175) 2018-06-13 17:08:10 -07:00
kbd75 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
kc60
kc60se Keyboard: Configurator fix: KC60SE info.json, LAYOUT matrix (#3463) 2018-07-22 06:58:32 -07:00
kinesis Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
kira75
kitten_paw Kitten Paw refactor and Configurator update (#3248) 2018-06-28 12:40:40 -07:00
kmac
kmini Kmini refactor and Configurator support (#3388) 2018-07-12 16:30:53 -07:00
knops Knops Configurator update (#3249) 2018-06-28 06:53:23 -07:00
kona_classic Keyboard: Fix character encoding for kona_classic's info.json (#3473) 2018-07-23 12:02:45 -07:00
laplace Laplace Refactor (#3252) 2018-06-28 06:56:14 -07:00
launchpad
lets_split Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
lets_split_eh Userspace update for user bbaserdem (#3443) 2018-07-18 20:17:55 -07:00
levinson Keymap: Update personal keymap (#3855) 2018-09-05 16:39:00 -07:00
lfkeyboards Keyboard: Corrected LFK65_HS LAYOUT_all matrix (#3703) 2018-08-21 08:40:25 -07:00
lily58 Keyboard: Add Lily58 Keyboard (#3893) 2018-09-15 10:14:39 -07:00
m10a Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
massdrop Keyboard: ALT keymap update and LED driver brightness mismatch fix (#3890) 2018-09-13 09:17:26 -07:00
maxipad QMK Configurator support for Maxipad keypad (#3307) 2018-07-04 18:04:22 -07:00
mechmini Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
meira Keyboard: add Telophase board (and Graham's keymaps) (#3244) 2018-08-19 13:29:11 -07:00
melody96 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
meme rename layouts based on memey monikers courtesy of Krelbit...lulz (#3218) 2018-06-21 23:33:34 -07:00
mf68 65% and 68 key community layouts (#3872) 2018-09-09 19:45:59 -07:00
mf68_ble 65% and 68 key community layouts (#3872) 2018-09-09 19:45:59 -07:00
minidox Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
mint60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
mitosis Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
miuni32 Miuni32 refactor and Configurator support (#3273) 2018-07-01 11:02:26 -07:00
model01 Keyboard: add Keyboardio Model 01 (#3900) 2018-09-17 15:49:20 -07:00
mt40 MT40 refactor and Configurator support (#3377) 2018-07-12 10:28:23 -07:00
mxss MxSS Configurator bugfix: removed an extra key that didn't belong (#3362) 2018-07-09 18:07:20 -07:00
nano Nano refactor and Configurator update (#3275) 2018-07-01 11:05:10 -07:00
niu_mini Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
novelpad Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
noxary Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
nyquist Keymap: add yshrsmz keymaps (#3770) 2018-09-01 09:38:29 -07:00
ok60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
omnikey_blackheart Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
org60 Configurator fix for Org60 (#3231) 2018-06-25 17:09:06 -07:00
orthodox Yet another update to drashna keymaps and userspace (#3787) 2018-08-29 13:42:15 -04:00
paladin64 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
pearl Keyboard: Pearl keyboard LAYOUT_spacebar had an undefined constant K34 (#3633) 2018-08-12 09:33:04 -07:00
pegasushoof Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
phantom add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
planck Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
playkbtw Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
preonic Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
prime_r Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ps2avrGB [WIP] Added support for the b.face keyboard (#2493) 2018-08-19 19:32:35 -07:00
quefrency Keyboard: Add support for Quefrency 65% right half (#3865) 2018-09-06 12:49:13 -07:00
qwertyydox Keyboard: Add QWERTYYdox keyboard (#3636) 2018-08-19 13:23:13 -07:00
rama Zeal60/Zeal65/M60-A implementation (#3879) 2018-09-13 14:37:13 -04:00
redox Keymap: Redox: add a new Colemak keymap, macOS oriented. (#3861) 2018-09-10 07:39:05 -07:00
rorschach Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
s60_x Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
s65_plus Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
s65_x Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
satan Keymap: Adjusted keymaps for standardisation (#3874) 2018-09-09 19:47:14 -07:00
scrabblepad add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
singa add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
sixkeyboard SixKeyBoard refactor (#3193) 2018-06-16 08:02:11 -07:00
sixshooter Keyboard: Six Shooter Keyboard (#3598) 2018-08-11 13:23:11 -07:00
speedo Speedo refactor and Configurator support (#3309) 2018-07-04 18:06:04 -07:00
staryu ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453) 2018-07-23 12:11:56 -07:00
subatomic
sx60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
tada68 Keyboard: Tada68 readme img (#3918) 2018-09-17 14:09:41 -07:00
tanuki Tanuki Configurator support (#3310) 2018-07-04 18:06:32 -07:00
telophase Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
tetris Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
the_ruler add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
thevankeyboards Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
tiger_lily Tiger Lily Controller refactor and Configurator support (#3313) 2018-07-04 21:44:02 -07:00
tkc1800 Keymap: Fix Dvorak mapping for left/right brace (#3889) 2018-09-13 09:16:39 -07:00
tokyo60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
tomato Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
tragicforce68 Keyboard: Add Tragicforce 68 (#3807) 2018-08-31 11:13:55 -07:00
uk78 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
unloved_bastard Unloved Bastard refactor and Configurator support (#3318) 2018-07-05 08:22:39 -07:00
ut47 Keyboard: UT47 Configurator support and readme cleanup (#3708) 2018-08-21 08:45:42 -07:00
v60_type_r Keymap: I got my intern a KBParadise V60 Type R... (#3813) 2018-08-31 08:28:14 -07:00
vision_division add linebreaks to "Keyboard Maintainer:..." blocks where missing (#3763) 2018-08-26 11:59:52 -07:00
vitamins_included Keyboard: Document the correct path to the let's split EEPROM files. (#3539) 2018-08-02 13:52:24 -07:00
viterbi Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
wavelet Keyboard: add Wavelet (#3739) 2018-08-25 08:46:42 -07:00
whitefox Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
xd60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
xd75 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
xmmx Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
ymd75 ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453) 2018-07-23 12:11:56 -07:00
ymd96 Keyboard: Add YMD96 instructions for Linux + Backlight Fixes (#3908) 2018-09-17 13:55:49 -07:00
ymdk_np21 ps2avrgb: fix incorrect avr ports specified (for numlock and capslock LEDs) (#3453) 2018-07-23 12:11:56 -07:00
z150_blackheart Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
zeal60 Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
zeal65 Zeal60/Zeal65/M60-A implementation (#3879) 2018-09-13 14:37:13 -04:00
zen Keymap: Update 333fred's keymap for Zen (#3690) 2018-08-20 09:45:15 -07:00
zlant Make `PREVENT_STUCK_MODIFIERS` the default (#3107) 2018-09-17 13:48:02 -04:00
readme.md

readme.md

Included Keyboards

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

Official QMK Keyboards

These keyboards are manufactured by the maintainers of QMK.

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.

ErgoDox EZ - Erez Zukerman

Made in Taiwan using advanced robotic manufacturing, the ErgoDox EZ is a fully-assembled, premium ergonomic keyboard. Its split design allows you to place both halves shoulder width, and its custom-made wrist rests and tilt/tent kit make for incredibly comfortable typing. Available on ergodox-ez.com.

  • ErgoDox EZ — Our one and only product. Yes, it's that awesome. Comes with either printed or blank keycaps, and 7 different keyswitch types.

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.

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.
  • 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
  • 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.
  • XD75 — 15x5 ortholinear keyboard by XIUDI.
  • YMDK NP21 — ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress.