aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--converter/m0110_usb/README.md128
-rw-r--r--converter/m0110_usb/doc/m0110.jpgbin49360 -> 0 bytes
-rw-r--r--converter/m0110_usb/doc/teensy.jpgbin50081 -> 0 bytes
3 files changed, 64 insertions, 64 deletions
diff --git a/converter/m0110_usb/README.md b/converter/m0110_usb/README.md
index bd8bef9f2..b3fb8f7e9 100644
--- a/converter/m0110_usb/README.md
+++ b/converter/m0110_usb/README.md
@@ -1,10 +1,12 @@
1M0110/M0110A to USB keyboard converter 1M0110/M0110A to USB keyboard converter
2====================================== 2======================================
3This firmware converts the protocol of Apple Macintosh keyboard M0110/M0110A into USB. 3This 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.
4Target board of this project is [PJRC Teensy](http://www.pjrc.com/teensy/), though, 4
5you can use other board with USB AVR like `ATmega32U4` and `AT90USB`. 5Pics of **M0110 + M0120** and **M0110A**.
6
7![M0110+M0120](http://i.imgur.com/dyvXb2Tm.jpg)
8![M0110A](http://i.imgur.com/HuHOEoHm.jpg)
6 9
7![M0110](https://raw.github.com/tmk/tmk_keyboard/master/converter/m0110_usb/doc/m0110.jpg)
8 10
9- M0110A support was contributed by [skagon@github](https://github.com/skagon). 11- M0110A support was contributed by [skagon@github](https://github.com/skagon).
10- M0120 also is supported. keys(+ * / and ,) on M0120 are recognized as cursor keys. 12- M0120 also is supported. keys(+ * / and ,) on M0120 are recognized as cursor keys.
@@ -13,49 +15,42 @@ you can use other board with USB AVR like `ATmega32U4` and `AT90USB`.
13 15
14Update 16Update
15------ 17------
16- 2013/08 Change port for signals PF to PD 18- 2013/08: Change port for signals `PF` to `PD`
19- 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now.
17 20
18 21
19 22
20Connection 23Building Hardware
21---------- 24-----------------
22You need 4P4C plug and cable to connect Teensy or other AVR dev board into the keyboard. 25You 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`.
23Teensy port `PD0` is assigned for `CLOCK` line and `PD1` for `DATA` by default,
24you can change pin configuration with editing *config.h*.
25 26
26You can find 4P4C plugs on telephone handset cable. Note that it is *crossover* connection 27[![M0110 Converter](http://i.imgur.com/4G2ZOegm.jpg)](http://i.imgur.com/4G2ZOeg.jpg)
27while Macintosh keyboard cable is *straight*.
28 28
29[![Conection](https://raw.github.com/tmk/tmk_keyboard/master/converter/m0110_usb/doc/teensy.jpg)] 29### 4P4C phone handset cable
30Note that original cable used with Mac is **straight** while phone handset cable is **crossover**.
30 31
31In this pic: 32<http://en.wikipedia.org/wiki/Modular_connector#4P4C>
32 33
331. `GND`(Black) 34Close-up pic of handset cable. You can see one end of plug has reverse color codes against the other. Click to enlarge.
342. `CLOCK`(Red) 35[![4P4C cable](http://i.imgur.com/3S9P1mYm.jpg?1)](http://i.imgur.com/3S9P1mY.jpg?1)
353. `DATA`(Green)
364. `+5V`(Yellow)
37 36
38Note that wire colors may vary in your cable. 37[Teensy]: http://www.pjrc.com/teensy/
39 38
40 39
41### Pinout 40### Socket Pinout
42- <http://pinouts.ru/Inputs/MacKeyboard_pinout.shtml> 41- <http://pinouts.ru/Inputs/MacKeyboard_pinout.shtml>
43- <http://en.wikipedia.org/wiki/Modular_connector#4P4C>
44 42
45![Jack fig](http://www.kbdbabel.org/conn/kbd_connector_macplus.png) 43![Jack fig](http://www.kbdbabel.org/conn/kbd_connector_macplus.png)
46 44
47 45
48### Pull-up Registor 46### Pull-up Registor
49You may need pull-up registors on signal lines(`CLOCK`, `DATA`) in particular 47You may need pull-up registors 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.
50when you have long or coiled cable. 1k-10k Ohm will be OK for this purpose.
51In some cases MCU can't read signal from keyboard correctly without pull-up resistors.
52 48
53 49
54 50
55Building Frimware 51Building Frimware
56----------------- 52-----------------
57To compile firmware you need AVR GCC. You can use [WinAVR](http://winavr.sourceforge.net/) on Windows. 53To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to change compile options and pin configuration.
58You can edit *Makefile* and *config.h* to change compile options and pin configuration.
59 54
60 $ git clone git://github.com/tmk/tmk_keyboard.git (or download source) 55 $ git clone git://github.com/tmk/tmk_keyboard.git (or download source)
61 $ cd m0110_usb 56 $ cd m0110_usb
@@ -71,64 +66,69 @@ Keymap
71You can change keymaps by editing *keymap.c*. 66You can change keymaps by editing *keymap.c*.
72 67
73### M0110 & M0120 68### M0110 & M0120
74#### *Default* 69#### *Default Layer*
75 ,---------------------------------------------------------. ,---------------. 70 ,---------------------------------------------------------. ,---------------.
76 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Ctl| -|Lft|Rgt| 71 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Clr| -|Lft|Rgt|
77 |---------------------------------------------------------| |---------------| 72 |---------------------------------------------------------| |---------------|
78 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | 7| 8| 9| Up| 73 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | 7| 8| 9| Up|
79 |---------------------------------------------------------| |---------------| 74 |---------------------------------------------------------| |---------------|
80 |Fn0 | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| Dn| 75 |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | | 4| 5| 6| Dn|
81 |---------------------------------------------------------| |---------------| 76 |---------------------------------------------------------| |---------------|
82 |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | 1| 2| 3| | 77 |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | 1| 2| 3| |
83 `---------------------------------------------------------' |-----------|Ent| 78 `---------------------------------------------------------' |-----------|Ent|
84 |Ctl|Alt | Space |Gui |Ctl| | 0| .| | 79 |Ctl|Gui | Space |Alt |Ctl| | 0| .| |
85 `-----------------------------------------------' `---------------' 80 `-----------------------------------------------' `---------------'
86#### *HHKB/WASD Layer(WASD/IJKL)* 81
87 ,---------------------------------------------------------. ,---------------. 82- `Space` and `Enter` also work as `Fn` layer switch key when holding down.
88 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| -|Lft|Rgt| 83
89 |---------------------------------------------------------| |---------------| 84#### *Function Layer(WASD/HHKB)*
90 |Caps |Hom| Up|PgU| | | |PgU| Up|Hom|Psc|Slk|Pau|Ins| | 7| 8| 9| Up| 85 ,---------------------------------------------------------. ,---------------.
91 |---------------------------------------------------------| |---------------| 86 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| -|Lft|Rgt|
92 |Fn0 |Lef|Dow|Rig| | | |Lef|Dow|Rig| | |Return| | 4| 5| 6| Dn| 87 |---------------------------------------------------------| |---------------|
93 |---------------------------------------------------------| |---------------| 88 |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |Ins| \| | 7| 8| 9| Up|
94 |Shift |End| |PgD| | | |PgD| |End| |Shift | | 1| 2| 3| | 89 |---------------------------------------------------------| |---------------|
95 `---------------------------------------------------------' |-----------|Ent| 90 |Caps |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Enter | | 4| 5| 6| Dn|
96 |Ctl|Alt | Space |Gui |Ctl| | 0| .| | 91 |---------------------------------------------------------| |---------------|
97 `-----------------------------------------------' `---------------' 92 |Shift |End| |PgD| | | | |End|PgD|Dow|Shift | | 1| 2| 3| |
93 `---------------------------------------------------------' |-----------|Ent|
94 |Ctl|Gui | Space |Alt |Ctl| | 0| .| |
95 `-----------------------------------------------' `---------------'
96
98 97
99### M0110A 98### M0110A
100#### *Default* 99#### *Default Layer*
101 ,---------------------------------------------------------. ,---------------. 100 ,---------------------------------------------------------. ,---------------.
102 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Ctl| =| /| *| 101 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Clr| =| /| *|
103 |---------------------------------------------------------| |---------------| 102 |---------------------------------------------------------| |---------------|
104 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -| 103 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -|
105 |-----------------------------------------------------' | |---------------| 104 |-----------------------------------------------------' | |---------------|
106 |Fn0 | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +| 105 |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | | 4| 5| 6| +|
107 |---------------------------------------------------------| |---------------| 106 |---------------------------------------------------------| |---------------|
108 |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft| Up| | 1| 2| 3| | 107 |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft| Up| | 1| 2| 3| |
109 |---------------------------------------------------------| |-----------|Ent| 108 |---------------------------------------------------------| |-----------|Ent|
110 |Alt |Gui | Space | \|Lft|Rgt| Dn| | 0| .| | 109 |Ctrl |Gui | Space | \|Lft|Rgt|Dwn| | 0| .| |
111 `---------------------------------------------------------' `---------------' 110 `---------------------------------------------------------' `---------------'
112#### *Cursor Layer(WASD/IJKL)* 111
112- `Space` and `Enter` also work as `Fn` layer switch key when holding down.
113- `Backslash(\)` also works as `Alt` when holding down.
114
115#### *Function Layer(WASD/HHKB)*
113 ,---------------------------------------------------------. ,---------------. 116 ,---------------------------------------------------------. ,---------------.
114 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *| 117 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *|
115 |---------------------------------------------------------| |---------------| 118 |---------------------------------------------------------| |---------------|
116 |Caps |Hom| Up|PgU| | | |PgU| Up|Hom|Psc|Slk|Pau| | | 7| 8| 9| -| 119 |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |Ins| | | 7| 8| 9| -|
117 |-----------------------------------------------------' | |---------------| 120 |-----------------------------------------------------' | |---------------|
118 |Fn0 |Lef|Dow|Rig| | | |Lef|Dow|Rig| | |Return| | 4| 5| 6| +| 121 |Caps |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Enter | | 4| 5| 6| +|
119 |---------------------------------------------------------| |---------------| 122 |---------------------------------------------------------| |---------------|
120 |Shift |End| |PgD| | | |PgD| |End| |Shif|PgU| | 1| 2| 3| | 123 |Shift |End| |PgD| | | | |End|PgD|Dow|Shif|PgU| | 1| 2| 3| |
121 |---------------------------------------------------------| |-----------|Ent| 124 |---------------------------------------------------------| |-----------|Ent|
122 |Alt |Gui | Space |Ins|Hom|End|PgD| | 0| .| | 125 |Ctrl |Gui | Space | \|Hom|End|PgD| | 0| .| |
123 `---------------------------------------------------------' `---------------' 126 `---------------------------------------------------------' `---------------'
124 127
125 128
126 129
127Debug 130Debug
128----- 131-----
129You can use [PJRC HID listen](http://www.pjrc.com/teensy/hid_listen.html) to see debug output. 132You 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.
130
131The converter has some functions for debug, press `<magickey>+H` simultaneously to get help.
132These function is totally undocumented, tentative, inconsistent and buggy.
133 133
134magickey: Shift+Option+Command(Shift+Alt+Gui or Shift+Alt+Control) 134- Command: `Shift+Option+Command`(`Shift+Alt+Gui` or `Shift+Alt+Control`)
diff --git a/converter/m0110_usb/doc/m0110.jpg b/converter/m0110_usb/doc/m0110.jpg
deleted file mode 100644
index ef9a123ab..000000000
--- a/converter/m0110_usb/doc/m0110.jpg
+++ /dev/null
Binary files differ
diff --git a/converter/m0110_usb/doc/teensy.jpg b/converter/m0110_usb/doc/teensy.jpg
deleted file mode 100644
index 96e93e7e2..000000000
--- a/converter/m0110_usb/doc/teensy.jpg
+++ /dev/null
Binary files differ