diff options
Diffstat (limited to 'docs/TMK_README.md')
-rw-r--r-- | docs/TMK_README.md | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/docs/TMK_README.md b/docs/TMK_README.md new file mode 100644 index 000000000..e3438eda2 --- /dev/null +++ b/docs/TMK_README.md | |||
@@ -0,0 +1,243 @@ | |||
1 | # TMK Documenation | ||
2 | |||
3 | Features | ||
4 | -------- | ||
5 | These features can be used in your keyboard. | ||
6 | |||
7 | * Multi-layer Keymap - Multiple keyboard layouts with layer switching | ||
8 | * Mouse key - Mouse control with keyboard | ||
9 | * System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up | ||
10 | * Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc | ||
11 | * USB NKRO - 120 keys(+ 8 modifiers) simultaneously | ||
12 | * PS/2 mouse support - PS/2 mouse(TrackPoint) as composite device | ||
13 | * Keyboard protocols - PS/2, ADB, M0110, Sun and other old keyboard protocols | ||
14 | * User Function - Customizable function of key with writing code | ||
15 | * Macro - Very primitive at this time | ||
16 | * Keyboard Tricks - Oneshot modifier and modifier with tapping feature | ||
17 | * Debug Console - Messages for debug and interaction with firmware | ||
18 | * Virtual DIP Switch - Configurations stored EEPROM(Boot Magic) | ||
19 | * Locking CapsLock - Mechanical switch support for CapsLock | ||
20 | * Breathing Sleep LED - Sleep indicator with charm during USB suspend | ||
21 | * Backlight - Control backlight levels | ||
22 | |||
23 | |||
24 | |||
25 | Projects | ||
26 | -------- | ||
27 | You can find some keyboard specific projects under `converter` and `keyboard` directory. | ||
28 | |||
29 | ## Main projects | ||
30 | |||
31 | ### OLKB products | ||
32 | * [planck](keyboards/planck/) - [Planck] Ortholinear 40% keyboard | ||
33 | * [preonic](keyboards/preonic/) - [Preonic] Ortholinear 50% keyboard | ||
34 | * [atomic](keyboards/atomic/) - [Atomic] Ortholinear 60% keyboard | ||
35 | |||
36 | ### Ergodox EZ | ||
37 | * [ergodox_ez](keyboards/ergodox/ez) - [Ergodox_EZ] Assembled split keyboard | ||
38 | |||
39 | ## Other projects | ||
40 | |||
41 | ### converter | ||
42 | * [ps2_usb](converter/ps2_usb/) - [PS/2 keyboard to USB][GH_ps2] | ||
43 | * [adb_usb](converter/adb_usb/) - [ADB keyboard to USB][GH_adb] | ||
44 | * [m0110_usb](converter/m0110_usb) - [Macintosh 128K/512K/Plus keyboard to USB][GH_m0110] | ||
45 | * [terminal_usb](converter/terminal_usb/) - [IBM Model M terminal keyboard(PS/2 scancode set3) to USB][GH_terminal] | ||
46 | * [news_usb](converter/news_usb/) - [Sony NEWS keyboard to USB][GH_news] | ||
47 | * [x68k_usb](converter/x68k_usb/) - [Sharp X68000 keyboard to USB][GH_x68k] | ||
48 | * [sun_usb](converter/sun_usb/) - [Sun] to USB(type4, 5 and 3?) | ||
49 | * [pc98_usb](converter/pc98_usb/) - [PC98] to USB | ||
50 | * [usb_usb](converter/usb_usb/) - USB to USB(experimental) | ||
51 | * [ascii_usb](converter/ascii_usb/) - ASCII(Serial console terminal) to USB | ||
52 | * [ibm4704_usb](converter/ibm4704_usb) - [IBM 4704 keyboard Converter][GH_ibm4704] | ||
53 | |||
54 | ### keyboard | ||
55 | * [hhkb](keyboards/hhkb/) - [Happy Hacking Keyboard pro][GH_hhkb] hasu's main board | ||
56 | * [gh60](keyboards/gh60/) - [GH60] DIY 60% keyboard [prototype][GH60_proto] hasu's second board | ||
57 | * [hbkb](keyboards/hbkb/) - [Happy Buckling spring keyboard][GH_hbkb](IBM Model M 60% mod) | ||
58 | * [hid_liber](keyboards/hid_liber/) - [HID liberation][HID_liber] controller (by alaricljs) | ||
59 | * [phantom](keyboards/phantom/) - [Phantom] keyboard (by Tranquilite) | ||
60 | * [IIgs_Standard](keyboards/IIgs/) - Apple [IIGS] keyboard mod(by JeffreySung) | ||
61 | * [macway](keyboards/macway/) - [Compact keyboard mod][GH_macway] [retired] | ||
62 | * [KMAC](keyboards/kmac/) - Korean custom keyboard | ||
63 | * [Lightsaber](keyboards/lightsaber/) - Korean custom keyboard | ||
64 | * [Infinity](keyboards/infinity/) - Massdrop [Infinity keyboard][Infinity] | ||
65 | * [NerD](keyboards/nerd/) - Korean custom keyboard | ||
66 | * [KittenPaw](keyboards/kitten_paw) - Custom Majestouch controller | ||
67 | * [Lightpad](keyboards/lightpad) - Korean custom keypad | ||
68 | * [ghost_squid](keyboards/ghost_squid/) - [The Ghost Squid][ghost_squid] controller for [Cooler Master QuickFire XT][cmxt] | ||
69 | |||
70 | ### Extenal projects using tmk_keyboard | ||
71 | * [ErgoDox_cub-uanic][cub-uanic] - Split Ergonomic Keyboard [ErgoDox][ergodox_org] | ||
72 | * [mcdox][mcdox_tmk] - [mcdox][mcdox] | ||
73 | |||
74 | |||
75 | [GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930 | ||
76 | [GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047 | ||
77 | [GH_ps2]: http://geekhack.org/showwiki.php?title=Island:14618 | ||
78 | [GH_adb]: http://geekhack.org/showwiki.php?title=Island:14290 | ||
79 | [GH_hhkb_bt]: http://geekhack.org/showwiki.php?title=Island:20851 | ||
80 | [GH_m0110]: http://geekhack.org/showwiki.php?title=Island:24965 | ||
81 | [GH_news]: http://geekhack.org/showwiki.php?title=Island:25759 | ||
82 | [GH_terminal]: http://geekhack.org/showwiki.php?title=Island:27272 | ||
83 | [GH_x68k]: http://geekhack.org/showwiki.php?title=Island:29060 | ||
84 | [GH_hbkb]: http://geekhack.org/showwiki.php?title=Island:29483 | ||
85 | [GH_ibm4704]: http://geekhack.org/index.php?topic=54706.0 | ||
86 | [HID_liber]: http://deskthority.net/wiki/HID_Liberation_Device_-_DIY_Instructions | ||
87 | [Phantom]: http://geekhack.org/index.php?topic=26742 | ||
88 | [GH60]: http://geekhack.org/index.php?topic=34959 | ||
89 | [GH60_proto]: http://geekhack.org/index.php?topic=37570.0 | ||
90 | [PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801 | ||
91 | [Sun]: http://en.wikipedia.org/wiki/Sun-3 | ||
92 | [IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS | ||
93 | [Infinity]: https://www.massdrop.com/buy/infinity-keyboard-kit | ||
94 | [ghost_squid]: http://deskthority.net/wiki/Costar_replacement_controllers#The_Ghost_Squid | ||
95 | [cmxt]: http://gaming.coolermaster.com/en/products/keyboard/quickfirext/ | ||
96 | [ergodox_org]: http://ergodox.org/ | ||
97 | [cub-uanic]: https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox | ||
98 | [mcdox]: https://github.com/DavidMcEwan/mcdox | ||
99 | [mcdox_tmk]: https://github.com/DavidMcEwan/tmk_keyboard/tree/master/keyboard/mcdox | ||
100 | [Planck]: http://olkb.co/planck | ||
101 | [Preonic]: http://olkb.co/preonic | ||
102 | [Atomic]: http://olkb.co/atomic | ||
103 | [Ergodox_EZ]: https://www.indiegogo.com/projects/ergodox-ez-an-incredible-mechanical-keyboard | ||
104 | |||
105 | |||
106 | License | ||
107 | ------- | ||
108 | **GPLv2** or later. Some protocol files are under **Modified BSD License**. | ||
109 | |||
110 | Third party libraries like LUFA, PJRC and V-USB have their own license respectively. | ||
111 | |||
112 | |||
113 | |||
114 | Build Firmware and Program Controller | ||
115 | ------------------------------------- | ||
116 | See [build environment setup](/readme.md#build-environment-setup), or the readme in the particular keyboards/* folder. | ||
117 | |||
118 | |||
119 | |||
120 | Change your keymap | ||
121 | ------------------ | ||
122 | See [doc/keymap.md](tmk_core/doc/keymap.md). | ||
123 | |||
124 | |||
125 | |||
126 | Magic Commands | ||
127 | -------------- | ||
128 | To see help press `Magic` + `H`. | ||
129 | |||
130 | `Magic` key combination is `LShift` + `RShift` in many project, but `Power` key on ADB converter. | ||
131 | `Magic` keybind can be vary on each project, check `config.h` in project directory. | ||
132 | |||
133 | Following commands can be also executed with `Magic` + key. In console mode `Magic` keybind is not needed. | ||
134 | |||
135 | ----- Command Help ----- | ||
136 | c: enter console mode | ||
137 | d: toggle debug enable | ||
138 | x: toggle matrix debug | ||
139 | k: toggle keyboard debug | ||
140 | m: toggle mouse debug | ||
141 | v: print device version & info | ||
142 | t: print timer count | ||
143 | s: print status | ||
144 | e: print eeprom config | ||
145 | n: toggle NKRO | ||
146 | 0/F10: switch to Layer0 | ||
147 | 1/F1: switch to Layer1 | ||
148 | 2/F2: switch to Layer2 | ||
149 | 3/F3: switch to Layer3 | ||
150 | 4/F4: switch to Layer4 | ||
151 | PScr: power down/remote wake-up | ||
152 | Caps: Lock Keyboard(Child Proof) | ||
153 | Paus: jump to bootloader | ||
154 | |||
155 | |||
156 | |||
157 | Boot Magic Configuration - Virtual DIP Switch | ||
158 | --------------------------------------------- | ||
159 | Boot Magic are executed during boot up time. Press Magic key below then plug in keyboard cable. | ||
160 | Note that you must use keys of **Layer 0** as Magic keys. These settings are stored in EEPROM so that retain your configure over power cycles. | ||
161 | |||
162 | To avoid configuring accidentally additive salt key `KC_SPACE` also needs to be pressed along with the following configuration keys. The salt key is configurable in `config.h`. See [tmk_core/common/bootmagic.h](tmk_core/common/bootmagic.h). | ||
163 | |||
164 | #### General | ||
165 | - Skip reading EEPROM to start with default configuration(`ESC`) | ||
166 | - Clear configuration stored in EEPROM to reset configuration(`Backspace`) | ||
167 | |||
168 | #### Bootloader | ||
169 | - Kick up Bootloader(`B`) | ||
170 | |||
171 | #### Debug | ||
172 | - Debug enable(`D`) | ||
173 | - Debug matrix enable(`D`+`X`) | ||
174 | - Debug keyboard enable(`D`+`K`) | ||
175 | - Debug mouse enable(`D`+`M`) | ||
176 | |||
177 | #### Keymap | ||
178 | - Swap Control and CapsLock(`Left Control`) | ||
179 | - Change CapsLock to Control(`Caps Lock`) | ||
180 | - Swap LeftAlt and Gui(`Left Alt`) | ||
181 | - Swap RightAlt and Gui(`Right Alt`) | ||
182 | - Disable Gui(`Left Gui`) | ||
183 | - Swap Grave and Escape(`Grave`) | ||
184 | - Swap BackSlash and BackSpace(`Back Slash`) | ||
185 | - Enable NKRO on boot(`N`) | ||
186 | |||
187 | #### Default Layer | ||
188 | - Set Default Layer to 0(`0`) | ||
189 | - Set Default Layer to 1(`1`) | ||
190 | - Set Default Layer to 2(`2`) | ||
191 | - Set Default Layer to 3(`3`) | ||
192 | - Set Default Layer to 4(`4`) | ||
193 | - Set Default Layer to 5(`5`) | ||
194 | - Set Default Layer to 6(`6`) | ||
195 | - Set Default Layer to 7(`7`) | ||
196 | |||
197 | |||
198 | |||
199 | Mechanical Locking support | ||
200 | -------------------------- | ||
201 | This feature makes it possible for you to use mechanical locking switch for `CapsLock`, `NumLock` | ||
202 | or `ScrollLock`. To enable this feature define these macros in `config.h` and use `KC_LCAP`, `KC_LN | ||
203 | UM` or `KC_LSCR` in keymap for locking key instead of normal `KC_CAPS`, `KC_NLCK` or `KC_SLCK`. Res | ||
204 | ync option tries to keep switch state consistent with keyboard LED state. | ||
205 | |||
206 | #define LOCKING_SUPPORT_ENABLE | ||
207 | #define LOCKING_RESYNC_ENABLE | ||
208 | |||
209 | |||
210 | |||
211 | Start Your Own Project | ||
212 | ----------------------- | ||
213 | **TBD** | ||
214 | |||
215 | |||
216 | |||
217 | Debugging | ||
218 | -------- | ||
219 | Use PJRC's `hid_listen` to see debug messages. You can use the tool for debug even if firmware use LUFA stack. | ||
220 | |||
221 | You can use xprintf() to display debug info on `hid_listen`, see `tmk_core/common/xprintf.h`. | ||
222 | |||
223 | |||
224 | |||
225 | Files and Directories | ||
226 | ------------------- | ||
227 | ### Top | ||
228 | * tmk_core/ - core library | ||
229 | * keyboards/ - keyboard projects | ||
230 | * converter/ - protocol converter projects | ||
231 | * doc/ - documents | ||
232 | |||
233 | |||
234 | |||
235 | Coding Style | ||
236 | ------------- | ||
237 | - Doesn't use Tab to indent, use 4-spaces instead. | ||
238 | |||
239 | |||
240 | |||
241 | Other Keyboard Firmware Projects | ||
242 | ------------------ | ||
243 | You can learn a lot about keyboard firmware from these. See [doc/other_projects.md](tmk_core/doc/other_projects.md). | ||