keychron_qmk_firmware/keyboard/ergodox_ez
Jack Humbert d9e4dad0a8 Makefile redo & other features (#395)
* .build containment implemented

* no destructive variable setting - builds in either folder

* make from 3 places

* cleans before each build
* make from root with keyboard=keyboard, keymap=keymap
* make from keyboard/keyboard with keymap=keymap
* make from keymaps/keymap
* only implemented on planck

* adds color diag to avr-gcc

* makefiles for all plancks, clean-up

* quick build-all makefile for plancks

* reformatting of make output (colors)

* color toggle, tmk path corrections

* correct if statement for color

* move config.h to main makefile, updates preonic, atomic

* format update, all keyboards targets

* makefile optional for build all target, alps and arrow_pad updated

* alps updated

* make planck default, trying out travis recipe for all-keyboards

* all-keymaps target, different travis recipe

* updates alps64

* updates keyboards to new format

* updates clue* projects

* all projects updated, specialise EZ .hex, let .hex through

* updates travis

* automatically find root, keyboard, keymap

* silent echo, cleaned-up mass make output

* updates all keyboards' .hex files except EZ

* Rename Bantam44.c to bantam44.c

* Rename Bantam44.h to bantam44.h

* nananana

* adds six key keyboard

* does same to ez as rest

* updates send_string example

* brings ergodox_ez up to date

* updates template/new project script

* adds sixkeyboard

* adds readme for sixkeyboard

* adds sixkeyboard to travis

* filenames, gitignore mess

* define clock prescaler stuff manually

* make quick, size test example

* documentation and dfu-no-build
2016-06-11 13:31:31 -04:00
..
keymaps Makefile redo & other features (#395) 2016-06-11 13:31:31 -04:00
util Adds Python script to util directory for easier discoverability 2016-06-06 21:47:57 -04:00
190hotfix.sh
config.h Add custom config.h and revert the changes on the global one. 2016-05-10 16:17:30 -07:00
ergodox_ez.c
ergodox_ez.h [Erez & Jack] Documents new Leader key functionality 2016-05-24 22:37:38 -04:00
i2cmaster.h
Makefile Makefile redo & other features (#395) 2016-06-11 13:31:31 -04:00
matrix.c Squash the prototype compiler warning 2016-05-31 14:18:40 +01:00
readme.md Makefile redo & other features (#395) 2016-06-11 13:31:31 -04:00
twimaster.c

Getting started

There are two main ways you could customize the ErgoDox EZ.

The Easy Way: Use an existing firmware file and just flash it

  1. Download and install the Teensy Loader. Some Linux distributions already provide a binary (may be called teensy-loader-cli), so you may prefer to use this.
  2. Find a firmware file you like. You can find a few if these in the keymaps subdirectory right here. The file you need ends with .hex, and you can look at its .c counterpart (or its PNG image) to see what you'll be getting. You can also use the Massdrop configurator to create a firmware Hex file you like.
  3. Download the firmware file
  4. Connect the keyboard, press its Reset button (gently insert a paperclip into the hole in the top-right corner) and flash it using the Teensy loader you installed on step 1 and the firmware you downloaded.

More technical: create your own totally custom firmware by editing the source files.

This requires a little bit of familiarity with coding.

  1. Go to https://github.com/jackhumbert/qmk_firmware and read the Readme at the base of this repository, top to bottom. Then come back here :)
  2. Clone the repository (download it)
  3. Set up a build environment as per the build guide
    • Using a Mac and have homebrew? just run brew tap osx-cross/avr && brew install avr-libc
  4. Copy keyboard/ergodox_ez/keymaps/default/keymap.c into keymaps/your_name/keymap.c (for example, keymaps/german/keymap.c)
  5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work.
  6. Compile your firmware by running make keymap=your_name. For example, make keymap=german. This will result in a hex file, which will be called ergodox_ez_your_name.hex, e.g. ergodox_ez_german.hex.
  7. Flash this hex file using the Teensy loader as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successfull build by running make teensy keymap=your_name.
  8. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics.

Good luck! :)

Contributing your keymap

The ErgoDox EZ firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed almost 20 user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox EZ. To make it easy for these people to use your layout, I recommend submitting your PR in the following format.

  1. All work goes inside your keymap subdirectory (keymaps/german in this example).
  2. keymap.c - this is your actual keymap file; please update the ASCII comments in the file so they correspond with what you did.
  3. compiled.hex - a compiled version of your keymap. This allows people to just download your hex file and flash it without having to set up a build toolchain to make it.
  4. readme.md - a Readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :)
  5. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use Keyboard Layout Editor to make something and grab a screenshot, but it's really not a must. If you do have graphics, your Readme can just embed the graphic as a link, just like I did with the default layout.

Finding the keycodes you need

Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need quantum/keymap_common.h.

That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot).

If you want to send a plain vanilla key, you can look up its code under doc/keycode.txt. That's where all the boring keys hang out.