benblazak / ergodox-firmware

firmware for the ergoDOX keyboard
Other
595 stars 296 forks source link

Firmware for the ErgoDox keyboard

The official website is [ergodox.io] (http://www.ergodox.io).
Also see the [geekhack] (http://geekhack.org/showthread.php?22780-Interest-Check-Custom-split-ergo-keyboard) and [deskthority] (http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753.html) discussion threads.
Kits are periodically for sale [on Massdrop] (https://www.massdrop.com/buy/ergodox), who also hosts [build instructions] (https://www.massdrop.com/ext/ergodox/assembly.php) and a [web UI] (https://www.massdrop.com/ext/ergodox) for configuring layouts.

Notes

A rewrite is currently underway (see the 'partial-rewrite' branch) and so this branch isn't quite receiving the attention it used to. Things that have changed since this document was last properly updated:

Table of Contents

generated with DocToc

About This File

If you're viewing this on github, please note that directory links will only work if you're viewing this from the directory, and file links will only work if you're viewing this as a file. This is true for all the '.md' files here. The limitation is due to the way github addresses directories and files, and the fact that Markdown doesn't have any way (that I know of) to rewrite the URLs as would be required.

About This Project

This project is meant to be a usable firmware for the ErgoDox keyboard. I started writing it because, at the time, it was the easiest way for me to get I²C working, and I very much wanted to avoid having the designers put a 16-pin connector (or something awful like that) between the two halves :) . It was also my first project in pure C (though I'm planning to rewrite it in C++), and my first attempt at anything remotely this close to hardware. I've done my best to put decent documentation everywhere, in the hope that my perspective as a n00b to this area might be useful for others.

The 'master' branch is meant to be stable - the one you want if you're going to update your keyboard firmware, and usually the one you want if you're going to fork. This is a small project, so there may be times when other branches have a bunch going on, and 'master' doesn't, and things sort of fall out of sync... but I'll try to avoid that. See the other branches for what's going on there.

Also, lots of other documentation can be found intermixed with the source (especially in the accompanying '.md' files), and [references.md] (references.md) contains lots of good links, along with descriptions.

Downloading Binaries

If you're just looking for binaries, they can be downloaded here.

Compiling

If you're just trying to compile, jump to the How To: [Compile the Source Code] (#compile-the-source-code) section.

Issues and Feature Requests

Open issues, feature requests, and such are tracked [on github] (/benblazak/ergodox-firmware/issues).

Features (on the ErgoDox)

About This Project (more technical)

If you're looking to hack on the source, or just feel like reading it:

A few concepts that might be different:

Dependencies (for building from source)

HowTo

Most of these instructions (or notes, rather) are meant for people who's googling skills and patience are directly proportional to the amount of C programming they don't already know :) . I've done my best to organize and comment things though, so I hope that just about anyone who manages to find their way all the way here will be able to figure out a good deal from context.

Load Firmware onto the Teensy

(beginner)

Before beginning, make sure:

After getting set up:

Notes:

Change the Direction of the Diodes

(intermediate)

That is, how to change whether the rows or the columns are being driven. This can be done for each side of the keyboard independently.

Compile the Source Code

(brief notes)

Note: This relates to compiling in the [src] (src) directory. The toplevel build process (for generating the ui-info file and such) isn't really intended to be portable; but you could probably get it working without too much trouble, if you're familiar with programming in a Unix environment. I'd suggest looking through the toplevel Makefile, as a staring point, if that's your goal.

Create a New Keymap

Add Code for a Different Type of Keyboard


Copyright © 2012 Ben Blazak benblazak.dev@gmail.com
Released under The MIT License (MIT) (see "license.md")
Project located at https://github.com/benblazak/ergodox-firmware