aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2013-02-22 19:37:27 +0900
committertmk <nobody@nowhere>2013-02-22 19:37:27 +0900
commit4a91d182776a956c5442debbaf7a8af047d429c0 (patch)
treed8c56ca5deac251d1beb6ed3ef8c27f764ea3aa2
parenteb776c1b7918f320b717cedfd8957f55e53c5adf (diff)
downloadqmk_firmware-4a91d182776a956c5442debbaf7a8af047d429c0.tar.gz
qmk_firmware-4a91d182776a956c5442debbaf7a8af047d429c0.zip
Add keymap for PC98
-rw-r--r--converter/pc98_usb/config.h31
-rw-r--r--converter/pc98_usb/keymap.c207
-rw-r--r--converter/pc98_usb/matrix.c25
3 files changed, 122 insertions, 141 deletions
diff --git a/converter/pc98_usb/config.h b/converter/pc98_usb/config.h
index 6f9f8fc3c..6ef2c6ac3 100644
--- a/converter/pc98_usb/config.h
+++ b/converter/pc98_usb/config.h
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
19#define CONFIG_H 19#define CONFIG_H
20 20
21#define VENDOR_ID 0xFEED 21#define VENDOR_ID 0xFEED
22#define PRODUCT_ID 0x3333 22#define PRODUCT_ID 0x9898
23#define DEVICE_VER 0x0100 23#define DEVICE_VER 0x0100
24#define MANUFACTURER t.m.k. 24#define MANUFACTURER t.m.k.
25#define PRODUCT PC98 keyboard converter 25#define PRODUCT PC98 keyboard converter
@@ -38,36 +38,40 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
38 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 38 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
39) 39)
40 40
41/* PC98 control */ 41
42/* PC98 Serial(USART) configuration
43 * asynchronous, positive logic, 19200baud, bit order: LSB first
44 * 1-start bit, 8-data bit, odd parity, 1-stop bit
45 */
46#define SERIAL_BAUD 19200
47#define SERIAL_PARITY_ODD
48#define SERIAL_BIT_ORDER_LSB
49
50/* PC98 Reset Port */
42#define PC98_RST_DDR DDRD 51#define PC98_RST_DDR DDRD
43#define PC98_RST_PORT PORTD 52#define PC98_RST_PORT PORTD
44#define PC98_RST_BIT 1 53#define PC98_RST_BIT 1
54/* PC98 Ready Port */
45#define PC98_RDY_DDR DDRD 55#define PC98_RDY_DDR DDRD
46#define PC98_RDY_PORT PORTD 56#define PC98_RDY_PORT PORTD
47#define PC98_RDY_BIT 4 57#define PC98_RDY_BIT 4
58/* PC98 Retry Port */
48#define PC98_RTY_DDR DDRD 59#define PC98_RTY_DDR DDRD
49#define PC98_RTY_PORT PORTD 60#define PC98_RTY_PORT PORTD
50#define PC98_RTY_BIT 5 61#define PC98_RTY_BIT 5
51 62
52/* Serial(USART) configuration 63/* RXD Port */
53 * asynchronous, negative logic, 19200baud, no flow control
54 * 1-start bit, 8-data bit, odd parity, 1-stop bit
55 */
56#define SERIAL_BAUD 19200
57#define SERIAL_PARITY_ODD
58#define SERIAL_BIT_ORDER_LSB
59
60#define SERIAL_RXD_DDR DDRD 64#define SERIAL_RXD_DDR DDRD
61#define SERIAL_RXD_PORT PORTD 65#define SERIAL_RXD_PORT PORTD
62#define SERIAL_RXD_PIN PIND 66#define SERIAL_RXD_PIN PIND
63#define SERIAL_RXD_BIT 2 67#define SERIAL_RXD_BIT 2
68#define SERIAL_RXD_READ() (SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT))
69/* RXD Interupt */
64#define SERIAL_RXD_VECT INT2_vect 70#define SERIAL_RXD_VECT INT2_vect
65#define SERIAL_RXD_INIT() do { \ 71#define SERIAL_RXD_INIT() do { \
66 /* pin configuration: input with pull-up */ \ 72 /* pin configuration: input with pull-up */ \
67 SERIAL_RXD_DDR &= ~(1<<SERIAL_RXD_BIT); \ 73 SERIAL_RXD_DDR &= ~(1<<SERIAL_RXD_BIT); \
68 SERIAL_RXD_PORT |= (1<<SERIAL_RXD_BIT); \ 74 SERIAL_RXD_PORT |= (1<<SERIAL_RXD_BIT); \
69 /* enable interrupt: INT2(rising edge) */ \
70 /*EICRA |= ((1<<ISC21)|(1<<ISC20));*/ \
71 /* enable interrupt: INT2(falling edge) */ \ 75 /* enable interrupt: INT2(falling edge) */ \
72 EICRA |= ((1<<ISC21)|(0<<ISC20)); \ 76 EICRA |= ((1<<ISC21)|(0<<ISC20)); \
73 EIMSK |= (1<<INT2); \ 77 EIMSK |= (1<<INT2); \
@@ -77,9 +81,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
77 /* clear interrupt flag */ \ 81 /* clear interrupt flag */ \
78 EIFR = (1<<INTF2); \ 82 EIFR = (1<<INTF2); \
79} while (0) 83} while (0)
80//#define SERIAL_RXD_READ() (~SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT))
81#define SERIAL_RXD_READ() ((SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT)))
82 84
85/* TXD Port: Not used */
83#define SERIAL_TXD_DDR DDRD 86#define SERIAL_TXD_DDR DDRD
84#define SERIAL_TXD_PORT PORTD 87#define SERIAL_TXD_PORT PORTD
85#define SERIAL_TXD_PIN PIND 88#define SERIAL_TXD_PIN PIND
diff --git a/converter/pc98_usb/keymap.c b/converter/pc98_usb/keymap.c
index 048a863ca..1e2dd03d5 100644
--- a/converter/pc98_usb/keymap.c
+++ b/converter/pc98_usb/keymap.c
@@ -25,65 +25,50 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25 25
26 26
27 27
28/* Sun type 5 keyboard 28/* PC-9801-98-S02 Raku Raku keyboard(Luckyboard) Normal Mode
29,-------. ,---, ,---------------. ,---------------. ,---------------. ,-----------. ,---------------. 29 ,---------------------------------------------------------------.
30| 76 | | | | 05| 06| 08| 0A| | 0C| 0E| 10| 11| | 12| 07| 09| 0B| | 16| 17| 15| | 2D| 02| 04| 30| 30 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
31`-------' `---' `---------------' `---------------' `---------------' `-----------' `---------------' 31 `---------------------------------------------------------------'
32,-------. ,-----------------------------------------------------------. ,-----------. ,---------------. 32 ,---------------------------------------------------------------.
33| 01| 03| | 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 58| 2A| | 2C| 34| 60| | 62| 2E| 2F| 47| 33 | 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
34|-------| |-----------------------------------------------------------| |------------ |---------------| 34 |---------------------------------------------------------------|
35| 19| 1A| | 35 | 36| 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 2B | | 42| 4A| 7B| | 44| 45| 46| | 35 | 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
36|-------| |-----------------------------------------------------------| `-----------' |-----------| 7D| 36 |---------------------------------------------------------------|
37| 31| 33| | 4C | 4D| 4E| 4F| 50| 51| 52| 53| 54| 55| 56| 57| 59 | | 5B| 5C| 5D| | 37 | 74| 20| 21| 22| 23| 24| 3B | 3C | 25| 26| 27| 28| 29| |
38|-------| |-----------------------------------------------------------| ,---. |-----------|---| 38 |---------------------------------------------------------------|
39| 48| 49| | 63 | 64| 65| 66| 67| 68| 69| 6A| 6B| 6C| 6D| 6E | | 14| | 70| 71| 72| | 39 | 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
40|-------| |-----------------------------------------------------------| .-----------. |-----------| 5A| 40 `---------------------------------------------------------------'
41| 5F| 61| | 77 | 13| 78 |*73 | 79 |*74 |*75| 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| | 41 | 73| 51| 5B| 59| 34| 5A| 35| xx|
42`-------' `-----------------------------------------------------------' `-----------' `---------------' 42 `-----------------------------------------------'
43 xx: 74 35 F4 B5
43*/ 44*/
44#define KEYMAP( \ 45#define KEYMAP( \
45 K76, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \ 46 K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \
46 K01,K03, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C,K34,K60, K62,K2E,K2F,K47, \ 47 K00, K01, K02, K03, K04, K05, K58, K71, K06, K07, K08, K09, K0A, K0E, \
47 K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42,K4A,K7B, K44,K45,K46,K7D, \ 48 K0F, K10, K11, K12, K13, K14, K3A, K15, K16, K17, K18, K19, K1C, \
48 K31,K33, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \ 49 K74, K20, K21, K22, K23, K24, K3B, K3C, K25, K26, K27, K28, K29, \
49 K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \ 50 K70,K2A, K2B, K2C, K2D, K2E, K38, K3D, K39, K2F, K30, K31, K32, K33, \
50 K5F,K61, K77,K13, K78, K73, K79, K74, K75, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \ 51 K73, K51, K5B, K59, K34, K5A, K35 \
51) { \ 52) { \
52 { KC_NO, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ 53 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
53 { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_NO, }, \ 54 { KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_NO, KC_NO, KC_##K0E, KC_##K0F }, \
54 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ 55 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
55 { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ 56 { KC_##K18, KC_##K19, KC_NO, KC_NO, KC_##K1C, KC_NO, KC_NO, KC_NO }, \
56 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ 57 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
57 { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ 58 { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
58 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ 59 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
59 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ 60 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
60 { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ 61 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
61 { KC_##K48, KC_##K49, KC_##K4A, KC_NO, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ 62 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
62 { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ 63 { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
63 { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \ 64 { KC_NO, KC_NO, KC_##K5A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
64 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ 65 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
65 { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_NO }, \ 66 { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \
66 { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ 67 { KC_##K70, KC_NO, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \
67 { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_NO, KC_##K7D, KC_NO, KC_NO } \ 68 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
68} 69}
69 70
70/* CTCSP SHORT TYPE KEYBOARD */ 71
71#define SHORT_TYPE( \
72 K01, K05,K06,K08,K0A,K0C,K0E, K61,K49,K33, K30, K2C,K34,K60, \
73 K10,K11,K12,K07,K09,K0B, K42,K4A,K7B, \
74 K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, \
75 K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, \
76 K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, \
77 K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K0D,K14,K6E, \
78 K77,K13, K78, K79, K7A,K43,K62,K18,K1B,K1C \
79) KEYMAP( \
80 HELP, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, PSCR,SLCK,PAUS, MUTE,VOLD,VOLU,PWR, \
81 K01, AGAIN, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C, K34, K60, K62, PSLS,PAST,PMNS, \
82 MENU, UNDO, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42, K4A, K7B, P7, P8, P9, PPLS, \
83 SELECT, COPY, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, P4, P5, P6, \
84 EXECUTE,PASTE, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, P1, P2, P3, PENT, \
85 FIND, CUT, K77,K13, K78, HENK, K79, MHEN, KANA, K7A,K43,K0D, K18, K1B, K1C, P0, PDOT \
86)
87 72
88 73
89// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. 74// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
@@ -113,65 +98,29 @@ static const uint8_t PROGMEM fn_keycode[] = {
113 98
114 99
115static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 100static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
116/* 101 /*
102 ,---------------------------------------------------------------.
103 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
104 `---------------------------------------------------------------'
105 ,---------------------------------------------------------------.
106 | 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
107 |---------------------------------------------------------------|
108 | 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
109 |---------------------------------------------------------------|
110 | 74| 20| 21| 22| 23| 24| MINS| EQL| 25| 26| 27| 28| 29| |
111 |---------------------------------------------------------------|
112 | 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
113 `---------------------------------------------------------------'
114 | 73| 51| 5B| 59| 34| 5A| 35| xx|
115 `-----------------------------------------------'
116 */
117 KEYMAP( 117 KEYMAP(
118 HELP, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10,F11,F12, PSCR,SLCK,PAUS, MUTE,VOLD,VOLU,PWR, 118 PAUS,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14,
119 STOP, AGAIN, ESC,1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, 119 ESC, 1, 2, 3, 4, 5, NO, NO, 6, 7, 8, 9, 0, BSPC,
120 MENU, UNDO, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSPC, DEL, END, PGDN, P7, P8, P9, PPLS, 120 TAB, Q, W, E, R, T, UP, Y, U, I, O, P, ENT,
121 SELECT, COPY, LCTL, A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, 121 LCTL, A, S, D, F, G, MINS, EQL, H, J, K, L,SCLN,
122 EXECUTE,PASTE, LSFT, Z, X, C, V, B, N, M, COMM,DOT,SLSH, RSFT, UP, P1, P2, P3, PENT, 122 LSFT, Z, X, C, V, B, INS, DOWN, DEL, N, M,COMM, DOT,SLSH,
123 FIND, CUT, CAPS, LALT, LGUI,HENK, SPC, MHEN,KANA,RGUI,APP, RALT, LEFT,DOWN,RGHT, P0, PDOT 123 LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT
124 ),
125*/
126 // 0: default
127 SHORT_TYPE(
128 STOP, F1,F2,F3,F4, F5, F6, CUT,PASTE,COPY,PWR, INS, HOME,PGUP,
129 F7,F8,F9,F10,F11,F12, DEL, END, PGDN,
130 ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV,
131 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSPC,
132 LCTL, A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT,
133 LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH, RALT,UP, RSFT,
134 CAPS,LALT,LGUI, SPC, RGUI,APP, NLCK,LEFT,DOWN,RGHT
135 ),
136 // 1: with layer keys
137 SHORT_TYPE(
138 ESC, F1,F2,F3,F4, F5, F6, CUT,PASTE,COPY,PWR, INS, HOME,PGUP,
139 F7,F8,F9,F10,F11,F12, DEL, END, PGDN,
140 ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV,
141 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSPC,
142 LCTL, A, S, D, F, G, H, J, K, L, FN1, QUOT, ENT,
143 LSFT, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,UP, FN0,
144 CAPS,LALT,LGUI, SPC, RGUI,RALT,FN0, LEFT,DOWN,RGHT
145 ),
146 // 2: HHKB
147 SHORT_TYPE(
148 ESC, F1,F2,F3,F4, F5, F6, CUT,PASTE,COPY,PWR, INS, HOME,PGUP,
149 F7,F8,F9,F10,F11,F12, DEL, END, PGDN,
150 GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
151 CAPS, NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, BSPC,
152 LCTL, VOLD,VOLU,MUTE,NO, NO, NO, NO, HOME,PGUP,LEFT,RGHT, ENT,
153 LSFT, Z, X, C, V, B, NO, NO, END, PGDN,DOWN, RSFT,PGUP,FN0,
154 CAPS,LALT,LGUI, SPC, RGUI,RALT,FN0, HOME,PGDN,END
155 ),
156 // 3: Mousekey
157 SHORT_TYPE(
158 ESC, F1,F2,F3,F4, F5, F6, CUT,PASTE,COPY,PWR, INS, HOME,PGUP,
159 F7,F8,F9,F10,F11,F12, DEL, END, PGDN,
160 GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
161 CAPS, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,NO, NO, NO, BSPC,
162 LCTL, NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,FN1, NO, ENT,
163 LSFT, NO, NO, NO, NO, BTN3,BTN2,BTN1,NO, NO, NO, RSFT,UP, NO,
164 CAPS,LALT,LGUI, BTN1, RGUI,RALT,NO, LEFT,DOWN,RGHT
165 ),
166 // 4: Cursor
167 SHORT_TYPE(
168 ESC, F1,F2,F3,F4, F5, F6, CUT,PASTE,COPY,PWR, INS, HOME,PGUP,
169 F7,F8,F9,F10,F11,F12, DEL, END, PGDN,
170 GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
171 CAPS, NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC,
172 LCTL, NO, NO, NO, NO, NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT,
173 LSFT, NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,UP, NO,
174 CAPS,LALT,LGUI, BTN1, RGUI,RALT,NO, LEFT,DOWN,RGHT
175 ), 124 ),
176}; 125};
177 126
@@ -190,3 +139,49 @@ uint8_t keymap_fn_keycode(uint8_t index)
190{ 139{
191 return pgm_read_byte(&fn_keycode[index]); 140 return pgm_read_byte(&fn_keycode[index]);
192} 141}
142
143
144#if 0
145/* PC-9801-98-S02 Raku Raku keyboard(Luckyboard) M-siki mode
146 ,---------------------------------------------------------------.
147 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
148 `---------------------------------------------------------------'
149 ,---------------------------------------------------------------.
150 | 00| 01| 02| 03| 04| 05| NUM|CAPS| 06| 07| 08| 09| 0A| 0E|
151 |---------------------------------------------------------------|
152 | 0F| 10| 25| 20| 23| 2B| 3A | 2F| 15| 13| 11| 19| 1C|
153 |---------------------------------------------------------------|
154 | 74| 12| 16| 17| 1D| 18| 3B | 3C | 24| 1E| 14| 2E| 22| |
155 |---------------------------------------------------------------|
156 | 70| xx| 2A| 2C| xx| xx| 38| 3D | 39| 21| 29| 1F| xx| 2D| 70|
157 `---------------------------------------------------------------'
158 | 73| 51| xx| xx| 34| xx| 35| xx|
159 `-----------------------------------------------'
160*/
161
162#define KEYMAP_M( \
163 K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \
164 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0E, \
165 K0F, K10, K25, K23, K20, K2B, K3A, K2F, K15, K13, K11, K19, K1C, \
166 K74, K12, K16, K17, K1D, K18, K3B, K3C, K24, K1E, K14, K2E, K22, \
167 K70, K2A, K2C, K38, K3D, K39, K21, K29, K1F, K2D, \
168 K73, K51, K34, K35 \
169) { \
170 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
171 { KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_NO, KC_NO, KC_##K0E, KC_##K0F }, \
172 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
173 { KC_##K18, KC_##K19, KC_NO, KC_NO, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
174 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO, KC_NO }, \
175 { KC_NO, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
176 { KC_NO, KC_NO, KC_NO, KC_NO, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
177 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
178 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
179 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
180 { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
181 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
182 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
183 { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \
184 { KC_##K70, KC_NO, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \
185 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
186}
187#endif
diff --git a/converter/pc98_usb/matrix.c b/converter/pc98_usb/matrix.c
index ef2bc3818..2f1e821c5 100644
--- a/converter/pc98_usb/matrix.c
+++ b/converter/pc98_usb/matrix.c
@@ -65,6 +65,7 @@ void matrix_init(void)
65{ 65{
66 print_enable = true; 66 print_enable = true;
67 debug_enable = true; 67 debug_enable = true;
68 //debug_matrix = true;
68 69
69 PC98_RST_DDR |= (1<<PC98_RST_BIT); 70 PC98_RST_DDR |= (1<<PC98_RST_BIT);
70 PC98_RDY_DDR |= (1<<PC98_RDY_BIT); 71 PC98_RDY_DDR |= (1<<PC98_RDY_BIT);
@@ -99,32 +100,15 @@ uint8_t matrix_scan(void)
99{ 100{
100 is_modified = false; 101 is_modified = false;
101 102
102 uint8_t code; 103 uint16_t code;
103 PC98_RDY_PORT |= (1<<PC98_RDY_BIT); 104 PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
104 _delay_us(30); 105 _delay_us(30);
105 code = serial_recv(); 106 code = serial_recv2();
106 PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT); 107 PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
107 if (!code) return 0; 108 if (code == -1) return 0;
108 109
109 debug_hex(code); debug(" "); 110 debug_hex(code); debug(" ");
110 111
111/*
112 switch (code) {
113 case 0x7E: // reset fail
114 case 0xFE: // layout
115 case 0xFF: // reset success
116 _delay_ms(500);
117 // ignore response byte
118 debug("(response ignored:");
119 while ((code = serial_recv())) { debug(" "); debug_hex(code); }
120 debug(") ");
121 // FALL THROUGH
122 case 0x7F:
123 // all keys up
124 for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
125 return 0;
126 }
127
128 if (code&0x80) { 112 if (code&0x80) {
129 // break code 113 // break code
130 if (matrix_is_on(ROW(code), COL(code))) { 114 if (matrix_is_on(ROW(code), COL(code))) {
@@ -138,7 +122,6 @@ uint8_t matrix_scan(void)
138 is_modified = true; 122 is_modified = true;
139 } 123 }
140 } 124 }
141*/
142 return code; 125 return code;
143} 126}
144 127