tmk_keyboard/converter/sun_usb
2020-04-08 17:54:15 +09:00
..
command_extra.c sun_usb: Fix command help #387 2016-09-24 10:18:05 +09:00
config.h Add hardware serial support for sun_usb converter 2016-05-09 22:56:33 -07:00
keymap.c sun_usb: Fix keymap code 2016-12-21 11:06:47 +09:00
keymap_sun3.c Remove keymap read code from project directories 2016-08-29 13:54:44 +09:00
led.c sun_usb: Fix LED status update at startup 2015-06-03 00:29:36 +09:00
Makefile sun_usb: Add unimap support 2020-04-08 17:38:33 +09:00
matrix.c sun_usb: Turn out LED after matrix init 2016-12-10 13:10:33 +09:00
README.md sun_usb: Update README and rename to .md 2020-04-08 17:54:15 +09:00
unimap.c sun_usb: Add unimap support 2020-04-08 17:38:33 +09:00
unimap_trans.h sun_usb: Add unimap support 2020-04-08 17:38:33 +09:00

Sun to USB keyboard protocol converter

Target MCU is ATMega32u2/4 but other USB capable AVR will also work.

This converter will work with Sun Type 2-5 Keyboards.

Check wiki pages for other information about TMK keyobard firware.

https://github.com/tmk/tmk_keyboard/wiki

Update

2020-04-08 Added unimap support

Connector

Modern Type 4 and 5 keyboards uses 8Pin mini DIN.

   ___ ___
  /  |_|  \
 / 8  7  6 \
| 5    4  3 |
 \_ 2   1 _/
   \_____/  
 (receptacle)

Wiring:
Pin mini DIN        MCU
----------------------------------
1   GND             GND
2   GND             GND
3   5V
4   RX/TX(Mouse)
5   RX              PD3
6   TX              PD2
7   GND             GND
8   5V              VCC

Protocol

Signal: Asynchronous, Negative logic, 1200baud, No Flow control

Frame format: 1-Start bit, 8-Data bits, No-Parity, 1-Stop bit

AVR USART engine expects positive logic while Sun keyboard signal is negative. To use AVR UART engine you need external inverter in front of RX and TX pin. Otherwise you can use software serial to communicate the keyboard.

This firmware uses software serial by default, so you don't need any inverter. It can be still built with 'make HARDWARE_SERIAL=y' to enable hardware serial if you have inverter. You can use 74LS04 for example.

Commands From System To Keyboard

0x01 Reset
        Keyboard responds with following byte sequence:
        Success: 0xFF 0x04 0x7F
        Fail:    0x7E 0x01 0x7F
0x02 Bell On
0x03 Bell Off
0x0A Click On
0x0B Click Off
0x0E LED
        followed by LED status byte:
        bit: 3       2       1       0
        LED: CapsLk  ScrLk   Compose NumLk
0x0F Layout
        Keyboard responds with 'Layout Response' 0xFE 0xXX

Commands From Keyboard To System

0x7F Idle
        means no keys pressed.
0xFE Layout Response
0xFF Reset Response(followed by 0x04)

Reference

Build Firmware

Just use 'make'

$ cd sun_usb
$ make

Then, load the binary to MCU with your favorite programmer.

Keyboard Control

You can send Sun protocol commands with TMK Magic key combo. By default Magic key is LShift + RShift, LAlt + RAlt' or LMeta+RMeta`. https://github.com/tmk/tmk_keyboard#magic-commands

Following Sun specific commands are available. For example, to send 'Bell On' you can press LShift + RShift + Up keys simultaneously.

----- Sun converter Help -----
Up:     Bell On
Down:   Bell Off
Left:   Click On
Right:  Click Off
PgUp:   LED all On
PgDown: LED all On
Insert: Layout
Delete: Reset

Tested on

Type 3

http://blog.daveastels.com.s3-website-us-west-2.amazonaws.com/2014/12/27/type-3-keyboard.html

CTCSP SHORT TYPE KEYBOARD(Type 5)

http://imgur.com/a/QIv6p