-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Sony NEWS
Discussion: Sony NEWS keyboard converter
Preassembled converter is available here: https://geekhack.org/index.php?topic=72052.0
Use PD2(USART RXD) for 'Keyboard Data' pin and give power with VCC and GND. Other pins are optional and not supported at this point.
AVR NEWS ------------------------ PD2 Keyboard Data PD3 Keyboard Command PD4 Mouse Data PD0 BZ
Target microcontroller is Atmel ATMega32U2 by default but porting this project to other 8-bit AVR controllers would be easy.
NWP-5461 ------------- 1 VCC \ 1 2 3 x 5 / 2 BZ(Speaker) \ 6 7 8 9 / 3 Keyboard Data(from keyboard MCU TxD) --------- 4 NC 5 GND 6 Keyboard Command?(to MCU RxD via two schmitt triggers of Z8 74LS14) 7 Mouse Data(from Mouse Ext connector) 8 Power switch(directly to the switch via diode) 9 FG NWP-411A ------------- 1 VCC \ 1 2 3 x 5 / 2 BZ(Speaker) \ x 7 x 9 / 3 Keyboard Data(from keyboard MCU TxD) --------- 4 NC 5 GND 6 NC 7 Mouse Data(from Mouse Ext connector) 8 NC 9 FG
Its scan code is one byte which consists of 1-bit release(break) flag at MSB and 7-bit code. For example 0x29 is sent when 'a' key is pressed and 0xA9 when released.
MSB LSB 7 6 5 4 3 2 1 0 bit | | | | | | | | | +-+-+-+-+-+-+-- scan code(00-7F) +---------------- break flag: sets when released
/* NWP-5461 * ,---. ,------------------------, ,------------------------. ,---------. * |Pow| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| ,-----------. * `---' `------------------------' `------------------------' `---------' | *| /| +| * ,-------------------------------------------------------------. ,---. ,---------------| * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS | |Hlp| | 7| 8| 9| -| * |-------------------------------------------------------------| |---| |---------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Del| | |Ins| | 4| 5| 6| ,| * |---------------------------------------------------------' | |---| |---------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `|Enter | |Clr| | 1| 2| 3| | * |-------------------------------------------------------------| |---| |-----------|Ent| * |Shift | Z| X| C| V| B| N| M| ,| ,| /| | Shift | |PgU| | 0| .| ↑ | | * |-------------------------------------------------------------| |---| |---------------| * |Alt |Cap| | Space | | | | | |PgD| |Tab| ← | ↓ | → | * `-------------------------------------------------------------' `---' `---------------' * ,---. ,------------------------, ,------------------------. ,---------. * | 7A| | 01 | 02 | 03 | 04 | 05 | | 06 | 07 | 08 | 09 | 0A | | 68 | 69 | ,-----------. * `---' `------------------------' `------------------------' `---------' | 64| 65| 52| * ,-------------------------------------------------------------. ,---. ,---------------| * | 0B| 0C| 0D| 0E| 0F| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19 | | 6A| | 4B| 4C| 4D| 4E| * |-------------------------------------------------------------| |---| |---------------| * | 1A | 1B| 1C| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| | | 6B| | 4F| 50| 51| 56| * |---------------------------------------------------------' | |---| |---------------| * | 28 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35 | | 6C| | 53| 54| 55| | * |-------------------------------------------------------------| |---| |-----------| 5A| * | 36 | 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42 | | 6D| | 57| 59| 58| | * |-------------------------------------------------------------| |---| |---------------| * | 43 | 44 | 45 | 46 | 47 | 48| 49| 4A | | 6E| | 66| 5B| 5C| 5D| * `-------------------------------------------------------------' `---' `---------------' * * NWP-411A * ,------------------------, ,------------------------. * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| * `------------------------' `------------------------' * ,-------------------------------------------------------------. ,---------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS | | 7| 8| 9| -| * |-------------------------------------------------------------| |---------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Del| | | 4| 5| 6| +| * |---------------------------------------------------------' | |---------------| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `|Enter | | 1| 2| 3| ,| * |-------------------------------------------------------------| |---------------| * |Shift | Z| X| C| V| B| N| M| ,| ,| /| | Shift | | 0| ↑ | .| | * |-------------------------------------------------------------| |-----------|Ent| * |Alt |Cap| | Space | | | | | | ← | ↓ | → | | * `-------------------------------------------------------------' `---------------' * ,------------------------, ,------------------------. * | 01 | 02 | 03 | 04 | 05 | | 06 | 07 | 08 | 09 | 0A | * `------------------------' `------------------------' * ,-------------------------------------------------------------. ,---------------. * | 0B| 0C| 0D| 0E| 0F| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19 | | 4B| 4C| 4D| 4E| * |-------------------------------------------------------------| |---------------| * | 1A | 1B| 1C| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| | | 4F| 50| 51| 52| * |---------------------------------------------------------' | |---------------| * | 28 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35 | | 53| 54| 55| 56| * |-------------------------------------------------------------| |---------------| * | 36 | 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42 | | 57| 58| 59| | * |-------------------------------------------------------------| |-----------| 5A| * | 43 |44 | 45 | 46 | 47 | 48| 49| 4A | | 5B| 5C| 5D| | * `-------------------------------------------------------------' `---------------' */
NEWS protocol is a usual asynchronous serial communication. You can receive data from the keyboard easily with UART of micro controller.
-
TTL level
-
9600bps(keyboard) / 1200bps(mouse)
-
1-start bit
-
8-data bit
-
non-parity
-
1-stop bit.
Data is received as serial input at 9600 bps from the keyboard and 1200 bps from the mouse.
80 Reset? FB 81 replies whether LED command is enabled 7B [00|01] FB 82 enable LED command 83 replies DIP switches status 7B 00 0X FB B0 0X set LED status 0000 xx00 |`---- CapsLock `----- かな B1 replies LED status 7B 0X FB `FB` means ACK probably. `7B` indicates start of reply bytes.
Details
s80 rFB
s81 r7B r00 rFB
s82 rFB
s83 r7B r00 r0F rFB
s84 rFB
s85
s86
s87
s88
s89
s8A
s8B
s8C
s8D
s8E
s8F
s90 rFB
s91 r7B r00 rFB
s92 rFB
s93
s94
s95
s96
s97
s98
s99
s9A
s9B
s9C
s9D
s9E
s9F
sA0 rFB
sA1 r7B r00 rFB
sA2 rFB
sA3 rFB
sA4
sA5
sA6
sA7
sA8
sA9
sAA
sAB
sAC
sAD
sAE
sAF
sB0
sB1
sB2
sB3
sB4
sB5 r7B r00 rFB
sB6
sB7
sB8
sB9
sBA
sBB
sBC
sBD
sBE
sBF
3-7-2. keyboard Buzzer
The NEWS series keyboard features a built-in buzzer which can be buzzed by a signal from the system unit. In the NWS-1500, the external oscillator circuit is activated when the keyboard buzzer port is accessed, producing the sound of a buzzer. The buzzer frequency is different depending on whether the port is read or write accessed. With READ, the tone produced is approximately 2.2kHz, with WRITE, approximately l.4kHz. A flowchart of this process is given below.
Buzzer can be drived with pulsing on BZ pin.
With TMK firmware you can use tone()
functrion to control the buzzer.
https://github.com/tmk/tmk_keyboard/commit/6d577b33b740d6a9cc407e1614ddb8f83b3b2d8d
Mini-DIN 8P, Serial output 1200 bps
data bit structure: start 1 bit, stop 2 bit, data 8 bit, no parity (transfered from LSB side)
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
S |
SW1 |
SW2 |
SW3 |
X7 |
Y7 |
0 |
0 |
1 |
X |
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
0 |
Y |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
0 |
Pinout
___ ___
/ |_| \
/ 8 7 6 \
| 5 4 3 |
\_ 2 1 _/
\_____/
(receptacle)
4 VCC
5 GND
6 mouse data
Buttons 3
Dimensions 62 x 29 x 100 mm 0N x H x D, not including cord)
Weight Approx. 200g
Resolution 8 count/mm (200 CPI)
Interface TIL level Serial Interface 1200 bps
netbsd source reference:
https://github.com/NetBSD/src/blob/trunk/sys/arch/news68k/dev/ms.c#L69 https://github.com/NetBSD/src/blob/trunk/sys/arch/newsmips/dev/ms_hb.c#L118