~ruther/qmk_firmware

523cc6aa2ed0879c2d297e7060de2962987c8c7a — tmk 11 years ago 79840c6
Add build option and Sun specific commands
M converter/sun_usb/Makefile => converter/sun_usb/Makefile +1 -0
@@ 63,6 63,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
MOUSEKEY_ENABLE = yes	# Mouse keys
EXTRAKEY_ENABLE = yes	# Audio control and System control
CONSOLE_ENABLE = yes	# Console for debug
COMMAND_ENABLE = yes    # Commands for debug and configuration
#NKRO_ENABLE = yes	# USB Nkey Rollover



M converter/sun_usb/README => converter/sun_usb/README +20 -0
@@ 77,3 77,23 @@ Just use 'make'
    $ cd sun_usb
    $ make
Then, load the binary to MCU with your favorite programmer.


Sun commands
------------
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
```

M converter/sun_usb/command_extra.c => converter/sun_usb/command_extra.c +23 -5
@@ 11,11 11,19 @@ bool command_extra(uint8_t code)
        case KC_H:
        case KC_SLASH: /* ? */
            print("\n\n----- Sun converter Help -----\n");
            print("UP:	Bell On\n");
            print("DOWN:	Bell Off\n");
            print("LEFT:	Click On\n");
            print("RIGHT:	Click Off\n");
            print("Up:	Bell On\n");
            print("Down:	Bell Off\n");
            print("Left:	Click On\n");
            print("Right:	Click Off\n");
            print("PgUp:	LED all On\n");
            print("PgDown:	LED all On\n");
            print("Insert:	Layout\n");
            print("Delete:	Reset\n");
            return false;
        case KC_DEL:
            print("Reset\n");
            serial_send(0x01);
            break;
        case KC_UP:
            print("Bell On\n");
            serial_send(0x02);


@@ 32,7 40,17 @@ bool command_extra(uint8_t code)
            print("Click Off\n");
            serial_send(0x0B);
            break;
        case KC_NUMLOCK:
        case KC_PGUP:
            print("LED all on\n");
            serial_send(0x0E);
            serial_send(0xFF);
            break;
        case KC_PGDOWN:
            print("LED all off\n");
            serial_send(0x0E);
            serial_send(0x00);
            break;
        case KC_INSERT:
            print("layout\n");
            serial_send(0x0F);
            break;

M converter/sun_usb/matrix.c => converter/sun_usb/matrix.c +9 -7
@@ 65,7 65,7 @@ void matrix_init(void)
{
    DDRD |= (1<<6);
    PORTD |= (1<<6);
    debug_enable = true;
    //debug_enable = true;

    serial_init();



@@ 86,14 86,16 @@ uint8_t matrix_scan(void)
    debug_hex(code); debug(" ");

    switch (code) {
        case 0x7E:  // reset fail
        case 0xFE:  // layout
        case 0xFF:  // reset success
        case 0xFE:  // layout
        case 0x7E:  // reset fail
            if (code == 0xFF) print("reset: 0xFF ");
            if (code == 0x7E) print("reset fail: 0x7E ");
            if (code == 0xFE) print("layout: 0xFE ");
            // response byte
            _delay_ms(500);
            // ignore response byte
            debug("(response ignored:");
            while ((code = serial_recv())) { debug(" "); debug_hex(code); }
            debug(") ");
            if (code = serial_recv()) print_hex8(code);
            print("\n");
            // FALL THROUGH
        case 0x7F:
            // all keys up