]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/readme.md
Restructuring of the ergodox README.
[qmk_firmware.git] / keyboards / ergodox / readme.md
1 # Customizing Keymap
2
3 There are external tools for customizing the layout, but those do not use
4 the featurs of this qmk firmware.  These sites include:
5
6   - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez
7   - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files
8
9 You can also find an existing firmware that you like, for example from:
10
11   - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/)
12
13 This qmk firmware also provides the ability to customize keymaps, but requires
14 a toolchain to build the firmware.  See below for instructions on building
15 firmware and customizing keymaps.
16
17 # Customizing Keymaps
18
19 There are many existing keymaps in the "keymaps" directory.  If you just want
20 to use one of them, you don't need to modify keymaps and can just build and
21 flash the firmware as described below.  These directories each have a
22 "readme.md" file which describe them.
23
24 If none of the existing keymaps suit you, you can create your own custom
25 keymap.  This will require some experience with coding.  Follow these steps
26 to customize a keymap:
27
28   - Read the [qmk firmware README](https://github.com/jackhumbert/qmk_firmware) from top to bottom.  Then come back here.  :)
29
30   - Clone the qmk_firmware repository
31
32   - Set up your build environment (see below).
33
34   - Make a new directory under "keymaps" to hold your customizations.
35
36   - Copy an existing keymap that is close to what you want, such as
37     "keymaps/default/keymap.c".
38
39   - Use an editor to modify the new "keymap.c".  See "Finding the keycodes you
40     need" below).  Try to edit the comments as well, so the "text graphics"
41     represent your layout correctly.
42
43   - Compile your new firmware (see below)
44
45   - Flash your firmware (see below)
46
47   - Test the changes.
48
49   - Submit your keymap as a pull request to the qmk_firmware repository so
50     others can use it.  You will want to add a "readme.md" that describes the
51     keymap.
52
53 # Build Dependencies
54
55 Before you can build, you will need the build dependencies.  There is a script
56 to try to do this for Linux:
57
58   - Run the `util/install_dependencies.sh` script as root.
59
60 For the Infinity, you need the chibios submodules to be checked out or you
61 will receive errors about the build process being unable to find the chibios
62 files.  Check them out with:
63
64   - Go to the top level repo directory and run: `git submodule update --init --recursive`
65
66 # Flashing Firmware
67
68 ## ErgoDox Ez
69
70 The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
71
72 Linux users need to modify udev rules as described on the Teensy Linux page.
73 Some distributions provide a binary, maybe called `teensy-loader-cli`).
74
75 To flash the firmware:
76
77   - Build the firmware with `make keymap=keymapname`, for example `make
78     keymap=default`
79
80   - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
81     `ergodox_ez_default.hex`
82
83   - Start the teensy loader.
84
85   - Load the .hex file into it.
86
87   - Press the Reset button by inserting a paperclip gently into the reset hole
88     in the top right corder.
89
90   - Click the button in the Teensy app to download the firmware.
91
92 ## ErgoDox Infinity
93
94 The Infinity is two completely independent keyboards, and needs to be flashed
95 for the left and right halves seperately.  To flash them:
96
97   - Remove the build directory with `rm -rf ../../.build`
98
99   - Build the firmware with `make keymap=keymapname subproject=infinity`
100
101   - Plug in the left hand keyboard only.
102
103   - Press the program button (back of keyboard, above thumb pad).
104
105   - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity`
106
107   - Remove the left-hand build with `rm -rf ../../.build`
108
109   - Build left hand firmware with `make keymap=keymapname subproject=infinity MASTER=right`
110
111   - Plug in the right hand keyboard only.
112
113   - Press the program button (back of keyboard, above thumb pad).
114
115   - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity MASTER=right`
116
117 More information on the Infinity firmware is available in the [TMK/chibios for
118 Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
119
120 ## Contributing your keymap
121
122 The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of 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. To make it easy for these people to use your layout, I recommend submitting your PR in the following format.
123
124 1. All work goes inside your keymap subdirectory (`keymaps/german` in this example).
125 2. `keymap.c` - this is your actual keymap file; please update the ASCII comments in the file so they correspond with what you did.
126 3. `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. :)
127 4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) 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.
128
129 ## Finding the keycodes you need
130
131 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`.
132
133 That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot).
134
135 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.