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
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
amj60
amj96
amjpad
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
bfake
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
bmini
canoe
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
ckeys
clueboard Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
cod67
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
cospad
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
deltasplit75
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
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
eco
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
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
fortitude60
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
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
hs60
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
jd45
jj40 Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
jj50
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
kbd66
kbd75 Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
kc60
kc60se
kinesis Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
kira75
kitten_paw
kmac
kmini
knops
kona_classic
laplace
launchpad
lets_split Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
lets_split_eh
levinson Keymap: Update personal keymap (#3855) 2018-09-05 16:39:00 -07:00
lfkeyboards
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
mechmini Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
meira
melody96 Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
meme
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
model01 Keyboard: add Keyboardio Model 01 (#3900) 2018-09-17 15:49:20 -07:00
mt40
mxss
nano
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
orthodox
paladin64 Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
pearl
pegasushoof Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
phantom
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
quefrency Keyboard: Add support for Quefrency 65% right half (#3865) 2018-09-06 12:49:13 -07:00
qwertyydox
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
singa
sixkeyboard
sixshooter
speedo
staryu
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
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
thevankeyboards Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
tiger_lily
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
ut47
v60_type_r Keymap: I got my intern a KBParadise V60 Type R... (#3813) 2018-08-31 08:28:14 -07:00
vision_division
vitamins_included
viterbi Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
wavelet
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
ymd96 Keyboard: Add YMD96 instructions for Linux + Backlight Fixes (#3908) 2018-09-17 13:55:49 -07:00
ymdk_np21
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
zlant Make PREVENT_STUCK_MODIFIERS the default (#3107) 2018-09-17 13:48:02 -04:00
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.