Find a file
Art Ortenburger 43579a80a7 add support for Orthodox keyboard (#1436)
* Added orthodox

* Modified readme

* Modified readme

* Modified readme

* Updated makefile

* Fixed keymap issues

* Modified serial communications to allow for over 8 columns

* Fixed sizeof command

* Fixed some typing issues

* Testing issue #1191 (n-column split i2c slave)

Based on initial OrthoDox (serial) config by @reddragond and others,
this attempts to add TWI (I2C) support.
Relevant: <https://github.com/qmk/qmk_firmware/issues/1191>

- per @ahtn recommendation, using memcpy for moving slave matrix
  into slave sending buffer
- slave buffer has been enlarged using sizeof(matrix_row_t)
- note: i2c.h now includes matrix.h
- note: matrix.c includes <string.h>

* Added i2c keymap - right col still not working

* orthodox: re-added i2c keymap, based on serial

* orthodox / issue #1191: trying 9-bit serial

- orthodox serial protocol now sends 9 bits per row, instead of 16.
  Technically it's using MATRIX_COLS, so it might work generically.
- ROW_MASK is #defined in serial.c to truncate the checksums to prevent
  overflows causing false errors. This macro should be renamed if it's
  kept.

* Revert "Fixed sizeof command"

This reverts commit f62a5b9939d6a9c0e442ec403de00c14431a55f9.

Changes had been made to the lets_split serial driver for testing which
mirrored the multi-byte-row changes made to support the orthodox. As the
lets_split does not require these changes, and new improvements had
been added to the orthodox port only, this commit reverts them.

Because the new code could potentially reduce latency over the serial
transport, it may be desirable to re-add in the future, by backporting
the current working orthodox code.

* orthodox: default serial keymap improvements

- formatting has been improved
- a few keys have been shifted, mainly in Raise and Lower layers,
  to be more like the default Planck layout
- Now available: F12, Home, End, PgUp, PgDn, Media-Next, Media-Play

Still To Do:
- duplicate for TWI
- Alt modifier
- GUI modifier

* orthodox: failed attempt at 16b/row TWI

- duplicated updated serial keymap for "i2c"
- removed string.h/memcpy, instead
- hardcoded copying of six bytes per update
- still doesn't work; master reports interconnect errors on txled

* orthodox: adjusted default keymap

- this is applied to both 'serial' and 'i2c' keymaps
- Alt and GUI have been added, as they were missing
- comma and period persist across more layers; Home/PgUp and End/PgDn
  have been moved slightly to accommodate

* orthodox: revert TWI support to minimum to debug

- disabled ssd1306 and hardware locking in build configuration
- increased TWI buffer from 0x10 to 0x20 bytes
- decreased TWI clock from 400000 to 100000
- removed hardcoded TWI multi-byte sending/receiving

An 'i2c' build of this was found to work on a rev1 Orthodox, although
slave-side col9 was understandably not working. When testing-time
permits, features will be gradually re-enabled towards getting the full
matrix supported over TWI.

* orthodox: TWI (i2c) is working, kludge for col9

The TWI interconnect ("i2c" in directories and build config) is now
working for the Orthodox, including the slave half's column #9.
This is intended as an interim solution, as it's a kludge, not a fix.

Rather than a working multi-byte implementation, the two col9 keys'
bits are packed-into and unpacked-from the two unused bits in row1.
Furthermore, the TWI clock constant has been reduced to 100000 from
400000, as testing revealed the higher value just didn't work.
Testing also found that (with this kludge) increasing the TWI buffer
was not necessary.

This commit leaves many commented-out lines in matrix.c from previous
testing, which will be removed in a future commit once the
interconnects' multi-byte problems have been debugged more thoroughly.

* orthodox: updated readme.md

The readme for the Orthodox now includes a description of the keyboard,
allusions to its author and availability, a linked photo, and links to
the evolving build guide and the current keymap on KLE.
This update has been prepared with /u/Deductivemonkee's assistance.
2017-06-25 21:30:07 -04:00
docs Update _summary.md 2017-06-24 13:11:25 -04:00
keyboards add support for Orthodox keyboard (#1436) 2017-06-25 21:30:07 -04:00
lib Update the ugfx submodule 2017-06-24 00:37:27 +03:00
quantum Merge pull request #1429 from fredizzimo/fixes_for_emulator 2017-06-25 10:29:00 -04:00
tests Add a couple of todos to keyboard_report_util.cpp 2017-06-19 00:22:12 +03:00
tmk_core Merge pull request #1405 from cquiroz/oneshot-mods-timeout 2017-06-20 11:40:10 -04:00
util add other mcu bootloaders 2017-06-23 23:05:42 -04:00
.gitattributes Set eep files to binary mode 2016-08-27 18:37:28 +03:00
.gitignore remove most .pngs 2017-06-11 15:36:28 -04:00
.gitmodules Update uGFX and Chibios submodules + fixes (#1363) 2017-06-13 21:13:39 -07:00
.travis.yml add group edge via travis updates 2017-06-21 11:23:33 -04:00
book.json convert docs to lowercase and underscores 2017-06-10 14:58:24 -04:00
build_full_test.mk Add a test fixture 2017-06-18 23:49:38 +03:00
build_keyboard.mk Split common.mk into common.mk and common_features.mk 2017-06-18 21:22:22 +03:00
build_test.mk Split common.mk into common.mk and common_features.mk 2017-06-18 21:22:22 +03:00
common.mk Fix serial_link vpath problem 2017-06-19 00:46:53 +03:00
common_features.mk Fix serial_link vpath problem 2017-06-19 00:46:53 +03:00
Dockerfile adding lets split keymap 2017-06-03 10:28:46 -04: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
Makefile Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00
message.mk Detect failures when running multiple tests 2016-08-27 21:57:49 +03:00
readme.md update docs link 2017-06-05 16:25:59 -04:00
secrets.tar.enc get rid of folders in tar 2017-05-29 11:37:20 -04:00
testlist.mk Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00
Vagrantfile Update some obsolete references 2016-07-30 08:37:30 +02:00

Quantum Mechanical Keyboard Firmware

Build Status Gitter 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.

Official website

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

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 Erez Zukerman, and the Clueboard by Zach White.

Documentation

https://docs.qmk.fm is hosted on Gitbook and Github (they are synced). You can request changes by making a fork and pull request, or by clicking the "suggest an edit" link on any page of the Docs.