1
0

Merge branch 'ibm4704'

This commit is contained in:
tmk 2014-02-17 16:43:19 +09:00
commit a03a197fe2
3 changed files with 64 additions and 27 deletions

View File

@ -5,8 +5,23 @@ This firmware converts IBM 4704 keyboard protocol to USB HID.
Keyboard initialization process takes a few seconds at start up. During that you will hear buzzer from the keyboard. **You need to plug USB cable after hooking up your keyboard to the converter.** Keyboard initialization process takes a few seconds at start up. During that you will hear buzzer from the keyboard. **You need to plug USB cable after hooking up your keyboard to the converter.**
4704 Connector Keyboard models
-------------- ---------------
IBM capacitive switch models:
6019273 Model 100 50-key (grid layout) http://kishy.dyndns.org/?p=977
6019284 Model 200 62-key Alpha(60% layout) http://kishy.dyndns.org/?p=894
6019303 Model 300 77-key Expanded Alpha http://kbtalking.cool3c.com/article/23272
6020218 Model 400 107-key Full key http://kishy.dyndns.org/?p=980
Alps switch(vintage Green) models:
5954339 Japanese 102-key http://deskthority.net/post87127.html#p87127
6112883 Japanese 102-key http://geekhack.org/index.php?topic=52888.msg1194489#msg1194489
6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047
6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566
Connector
---------
Keyboard Plug from front: Keyboard Plug from front:
DSUB-9 DSUB-9

View File

@ -35,6 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key combination for command */ /* key combination for command */
#define IS_COMMAND() ( \ #define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) || \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
) )

View File

@ -1,10 +1,16 @@
4704 Keyboard IBM 4704 Keyboard
============= =================
Keyboard Models: IBM capacitive switch models:
Model 100 6019273 50-key (grid layout) 6019273 Model 100 50-key (grid layout) http://kishy.dyndns.org/?p=977
Model 200 6019284 62-key Alpha(60% layout) 6019284 Model 200 62-key Alpha(60% layout) http://kishy.dyndns.org/?p=894
Model 300 6019303 77-key Expanded Alpha 6019303 Model 300 77-key Expanded Alpha http://kbtalking.cool3c.com/article/23272
Model 400 6020218 107-key Full key 6020218 Model 400 107-key Full key http://kishy.dyndns.org/?p=980
Alps switch(vintage Green) models:
5954339 Japanese 102-key http://deskthority.net/post87127.html#p87127
6112883 Japanese 102-key http://geekhack.org/index.php?topic=52888.msg1194489#msg1194489
6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047
6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566
Resourse Resourse
-------- --------
@ -16,11 +22,19 @@ http://ed-thelen.org/comp-hist/IBM-ProdAnn/4700.pdf
4704 Keyboard Protocol IBM 4704 Keyboard Protocol
====================== ==========================
On powering up the keyboard sends keyboard id; A3h for 6019284(62-key), for example. On powering up keyboard sends keyboard ID; A3h for 6019284(62-key), for example.
After that firmware enters FC command mode and waits for parameter data from host After that the keyboard enters FC command mode and waits for parameter data from host
so that it doesn't send any scancode until you send 'FF'(End of FC command). so that it doesn't send any scancode until you send 'FF'(End of FC command mode).
Keyboard ID
-------------------------------
Model 100 50-key A2h
Model 200 62-key A3h
Model 300 77-key A4h
Model 400 107-key ??
Japanese/Chinese 102-key A6h
Connector Connector
@ -113,27 +127,34 @@ NOTE: When break code is enabled the key sends scancode with setting 7th bit on
and without it on release. That is, '`' sends 80h on press and 00h on release. and without it on release. That is, '`' sends 80h on press and 00h on release.
keyboard command Keyboard command
---------------- ----------------
FF Soft Reset(0008h) Keyboard accepts these commands from host.
FE Resend(00e8h)
FD Buzzer stop?(00edh) Description Entry point
FC Set Key flag(00f6h) -----------------------------------------------------------
FB Soft Reset(0008h) FF Soft Reset 0008h
FA Reset(0000h) FE Resend 00e8h
FD Buzzer(emits a short beep) 00edh
FC Set Key Flag 00f6h
FB Soft Reset 0008h
FA Reset 0000h
Keyboard response Keyboard response
----------------- -----------------
FF Not exist. [Outgoing buffer cannot have FFh(00h in fact)] Keyobard sends these bytes to host.
FE Overflow(key event/receive data) at 00c5h, 0346h
FE Memory test error at 0224h Description Entry point
FD Command out of bound at 00d8h -----------------------------------------------------------
FE Overflow(key event/receive data) 00c5h, 0346h
Memory test error 0224h
FD Command out of bound 00d8h
Key out of bound Key out of bound
7E Read/Parity error in receive from host at 00bch 7E Read/Parity error in receive from host 00bch
Set Key flag command(FC) Set Key Flag command(FC)
------------------------ ------------------------
After 'Power on Reset' firmware enters this command mode and waits for data from host, After 'Power on Reset' firmware enters this command mode and waits for data from host,
so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'. so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'.