Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 9 години
преди 8 години
преди 9 години
преди 11 години
преди 11 години
преди 9 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 10 години
преди 9 години
преди 12 години
преди 10 години
преди 11 години
преди 9 години
преди 12 години
преди 8 години
преди 11 години
преди 8 години
преди 10 години
преди 9 години
преди 11 години
преди 9 години
преди 10 години
преди 11 години
преди 9 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 9 години
преди 9 години
преди 10 години
преди 9 години
преди 8 години
преди 10 години
преди 11 години
преди 8 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. TMK Keyboard Firmware Collection
  2. ================================
  3. This is a keyboard firmware with some useful features for Atmel AVR controller.
  4. Source code is available here: <http://github.com/tmk/tmk_keyboard>
  5. Updates
  6. -------
  7. #### 2016/02/10
  8. core: flabbergast's Chibios protocol was merged from <https://github.com/flabbergast/tmk_keyboard/tree/chibios> (@72b1668). See [tmk_core/protocol/chibios/README.md](tmk_core/protocol/chibios/README.md). Chibios protocol supports Cortex-M such as STM32 and Kinetis.
  9. #### 2015/04/22
  10. Core library was separated to other branch `core`. <https://github.com/tmk/tmk_keyboard/tree/core>
  11. In `Makefile` you need to set `TMK_DIR` to indicate core library location now.
  12. TMK_DIR = ../../tmk_core
  13. Features
  14. --------
  15. These features can be used in your keyboard.
  16. * Multi-layer Keymap - Multiple keyboard layouts with layer switching
  17. * Mouse key - Mouse control with keyboard
  18. * System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up
  19. * Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc
  20. * USB NKRO - 120 keys(+ 8 modifiers) simultaneously
  21. * PS/2 mouse support - PS/2 mouse(TrackPoint) as composite device
  22. * Keyboard protocols - PS/2, ADB, M0110, Sun and other old keyboard protocols
  23. * User Function - Customizable function of key with writing code
  24. * Macro - Very primitive at this time
  25. * Keyboard Tricks - Oneshot modifier and modifier with tapping feature
  26. * Debug Console - Messages for debug and interaction with firmware
  27. * Virtual DIP Switch - Configurations stored EEPROM(Boot Magic)
  28. * Locking CapsLock - Mechanical switch support for CapsLock
  29. * Breathing Sleep LED - Sleep indicator with charm during USB suspend
  30. * Backlight - Control backlight levels
  31. Projects
  32. --------
  33. You can find some keyboard specific projects under `converter` and `keyboard` directory.
  34. ### converter
  35. * [ps2_usb](converter/ps2_usb/) - [PS/2 keyboard to USB][GH_ps2]
  36. * [adb_usb](converter/adb_usb/) - [ADB keyboard to USB][GH_adb]
  37. * [m0110_usb](converter/m0110_usb) - [Macintosh 128K/512K/Plus keyboard to USB][GH_m0110]
  38. * [terminal_usb](converter/terminal_usb/) - [IBM Model M terminal keyboard(PS/2 scancode set3) to USB][GH_terminal]
  39. * [news_usb](converter/news_usb/) - [Sony NEWS keyboard to USB][GH_news]
  40. * [x68k_usb](converter/x68k_usb/) - [Sharp X68000 keyboard to USB][GH_x68k]
  41. * [sun_usb](converter/sun_usb/) - [Sun] to USB(type4, 5 and 3?)
  42. * [pc98_usb](converter/pc98_usb/) - [PC98] to USB
  43. * [usb_usb](converter/usb_usb/) - USB to USB(experimental)
  44. * [ascii_usb](converter/ascii_usb/) - ASCII(Serial console terminal) to USB
  45. * [ibm4704_usb](converter/ibm4704_usb) - [IBM 4704 keyboard Converter][GH_ibm4704]
  46. ### keyboard
  47. * [hhkb](keyboard/hhkb/) - [Happy Hacking Keyboard pro][GH_hhkb] **my main board**
  48. * [gh60](keyboard/gh60/) - [GH60] DIY 60% keyboard [prototype][GH60_proto] **my second board**
  49. * [hbkb](keyboard/hbkb/) - [Happy Buckling spring keyboard][GH_hbkb](IBM Model M 60% mod)
  50. * [hid_liber](keyboard/hid_liber/) - [HID liberation][HID_liber] controller (by alaricljs)
  51. * [phantom](keyboard/phantom/) - [Phantom] keyboard (by Tranquilite)
  52. * [IIgs_Standard](keyboard/IIgs/) - Apple [IIGS] keyboard mod(by JeffreySung)
  53. * [macway](keyboard/macway/) - [Compact keyboard mod][GH_macway] [retired]
  54. * [KMAC](keyboard/kmac/) - Korean custom keyboard
  55. * [Lightsaber](keyboard/lightsaber/) - Korean custom keyboard
  56. * [Infinity](keyboard/infinity/) - Massdrop [Infinity keyboard][Infinity]
  57. * [NerD](keyboard/nerd/) - Korean custom keyboard
  58. * [KittenPaw](keyboard/kitten_paw) - Custom Majestouch controller
  59. * [Lightpad](keyboard/lightpad) - Korean custom keypad
  60. * [ghost_squid](keyboard/ghost_squid/) - [The Ghost Squid][ghost_squid] controller for [Cooler Master QuickFire XT][cmxt]
  61. ### Extenal projects using tmk_keyboard
  62. * [ErgoDox_cub-uanic][cub-uanic] - Split Ergonomic Keyboard [ErgoDox][ergodox_org]
  63. * [mcdox][mcdox_tmk] - [mcdox][mcdox]
  64. [GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930
  65. [GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047
  66. [GH_ps2]: http://geekhack.org/showwiki.php?title=Island:14618
  67. [GH_adb]: http://geekhack.org/showwiki.php?title=Island:14290
  68. [GH_hhkb_bt]: http://geekhack.org/showwiki.php?title=Island:20851
  69. [GH_m0110]: http://geekhack.org/showwiki.php?title=Island:24965
  70. [GH_news]: http://geekhack.org/showwiki.php?title=Island:25759
  71. [GH_terminal]: http://geekhack.org/showwiki.php?title=Island:27272
  72. [GH_x68k]: http://geekhack.org/showwiki.php?title=Island:29060
  73. [GH_hbkb]: http://geekhack.org/showwiki.php?title=Island:29483
  74. [GH_ibm4704]: http://geekhack.org/index.php?topic=54706.0
  75. [HID_liber]: http://deskthority.net/wiki/HID_Liberation_Device_-_DIY_Instructions
  76. [Phantom]: http://geekhack.org/index.php?topic=26742
  77. [GH60]: http://geekhack.org/index.php?topic=34959
  78. [GH60_proto]: http://geekhack.org/index.php?topic=37570.0
  79. [PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801
  80. [Sun]: http://en.wikipedia.org/wiki/Sun-3
  81. [IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS
  82. [Infinity]: https://www.massdrop.com/buy/infinity-keyboard-kit
  83. [ghost_squid]: http://deskthority.net/wiki/Costar_replacement_controllers#The_Ghost_Squid
  84. [cmxt]: http://gaming.coolermaster.com/en/products/keyboards/quickfirext/
  85. [ergodox_org]: http://ergodox.org/
  86. [cub-uanic]: https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox
  87. [mcdox]: https://github.com/DavidMcEwan/mcdox
  88. [mcdox_tmk]: https://github.com/DavidMcEwan/tmk_keyboard/tree/master/keyboard/mcdox
  89. License
  90. -------
  91. **GPLv2** or later. Some protocol files are under **Modified BSD License**.
  92. Third party libraries like LUFA, PJRC and V-USB have their own license respectively.
  93. Build Firmware and Program Controller
  94. -------------------------------------
  95. See [tmk_core/doc/build.md](tmk_core/doc/build.md).
  96. Change your keymap
  97. ------------------
  98. See [tmk_core/doc/keymap.md](tmk_core/doc/keymap.md).
  99. Magic Commands
  100. --------------
  101. To see help press `Magic` + `H`.
  102. `Magic` key combination is `LShift` + `RShift` in many project, but `Power` key on ADB converter.
  103. `Magic` keybind can be vary on each project, check `config.h` in project directory.
  104. Following commands can be also executed with `Magic` + key. In console mode `Magic` keybind is not needed.
  105. ----- Command Help -----
  106. c: enter console mode
  107. d: toggle debug enable
  108. x: toggle matrix debug
  109. k: toggle keyboard debug
  110. m: toggle mouse debug
  111. v: print device version & info
  112. t: print timer count
  113. s: print status
  114. e: print eeprom config
  115. n: toggle NKRO
  116. 0/F10: switch to Layer0
  117. 1/F1: switch to Layer1
  118. 2/F2: switch to Layer2
  119. 3/F3: switch to Layer3
  120. 4/F4: switch to Layer4
  121. PScr: power down/remote wake-up
  122. Caps: Lock Keyboard(Child Proof)
  123. Paus: jump to bootloader
  124. Boot Magic Configuration - Virtual DIP Switch
  125. ---------------------------------------------
  126. Boot Magic are executed during boot up time. Press Magic key below then plug in keyboard cable.
  127. 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.
  128. 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).
  129. #### General
  130. - Skip reading EEPROM to start with default configuration(`ESC`)
  131. - Clear configuration stored in EEPROM to reset configuration(`Backspace`)
  132. #### Bootloader
  133. - Kick up Bootloader(`B`)
  134. #### Debug
  135. - Debug enable(`D`)
  136. - Debug matrix enable(`D`+`X`)
  137. - Debug keyboard enable(`D`+`K`)
  138. - Debug mouse enable(`D`+`M`)
  139. #### Keymap
  140. - Swap Control and CapsLock(`Left Control`)
  141. - Change CapsLock to Control(`Caps Lock`)
  142. - Swap LeftAlt and Gui(`Left Alt`)
  143. - Swap RightAlt and Gui(`Right Alt`)
  144. - Disable Gui(`Left Gui`)
  145. - Swap Grave and Escape(`Grave`)
  146. - Swap BackSlash and BackSpace(`Back Slash`)
  147. - Enable NKRO on boot(`N`)
  148. #### Default Layer
  149. - Set Default Layer to 0(`0`)
  150. - Set Default Layer to 1(`1`)
  151. - Set Default Layer to 2(`2`)
  152. - Set Default Layer to 3(`3`)
  153. - Set Default Layer to 4(`4`)
  154. - Set Default Layer to 5(`5`)
  155. - Set Default Layer to 6(`6`)
  156. - Set Default Layer to 7(`7`)
  157. Mechanical Locking support
  158. --------------------------
  159. This feature makes it possible for you to use mechanical locking switch for `CapsLock`, `NumLock`
  160. or `ScrollLock`. To enable this feature define these macros in `config.h` and use `KC_LCAP`, `KC_LN
  161. UM` or `KC_LSCR` in keymap for locking key instead of normal `KC_CAPS`, `KC_NLCK` or `KC_SLCK`. Res
  162. ync option tries to keep switch state consistent with keyboard LED state.
  163. #define LOCKING_SUPPORT_ENABLE
  164. #define LOCKING_RESYNC_ENABLE
  165. Start Your Own Project
  166. -----------------------
  167. **TBD**
  168. Debugging
  169. --------
  170. Use PJRC's `hid_listen` to see debug messages. You can use the tool for debug even if firmware use LUFA stack.
  171. You can use xprintf() to display debug info on `hid_listen`, see `tmk_core/common/xprintf.h`.
  172. Files and Directories
  173. -------------------
  174. ### Top
  175. * keyboard/ - keyboard projects
  176. * converter/ - protocol converter projects
  177. * tmk_core/ - core library
  178. * tmk_core/doc/ - documents
  179. Coding Style
  180. -------------
  181. - Doesn't use Tab to indent, use 4-spaces instead.
  182. Other Keyboard Firmware Projects
  183. ------------------
  184. You can learn a lot about keyboard firmware from these. See [Other Projects](https://github.com/tmk/tmk_keyboard/wiki/Other-Protjects) other than TMK.