Terminal Ms have weird ID, speak scancode set 3 and don't send break codes by default.
If Linux completely ignores the board, you need to patch the kernel with proper ID (sorry, I still didn't get my lazy ass to send this upstream):
diff --git a/drivers/input/serio/libps2.c b/drivers/input/serio/libps2.c
index 07a8363..e2489fb 100644
--- a/drivers/input/serio/libps2.c
+++ b/drivers/input/serio/libps2.c
@@ -114,6 +114,7 @@ int ps2_is_keyboard_id(char id_byte)
0x5d, /* Trust keyboard */
0x60, /* NMB SGI keyboard, translated */
0x47, /* NMB SGI keyboard */
+ 0xbf, /* IBM terminal keyboards */
};
return memchr(keyboard_ids, id_byte, sizeof(keyboard_ids)) != NULL;
To tell Linux to decode scancode set 3, add this to the kernel command line: i8042.direct=1 atkbd.set=3
To tell Linux to program the keyboard to send break codes, add also: atkbd.terminal=1
If you want key repetition generated in software (the keyboard doesn't do it by itself), add: atkbd.softrepeat=1
Note that this is meaningful only in VTs, X always repeats keys in software.
Windows requires special driver, available somewhere in wikis.