Go to file
Sergey Vlasov 17bda000f3
[Keyboard] Add IDOBAO ID80 (#8728)
* id80: New keyboard (IDOBAO ID80)

Add initial support for the IDOBAO ID80 keyboard.

Most source files were generated by the KBFirmware JSON to QMK Parser
(https://noroadsleft.github.io/kbf_qmk_converter/) based on the
ID80.json file provided by the keyboard vendor.  The only change to
rules.mk was to set `COMMAND_ENABLE = no` to make the compiled firmware
fit into the available flash space.

* id80: Update default keymap to match stock

Update the Fn layer in the default keymap to match the stock firmware
which was actually flashed into the PCB.

* id80: Add Caps Lock indicator support

Although the KBFirmware JSON includes information about the MCU pins
used for keyboard indicator LEDs, the KBF to QMK converter does not
generate the required code automatically.  Implement the LED handling
code, and at the same time switch from the older `led_set_kb` API to the
newer `led_update_kb`.

* id80: Remove placeholder functions

The provided skeletons for `matrix_scan_kb` and `process_record_kb` did
not do anything useful, so remove them.

* id80: Use Esc as the Bootmagic Lite activation key

The Esc key is not at the (0, 0) position in the ID80 matrix, therefore
setting `BOOTMAGIC_LITE_ROW` and `BOOTMAGIC_LITE_COLUMN` is required to
use the Esc key for Bootmagic Lite.

* id80: Update info.json

Replace info.json generated by the KBF to QMK converter with another
version generated using http://www.keyboard-layout-editor.com/ and the
KLE raw to QMK info.json converter (https://qmk.fm/converter/).  The
updated info.json has the correct physical layout (the distance between
the function key row and the main block is actually 0.25U, but the
vendor-provided ID80.json had 0.5U there) and correct key labels (using
the stock layout instead of raw matrix locations and pin names).

* id80: Enable NKRO

The default keymap is updated to have NK_TOGG at Fn+N, like most other
keyboards which have NKRO enabled.

* id80: Use unique USB vendor/product ID

Having an unique USB vendor/product ID is required for VIA support.
The vendor ID value is the same as for the `idobo` (ID75) keyboard.

* id80: Fix right modifiers in the default keymap

For some reason the default keymap converted from the vendor-supplied
JSON had the right Shift, Alt and Ctrl keys mapped to the left side
modifier keycodes.

* id80: Remove empty row 6 (F0) from matrix

The matrix layout which was defined in the vendor-supplied ID80.json
file had 12 rows which corresponded to the left and right parts of the
6 physical rows.  However, the row 6 of the matrix (connected to the F0
pin), which corresponded to the right part of the physical bottom row,
was completely empty (all 9 keys of the bottom row were placed in the
matrix row for the left part).  Keeping this row in the matrix just
wastes resources; in particular, when the VIA support is enabled, having
a 9×12 matrix with 4 layers leaves only 122 bytes available for dynamic
macros, which is less than the recommended minimum of 128 bytes.
Removing the unused row reduces the matrix size to 9×11, which leaves
194 bytes of EEPROM space for dynamic macros.

* id80: Update row numbers in the LAYOUT macro

Update row numbers in the names of the LAYOUT macro parameters after
removing a row in the middle.

* id80: Set RGBLED_NUM to 20 to match the actual PCB

The vendor-supplied ID80.json file specified that the PCB should have
28 RGB LEDs in the chain.  However, the actual PCB that was shipped
from AliExpress had 20 LEDs in the chain (16 underglow LEDs, and then 4
more LEDs on top of the PCB, to the right of the Enter key location).
Update RGBLED_NUM to match the actual PCB.
2020-04-12 23:55:01 +01:00
.github Force "blank" issue template to end of list (#8387) 2020-03-12 01:27:33 -07:00
.vscode Highlight .inc files as .c files (#8496) 2020-03-20 09:48:55 +01:00
bin Fix edge-case with config 2020-04-08 09:31:14 -07:00
docs Add *OPT aliases for *ALT keycodes and macros (#8714) 2020-04-12 11:37:55 -07:00
drivers format code according to conventions [skip ci] 2020-04-08 01:38:16 +00:00
keyboards [Keyboard] Add IDOBAO ID80 (#8728) 2020-04-12 23:55:01 +01:00
layouts Some refinements of 75_ansi/spidey3 layout (#8581) 2020-04-11 10:10:37 +10:00
lib Don't hide for devs... 2020-04-08 09:31:14 -07:00
quantum Bugfix for quantum/dip_switch.c (#8731) 2020-04-12 12:44:24 -07:00
tests format code according to conventions [skip ci] 2020-03-13 18:44:56 +00:00
tmk_core Add *OPT aliases for *ALT keycodes and macros (#8714) 2020-04-12 11:37:55 -07:00
users Some refinements of 75_ansi/spidey3 layout (#8581) 2020-04-11 10:10:37 +10:00
util Upgrade gcc version/tweak package installs in Gentoo installation (#8757) 2020-04-12 16:13:45 +10:00
.clang-format fix indent size 2019-06-11 01:51:40 -07:00
.clang_complete Vim Layout for Ergodox-EZ (mac only) (#2112) 2017-12-11 21:06:05 -05:00
.editorconfig QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
.gitattributes Set eep files to binary mode 2016-08-27 18:37:28 +03:00
.gitignore 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
.gitmodules Track master branches for lib/chibios, lib/chibios-contrib, lib/ugfx. (#8273) 2020-03-01 11:51:38 +11:00
.travis.yml Fix unknown key 'IndentPPDirectives' on CI (#7933) 2020-01-19 13:59:57 -08:00
CODE_OF_CONDUCT.md updates the coc 2019-08-24 12:43:39 -04:00
Dockerfile Update docker util script and travis to use new base container 2019-07-14 21:01:38 -07:00
Doxyfile Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -04:00
LICENSE add an explicit lisence file for github to pickup 2017-11-13 20:50:54 -05:00
Makefile 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
Vagrantfile Configure Vagrant to use qmk_base_container (#6194) 2019-07-16 01:20:34 -07:00
autocomplete.sh Make arguments redo, subproject elimination (#1784) 2017-10-14 11:32:19 -10:00
book.json adds redirects for docs 2017-08-19 08:31:54 -04:00
bootloader.mk Add LUFA mass storage `BOOTLOADER` "support" (#7729) 2019-12-29 20:53:23 +00:00
build_full_test.mk Add SRC and OPT_DEFS when building tests 2017-07-20 10:17:31 -04:00
build_json.mk Rename qmk json-keymap to qmk json2c (#8372) 2020-03-10 13:51:19 -07:00
build_keyboard.mk Align some ChibiOS build logic (#8461) 2020-03-22 20:48:17 +11:00
build_layout.mk Add a mechanism for force building a particular community layout (#5027) 2019-02-14 20:14:26 -08:00
build_test.mk Initial arm->chibios pass - simplify some platform logic (#8450) 2020-03-21 16:20:04 +11:00
common.mk Move Split Common VPATH addition (#4716) 2018-12-31 08:45:44 -08:00
common_features.mk Add Word Per Minute calculation feature (#8054) 2020-03-23 00:06:16 +11:00
doxygen-todo Remove PJRC USB stack 2020-02-08 11:07:43 -08:00
license_GPLv2.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_GPLv3.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_Modified_BSD.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
message.mk Use FIRMWARE_FORMAT for "Checking file size" message (#8121) 2020-02-10 04:19:08 +11:00
nose2.cfg Setup a python test framework 2019-09-07 07:58:41 -07:00
readme.md Breaking Changes documentation fixes 2020-02-29 12:30:38 -08:00
requirements-dev.txt Use milc for config check, requirements fixes 2020-04-08 09:31:14 -07:00
requirements.txt CLI: Add development mode support 2020-04-08 09:31:14 -07:00
secrets.tar.enc update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
setup.cfg Add flake8 to our test suite and fix all errors (#7379) 2019-11-20 14:54:18 -08:00
shell.nix Fix up Arm builds with nix-shell. (#8312) 2020-03-07 03:05:51 +11:00
show_options.mk Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
testlist.mk Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00

readme.md

Quantum Mechanical Keyboard Firmware

Current Version Build Status Discord Docs Status GitHub contributors GitHub forks

This is a keyboard firmware based on the tmk_keyboard firmware with some useful features for Atmel AVR and ARM controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line.

Documentation

The docs are powered by Docsify and hosted on GitHub. They are also viewable offline; see Previewing the Documentation for more details.

You can request changes by making a fork and opening a pull request, or by clicking the "Edit this page" link at the bottom of any page.

Supported Keyboards

The project also includes community support for lots of other keyboards.

Maintainers

QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, Hasu. The OLKB product firmwares are maintained by Jack Humbert, the Ergodox EZ by ZSA Technology Labs, the Clueboard by Zach White, and the Atreus by Phil Hagelberg.

Official Website

qmk.fm is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK.