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.

преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. M0110/M0110A to USB keyboard converter
  2. ======================================
  3. This firmware converts the protocol of Apple Macintosh keyboard **M0110**, **M0110A** and **M0120** into USB. Target of this project is USB AVR controller **ATmega32U4**. Using this converter you can revive these retro keyboards with modern computer.
  4. Pictures of **M0110 + M0120** and **M0110A**.
  5. ![M0110+M0120](http://i.imgur.com/dyvXb2Tm.jpg)
  6. ![M0110A](http://i.imgur.com/HuHOEoHm.jpg)
  7. - M0110A support was contributed by [skagon@github](https://github.com/skagon).
  8. - M0120 also is supported. keys(+ * / and ,) on M0120 are recognized as cursor keys.
  9. Update
  10. ------
  11. - 2013/08: Change port for signals `PF` to `PD`
  12. - 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now.
  13. Building Hardware
  14. -----------------
  15. You need **4P4C** cable and **ATMega32U4** board like PJRC [Teensy]. Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`.
  16. [![M0110 Converter](http://i.imgur.com/4G2ZOegm.jpg)](http://i.imgur.com/4G2ZOeg.jpg)
  17. ### 4P4C phone handset cable
  18. Note that original cable used with Mac is **straight** while phone handset cable is **crossover**.
  19. <http://en.wikipedia.org/wiki/Modular_connector#4P4C>
  20. Close-up picture of handset cable. You can see one end of plug has reverse color codes against the other. Click to enlarge.
  21. [![4P4C cable](http://i.imgur.com/3S9P1mYm.jpg?1)](http://i.imgur.com/3S9P1mY.jpg?1)
  22. [Teensy]: http://www.pjrc.com/teensy/
  23. ### Socket Pinout
  24. - <http://pinouts.ru/Inputs/MacKeyboard_pinout.shtml>
  25. ![Jack fig](http://www.kbdbabel.org/conn/kbd_connector_macplus.png)
  26. ### Pull-up Resistor
  27. You may need pull-up resistors on signal lines(`CLOCK`, `DATA`) in particular when you have long or coiled cable. **1k-10k Ohm** will be OK for this purpose. In that case the converter may not read signal from keyboard correctly without pull-up resistors.
  28. Building Firmware
  29. -----------------
  30. To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to change compile options and pin configuration.
  31. $ git clone git://github.com/tmk/tmk_keyboard.git (or download source)
  32. $ cd m0110_usb
  33. $ make -f Makefile clean
  34. $ make -f Makefile
  35. and program your Teensy with [PJRC Teensy loader](http://www.pjrc.com/teensy/loader.html).
  36. Keymap
  37. ------
  38. You can change keymaps by editing *keymap.c*.
  39. ### M0110 & M0120
  40. #### *Default Layer*
  41. ,---------------------------------------------------------. ,---------------.
  42. | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Clr| -|Lft|Rgt|
  43. |---------------------------------------------------------| |---------------|
  44. |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | 7| 8| 9| Up|
  45. |---------------------------------------------------------| |---------------|
  46. |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | | 4| 5| 6| Dn|
  47. |---------------------------------------------------------| |---------------|
  48. |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | 1| 2| 3| |
  49. `---------------------------------------------------------' |-----------|Ent|
  50. |Ctl|Gui | Space |Alt |Ctl| | 0| .| |
  51. `-----------------------------------------------' `---------------'
  52. - `Space` and `Enter` also work as `Fn` layer switch key when holding down.
  53. #### *Function Layer(WASD/HHKB)*
  54. ,---------------------------------------------------------. ,---------------.
  55. |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| -|Lft|Rgt|
  56. |---------------------------------------------------------| |---------------|
  57. |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |Ins| \| | 7| 8| 9| Up|
  58. |---------------------------------------------------------| |---------------|
  59. |Caps |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Enter | | 4| 5| 6| Dn|
  60. |---------------------------------------------------------| |---------------|
  61. |Shift |End| |PgD| | | | |End|PgD|Dow|Shift | | 1| 2| 3| |
  62. `---------------------------------------------------------' |-----------|Ent|
  63. |Ctl|Gui | Space |Alt |Ctl| | 0| .| |
  64. `-----------------------------------------------' `---------------'
  65. ### M0110A
  66. #### *Default Layer*
  67. ,---------------------------------------------------------. ,---------------.
  68. | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Clr| =| /| *|
  69. |---------------------------------------------------------| |---------------|
  70. |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -|
  71. |-----------------------------------------------------' | |---------------|
  72. |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | | 4| 5| 6| +|
  73. |---------------------------------------------------------| |---------------|
  74. |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft| Up| | 1| 2| 3| |
  75. |---------------------------------------------------------| |-----------|Ent|
  76. |Ctrl |Gui | Space | \|Lft|Rgt|Dwn| | 0| .| |
  77. `---------------------------------------------------------' `---------------'
  78. - `Space` and `Enter` also work as `Fn` layer switch key when holding down.
  79. - `Backslash(\)` also works as `Alt` when holding down.
  80. #### *Function Layer(WASD/HHKB)*
  81. ,---------------------------------------------------------. ,---------------.
  82. |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *|
  83. |---------------------------------------------------------| |---------------|
  84. |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |Ins| | | 7| 8| 9| -|
  85. |-----------------------------------------------------' | |---------------|
  86. |Caps |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Enter | | 4| 5| 6| +|
  87. |---------------------------------------------------------| |---------------|
  88. |Shift |End| |PgD| | | | |End|PgD|Dow|Shif|PgU| | 1| 2| 3| |
  89. |---------------------------------------------------------| |-----------|Ent|
  90. |Ctrl |Gui | Space | \|Hom|End|PgD| | 0| .| |
  91. `---------------------------------------------------------' `---------------'
  92. Debug
  93. -----
  94. You can use [PJRC HID listen](http://www.pjrc.com/teensy/hid_listen.html) to see debug output. The converter has some functions for debug, press `<Command>+H` simultaneously to get help.
  95. - Command: `Shift+Option+Command`(`Shift+Alt+Gui` or `Shift+Alt+Control`)