]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge branch 'x68k_led'
authortmk <nobody@nowhere>
Fri, 21 Jun 2013 17:52:14 +0000 (02:52 +0900)
committertmk <nobody@nowhere>
Fri, 21 Jun 2013 17:52:14 +0000 (02:52 +0900)
converter/x68k_usb/Makefile
converter/x68k_usb/README
converter/x68k_usb/config_pjrc.h
converter/x68k_usb/keymap.c
converter/x68k_usb/led.c
converter/x68k_usb/matrix.c
protocol/x68k.c [deleted file]
protocol/x68k.h [deleted file]

index 62b976c56f639812144866c7bea4a5745c60fdd4..948622c7c8697a2b407ec380f6bc305b3325c378 100644 (file)
@@ -16,7 +16,7 @@ TARGET_DIR = .
 SRC =  keymap.c \
        matrix.c \
        led.c \
-       x68k.c
+       protocol/serial_uart.c
 
 CONFIG_H = config_pjrc.h
 
@@ -37,12 +37,23 @@ MCU = atmega32u4       # Teensy 2.0
 F_CPU = 16000000
 
 
+# Boot Section Size in bytes
+#   Teensy halfKay   512
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
 # Build Options
 #   *Comment out* to disable the options.
 #
-MOUSEKEY_ENABLE = yes  # Mouse keys
-EXTRAKEY_ENABLE = yes  # Audio control and System control
-NKRO_ENABLE = yes      # USB Nkey Rollover
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes  # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes  # Audio control and System control(+450)
+CONSOLE_ENABLE = yes   # Console for debug(+400)
+COMMAND_ENABLE = yes    # Commands for debug and configuration
+#SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
+#NKRO_ENABLE = yes     # USB Nkey Rollover - not yet supported in LUFA
 
 
 
index 0b61b2c4b3fe8c6d0b0616dbf5a79b850492cbe4..5f1c2072cb88de4b377eba793e1178c551de5187 100644 (file)
@@ -5,6 +5,7 @@ http://en.wikipedia.org/wiki/Sharp_X68000
 
 X68000 keyboard has ALPS linear switches.
 - DSETK0016CE01   green linear
+- DSETK0022CE02   yellow linear
 - DSETK0023CE03   yellow linear
 
 
@@ -127,3 +128,24 @@ Scan Codes
 `-----------------------------------------------------------|  .---=====---. |-----------| 4E|
        | 5F| 55 | 56 |     35     | 57 | 58 | 59 | 60|         |  72 |  73 | | 4F| 50| 51|   |
        `---------------------------------------------'         `-----------' `---------------'
+
+
+
+LED Special Functions
+---------------------
+http://homepage2.nifty.com/m_kamada/docs/unlistedx68k.htm#keyboard
+
+1. Random Illumination
+    Plug in with pressing F1, F2 and F3.
+
+2. Sequential Illumination
+    Plug in with pressing 記号入力(52), 登録(53) and HELP.
+
+3. Scan code Display
+    Plug in with pressing かな(5A), ローマ字(5B) and コード入力(5C).
+    You can see its scan code on LEDs by pressing a key.
+   +---------------------------------------------------+
+   |bit|6   |5       |4  |3   |2         |1       |0   |
+   |---+----+--------+---+----+----------+--------+----|
+   |LED|全角|ひらがな|INS|CAPS|コード入力|ローマ字|かな|
+   +---------------------------------------------------+
index 2df83a2cb493f5fa16b99be64bd0d58bab0c81fc..c49b4a73e1de9446ec38b59f4304ca3c0ff8714e 100644 (file)
@@ -34,30 +34,31 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* key combination for command */
 #define IS_COMMAND() ( \
     keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) || \
-    keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
+    keyboard_report->mods == (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) \
 )
 
 /* legacy keymap support */
 #define USE_LEGACY_KEYMAP
 
-/* mouse keys */
-#ifdef MOUSEKEY_ENABLE
-#   define MOUSEKEY_DELAY_TIME 255
-#endif
-
 
 /* USART configuration
  *     asynchronous, 2400baud, 8-data bit, non parity, 1-stop bit, no flow control
  */
 #ifdef __AVR_ATmega32U4__
-#   define KBD_RX_VECT        USART1_RX_vect
-#   define KBD_RX_DATA        UDR1
-#   define KBD_RX_BAUD        2400
-#   define KBD_RX_UBBR        ((F_CPU/(16UL*KBD_RX_BAUD))-1)
-#   define KBD_RX_INIT()      do { \
-        UBRR1L = (uint8_t) KBD_RX_UBBR; \
-        UBRR1H = (uint8_t) (KBD_RX_UBBR>>8); \
-        UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
+    #define SERIAL_UART_BAUD       2400
+    #define SERIAL_UART_DATA       UDR1
+    #define SERIAL_UART_UBRR       ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
+    #define SERIAL_UART_RXD_VECT   USART1_RX_vect
+    #define SERIAL_UART_TXD_READY  (UCSR1A&(1<<UDRE1))
+    #define SERIAL_UART_INIT()     do { \
+        UBRR1L = (uint8_t) SERIAL_UART_UBRR;       /* baud rate */ \
+        UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8);  /* baud rate */ \
+        UCSR1B = (1<<RXCIE1) | (1<<RXEN1) | /* RX: interrupt, RX: enable */ \
+                 (1<<TXEN1);                /* TX: enable */ \
+        UCSR1C = (0<<UPM11) | (0<<UPM10) | /* parity: none(00), even(01), odd(11) */ \
+                 (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* data-8bit(011) */ \
+        sei(); \
     } while(0)
 #else
 #   error "USART configuration is needed."
index 90abb396661c2c5e23bb728cf915e81f5c1e7f95..5e09f55d204304d3cbcde5e59b4eca6a876ac3bd 100644 (file)
@@ -113,13 +113,23 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            | 5F| 55 | 56 |     35     | 57 | 58 | 59 | 60|         |  72 |  73 | | 4F| 50| 51|   |
            `---------------------------------------------'         `-----------' `---------------'
 */
+    /* ANSI */
     KEYMAP(
-    NO,  NO,  F1,  F2,  F3,  F4,  F5,       F6,  F7,  F8,  F9,  F10,              PSCR,SLCK,PAUS,     CAPS,NO,  NO,  NO,
-    ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,BSPC,   INS, HOME,PGUP,     NLCK,PSLS,PAST,PMNS,
-    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     ENT,    DEL, END, PGDN,     P7,  P8,  P9,  PPLS,
-    LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,                   UP,            P4,  P5,  P6,  PEQL,
+    F16, F17,     F1,  F2,  F3,  F4,  F5,   F6,  F7,  F8,  F9,  F10,              PSCR,SLCK,PAUS,     CAPS,F11, F12, F13,
+    ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,BSPC,   HOME,INS, DEL,      NLCK,PSLS,PAST,PMNS,
+    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     ENT,    PGDN,PGUP,END,      P7,  P8,  P9,  PPLS,
+    LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,F18,                   UP,            P4,  P5,  P6,  PEQL,
     LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,GRV,                   LEFT,DOWN,RGHT,     P1,  P2,  P3,  PENT,
-         LGUI,LALT,NO,       SPC,      RALT,RGUI,RCTL,APP,                        NO,       NO,       P0,  PCMM,PDOT
+         F19, LGUI,LALT,     SPC,      RALT,RGUI,RCTL,APP,                        F14,      F15,      P0,  PCMM,PDOT
+    ),
+    /* JIS */
+    KEYMAP(
+    F16, F17,     F1,  F2,  F3,  F4,  F5,   F6,  F7,  F8,  F9,  F10,              PSCR,SLCK,PAUS,     CAPS,F11, F12, F13,
+    ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,   HOME,INS, DEL,      NLCK,PSLS,PAST,PMNS,
+    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     ENT,    PGDN,PGUP,END,      P7,  P8,  P9,  PPLS,
+    LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NUHS,                  UP,            P4,  P5,  P6,  PEQL,
+    LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RO,                    LEFT,DOWN,RGHT,     P1,  P2,  P3,  PENT,
+         LGUI,LALT,MHEN,     SPC,      HENK,KANA,APP, ZKHK,                       F14,      F15,      P0,  PCMM,PDOT
     ),
 };
 
index 40156cf4accf1f604628652dbb22a0561f48c0bd..ccc38699c76bcffdfe31c42cc31c981a679aefc2 100644 (file)
@@ -16,11 +16,28 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "stdint.h"
-#include "x68k.h"
+#include "serial.h"
 #include "led.h"
+#include "debug.h"
 
 
 void led_set(uint8_t usb_led)
 {
-    // not supported now
+    /* X68000 LED bits 0: on, 1: off
+     * bit 7   1(fixed)
+     * bit 6   全角
+     * bit 5   ひらがな
+     * bit 4   INS
+     * bit 3   CAPS
+     * bit 2   コード入力
+     * bit 1   ローマ字
+     * bit 0   かな
+     */
+    uint8_t led = 0xFF;
+    if (usb_led&(1<<USB_LED_NUM_LOCK))      led &= ~(1<<2);
+    if (usb_led&(1<<USB_LED_CAPS_LOCK))     led &= ~(1<<3);
+    if (usb_led&(1<<USB_LED_SCROLL_LOCK))   led &= ~(1<<1);
+    if (usb_led&(1<<USB_LED_COMPOSE))       led &= ~(1<<4);
+    if (usb_led&(1<<USB_LED_KANA))          led &= ~(1<<0);
+    serial_send(led);
 }
index 954e7ef12921366fb535eb0bc7817e8f18f8e9be..2d5a1e1169d3b38ef1d7af4c91c614fd295b8920 100644 (file)
@@ -21,8 +21,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <util/delay.h>
 #include "print.h"
 #include "util.h"
-#include "x68k.h"
+#include "serial.h"
 #include "matrix.h"
+#include "debug.h"
 
 
 /*
@@ -63,7 +64,7 @@ uint8_t matrix_cols(void)
 
 void matrix_init(void)
 {
-    x68k_init();
+    serial_init();
 
     // initialize matrix state: all keys off
     for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
@@ -75,13 +76,13 @@ uint8_t matrix_scan(void)
 {
     is_modified = false;
 
-    uint8_t code;
-    code = x68k_recv();
-    if (code == 0) {
+    uint16_t code;
+    code = serial_recv2();
+    if (code == -1) {
         return 0;
     }
 
-    phex(code); print(" ");
+    dprintf("%02X\n", code);
     if (code&0x80) {
         // break code
         if (matrix_is_on(ROW(code), COL(code))) {
diff --git a/protocol/x68k.c b/protocol/x68k.c
deleted file mode 100644 (file)
index d17af51..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2012 Jun WAKO <wakojun@gmail.com>
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in
-  the documentation and/or other materials provided with the
-  distribution.
-
-* Neither the name of the copyright holders nor the names of
-  contributors may be used to endorse or promote products derived
-  from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include "x68k.h"
-
-
-void x68k_init(void)
-{
-    KBD_RX_INIT();
-}
-
-// RX ring buffer
-#define RBUF_SIZE   8
-static uint8_t rbuf[RBUF_SIZE];
-static uint8_t rbuf_head = 0;
-static uint8_t rbuf_tail = 0;
-
-uint8_t x68k_recv(void)
-{
-    uint8_t data = 0;
-    if (rbuf_head == rbuf_tail) {
-        return 0;
-    }
-
-    data = rbuf[rbuf_tail];
-    rbuf_tail = (rbuf_tail + 1) % RBUF_SIZE;
-    return data;
-}
-
-// USART RX complete interrupt
-ISR(KBD_RX_VECT)
-{
-    uint8_t next = (rbuf_head + 1) % RBUF_SIZE;
-    if (next != rbuf_tail) {
-        rbuf[rbuf_head] = KBD_RX_DATA;
-        rbuf_head = next;
-    }
-}
diff --git a/protocol/x68k.h b/protocol/x68k.h
deleted file mode 100644 (file)
index 2cfda63..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright 2012 Jun WAKO <wakojun@gmail.com>
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in
-  the documentation and/or other materials provided with the
-  distribution.
-
-* Neither the name of the copyright holders nor the names of
-  contributors may be used to endorse or promote products derived
-  from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef X68K_H
-#define X68K_H
-
-/* host role */
-void x68k_init(void);
-uint8_t x68k_recv(void);
-
-/* device role */
-
-#endif