Add keymap for PC98
This commit is contained in:
		
							parent
							
								
									eb776c1b79
								
							
						
					
					
						commit
						4a91d18277
					
				
					 3 changed files with 125 additions and 144 deletions
				
			
		|  | @ -19,7 +19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| #define CONFIG_H | ||||
| 
 | ||||
| #define VENDOR_ID       0xFEED | ||||
| #define PRODUCT_ID      0x3333 | ||||
| #define PRODUCT_ID      0x9898 | ||||
| #define DEVICE_VER      0x0100 | ||||
| #define MANUFACTURER    t.m.k. | ||||
| #define PRODUCT         PC98 keyboard converter | ||||
|  | @ -38,36 +38,40 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||||
| ) | ||||
| 
 | ||||
| /* PC98 control */ | ||||
| #define PC98_RST_DDR    DDRD | ||||
| #define PC98_RST_PORT   PORTD | ||||
| #define PC98_RST_BIT    1 | ||||
| #define PC98_RDY_DDR    DDRD | ||||
| #define PC98_RDY_PORT   PORTD | ||||
| #define PC98_RDY_BIT    4 | ||||
| #define PC98_RTY_DDR    DDRD | ||||
| #define PC98_RTY_PORT   PORTD | ||||
| #define PC98_RTY_BIT    5 | ||||
| 
 | ||||
| /* Serial(USART) configuration
 | ||||
|  *     asynchronous, negative logic, 19200baud, no flow control | ||||
| /* PC98 Serial(USART) configuration
 | ||||
|  *     asynchronous, positive logic, 19200baud, bit order: LSB first | ||||
|  *     1-start bit, 8-data bit, odd parity, 1-stop bit | ||||
|  */ | ||||
| #define SERIAL_BAUD 19200 | ||||
| #define SERIAL_PARITY_ODD | ||||
| #define SERIAL_BIT_ORDER_LSB | ||||
| 
 | ||||
| /* PC98 Reset Port */ | ||||
| #define PC98_RST_DDR    DDRD | ||||
| #define PC98_RST_PORT   PORTD | ||||
| #define PC98_RST_BIT    1 | ||||
| /* PC98 Ready Port */ | ||||
| #define PC98_RDY_DDR    DDRD | ||||
| #define PC98_RDY_PORT   PORTD | ||||
| #define PC98_RDY_BIT    4 | ||||
| /* PC98 Retry Port */ | ||||
| #define PC98_RTY_DDR    DDRD | ||||
| #define PC98_RTY_PORT   PORTD | ||||
| #define PC98_RTY_BIT    5 | ||||
| 
 | ||||
| /* RXD Port */ | ||||
| #define SERIAL_RXD_DDR  DDRD | ||||
| #define SERIAL_RXD_PORT PORTD | ||||
| #define SERIAL_RXD_PIN  PIND | ||||
| #define SERIAL_RXD_BIT  2 | ||||
| #define SERIAL_RXD_READ()       (SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT)) | ||||
| /* RXD Interupt */ | ||||
| #define SERIAL_RXD_VECT INT2_vect | ||||
| #define SERIAL_RXD_INIT()  do { \ | ||||
|     /* pin configuration: input with pull-up */ \ | ||||
|     SERIAL_RXD_DDR &= ~(1<<SERIAL_RXD_BIT);     \ | ||||
|     SERIAL_RXD_PORT |= (1<<SERIAL_RXD_BIT);     \ | ||||
|     /* enable interrupt: INT2(rising edge) */   \ | ||||
|     /*EICRA |= ((1<<ISC21)|(1<<ISC20));*/           \ | ||||
|     /* enable interrupt: INT2(falling edge) */  \ | ||||
|     EICRA |= ((1<<ISC21)|(0<<ISC20));           \ | ||||
|     EIMSK |= (1<<INT2);                         \ | ||||
|  | @ -77,9 +81,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|     /* clear interrupt  flag */     \ | ||||
|     EIFR = (1<<INTF2);              \ | ||||
| } while (0) | ||||
| //#define SERIAL_RXD_READ()    (~SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT))
 | ||||
| #define SERIAL_RXD_READ()    ((SERIAL_RXD_PIN&(1<<SERIAL_RXD_BIT))) | ||||
| 
 | ||||
| /* TXD Port: Not used */ | ||||
| #define SERIAL_TXD_DDR  DDRD | ||||
| #define SERIAL_TXD_PORT PORTD | ||||
| #define SERIAL_TXD_PIN  PIND | ||||
|  |  | |||
|  | @ -25,65 +25,50 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* Sun type 5 keyboard
 | ||||
| ,-------.  ,---,  ,---------------. ,---------------. ,---------------.   ,-----------. ,---------------. | ||||
| |   76  |  |   |  | 05| 06| 08| 0A| | 0C| 0E| 10| 11| | 12| 07| 09| 0B|   | 16| 17| 15| | 2D| 02| 04| 30| | ||||
| `-------'  `---'  `---------------' `---------------' `---------------'   `-----------' `---------------' | ||||
| ,-------.  ,-----------------------------------------------------------.  ,-----------. ,---------------. | ||||
| | 01| 03|  | 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 58| 2A|  | 2C| 34| 60| | 62| 2E| 2F| 47| | ||||
| |-------|  |-----------------------------------------------------------|  |------------ |---------------| | ||||
| | 19| 1A|  |  35 | 36| 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 2B  |  | 42| 4A| 7B| | 44| 45| 46|   | | ||||
| |-------|  |-----------------------------------------------------------|  `-----------' |-----------| 7D| | ||||
| | 31| 33|  |  4C  | 4D| 4E| 4F| 50| 51| 52| 53| 54| 55| 56| 57|   59   |                | 5B| 5C| 5D|   | | ||||
| |-------|  |-----------------------------------------------------------|      ,---.     |-----------|---| | ||||
| | 48| 49|  |   63   | 64| 65| 66| 67| 68| 69| 6A| 6B| 6C| 6D|    6E    |      | 14|     | 70| 71| 72|   | | ||||
| |-------|  |-----------------------------------------------------------|  .-----------. |-----------| 5A| | ||||
| | 5F| 61|  | 77 | 13| 78 |*73 |       79         |*74 |*75| 7A | 43| 0D|  | 18| 1B| 1C| |   5E  | 32|   | | ||||
| `-------'  `-----------------------------------------------------------'  `-----------' `---------------' | ||||
| /* PC-9801-98-S02   Raku Raku keyboard(Luckyboard) Normal Mode
 | ||||
|   ,---------------------------------------------------------------. | ||||
|   | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E| | ||||
|   `---------------------------------------------------------------' | ||||
|   ,---------------------------------------------------------------. | ||||
|   |    00| 01| 02| 03| 04| 05|  58|  71| 06| 07| 08| 09| 0A|    0E| | ||||
|   |---------------------------------------------------------------| | ||||
|   |   0F| 10| 11| 12| 13| 14|    3A     | 15| 16| 17| 18| 19|   1C| | ||||
|   |---------------------------------------------------------------| | ||||
|   |  74| 20| 21| 22| 23| 24|  3B  |  3C  | 25| 26| 27| 28| 29|    | | ||||
|   |---------------------------------------------------------------| | ||||
|   | 70| 2A| 2B| 2C| 2D| 2E| 38|  3D   | 39| 2F| 30| 31| 32| 33| 70| | ||||
|   `---------------------------------------------------------------' | ||||
|           | 73|   51|   5B|   59|       34|   5A|   35| xx| | ||||
|           `-----------------------------------------------' | ||||
|   xx: 74 35 F4 B5 | ||||
| */ | ||||
| #define KEYMAP( \ | ||||
|       K76,        K05,K06,K08,K0A,    K0C,K0E,K10,K11,    K12,K07,K09,K0B,  K16,K17,K15,  K2D,K02,K04,K30, \ | ||||
|     K01,K03,  K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A,  K2C,K34,K60,  K62,K2E,K2F,K47, \ | ||||
|     K19,K1A,  K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,   K2B,  K42,K4A,K7B,  K44,K45,K46,K7D, \ | ||||
|     K31,K33,  K4C,  K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,      K59,                K5B,K5C,K5D,     \ | ||||
|     K48,K49,  K63,   K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,         K6E,      K14,      K70,K71,K72,K5A, \ | ||||
|     K5F,K61,  K77,K13, K78, K73,        K79,      K74, K75, K7A, K43, K0D,  K18,K1B,K1C,  K5E,    K32      \ | ||||
|     K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \ | ||||
|       K00,  K01, K02, K03, K04, K05,  K58, K71,   K06, K07, K08, K09, K0A,    K0E,  \ | ||||
|       K0F,  K10, K11, K12, K13, K14,     K3A,     K15, K16, K17, K18, K19,    K1C,  \ | ||||
|       K74, K20, K21, K22, K23, K24,   K3B,  K3C,   K25, K26, K27, K28, K29,         \ | ||||
|       K70,K2A, K2B, K2C, K2D, K2E, K38,  K3D,  K39, K2F, K30, K31, K32, K33,        \ | ||||
|                K73,  K51, K5B, K59,        K34,        K5A,  K35                    \ | ||||
| ) { \ | ||||
|     { KC_NO,    KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ | ||||
|     { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_NO,   }, \ | ||||
|     { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ | ||||
|     { KC_##K08, KC_##K09, KC_##K0A, KC_NO,    KC_NO,    KC_NO,    KC_##K0E, KC_##K0F }, \ | ||||
|     { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ | ||||
|     { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ | ||||
|     { KC_##K18, KC_##K19, KC_NO,    KC_NO,    KC_##K1C, KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ | ||||
|     { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ | ||||
|     { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ | ||||
|     { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ | ||||
|     { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ | ||||
|     { KC_##K48, KC_##K49, KC_##K4A, KC_NO,    KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ | ||||
|     { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ | ||||
|     { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_##K51, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_##K5A, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ | ||||
|     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_NO    }, \ | ||||
|     { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ | ||||
|     { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_NO,    KC_##K7D, KC_NO,    KC_NO    }  \ | ||||
|     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_##K70, KC_NO,    KC_NO,    KC_##K73, KC_##K74, KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }  \ | ||||
| } | ||||
| 
 | ||||
| /* CTCSP SHORT TYPE KEYBOARD */ | ||||
| #define SHORT_TYPE( \ | ||||
|     K01, K05,K06,K08,K0A,K0C,K0E, K61,K49,K33, K30, K2C,K34,K60, \ | ||||
|          K10,K11,K12,K07,K09,K0B,                   K42,K4A,K7B, \ | ||||
|     K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, \ | ||||
|     K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,   K2B, \ | ||||
|     K4C,  K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,      K59, \ | ||||
|     K63,   K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K0D,K14,K6E, \ | ||||
|     K77,K13, K78,             K79,      K7A,K43,K62,K18,K1B,K1C  \ | ||||
| ) KEYMAP( \ | ||||
|          HELP,           K05,K06,K08,K0A,    K0C,K0E,K10,K11,    K12,K07,K09,K0B,  PSCR,SLCK,PAUS,  MUTE,VOLD,VOLU,PWR,  \ | ||||
|     K01,    AGAIN,   K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A,  K2C, K34, K60,   K62, PSLS,PAST,PMNS, \ | ||||
|     MENU,   UNDO,    K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,   K2B,  K42, K4A, K7B,   P7,  P8, P9,  PPLS,  \ | ||||
|     SELECT, COPY,    K4C,  K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,      K59,                   P4,  P5, P6,         \ | ||||
|     EXECUTE,PASTE,   K63,   K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,         K6E,       K14,        P1,  P2, P3,  PENT,  \ | ||||
|     FIND,   CUT,     K77,K13, K78, HENK,       K79,      MHEN, KANA, K7A,K43,K0D,  K18, K1B, K1C,   P0,      PDOT        \ | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // 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[] = { | |||
| 
 | ||||
| 
 | ||||
| static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
| /*
 | ||||
|     /*
 | ||||
|   ,---------------------------------------------------------------. | ||||
|   | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E| | ||||
|   `---------------------------------------------------------------' | ||||
|   ,---------------------------------------------------------------. | ||||
|   |    00| 01| 02| 03| 04| 05|  58|  71| 06| 07| 08| 09| 0A|    0E| | ||||
|   |---------------------------------------------------------------| | ||||
|   |   0F| 10| 11| 12| 13| 14|    3A     | 15| 16| 17| 18| 19|   1C| | ||||
|   |---------------------------------------------------------------| | ||||
|   |  74| 20| 21| 22| 23| 24|  MINS|   EQL| 25| 26| 27| 28| 29|    | | ||||
|   |---------------------------------------------------------------| | ||||
|   | 70| 2A| 2B| 2C| 2D| 2E| 38|  3D   | 39| 2F| 30| 31| 32| 33| 70| | ||||
|   `---------------------------------------------------------------' | ||||
|           | 73|   51|   5B|   59|       34|   5A|   35| xx| | ||||
|           `-----------------------------------------------' | ||||
|     */ | ||||
|     KEYMAP( | ||||
|          HELP,       F1, F2, F3, F4,         F5, F6, F7, F8,         F9, F10,F11,F12,   PSCR,SLCK,PAUS,  MUTE,VOLD,VOLU,PWR, | ||||
|     STOP,   AGAIN,   ESC,1,  2,  3,  4,  5,  6,  7,  8,  9,  0,   MINS,EQL, BSLS,GRV,   INS, HOME,PGUP,  NLCK,PSLS,PAST,PMNS, | ||||
|     MENU,   UNDO,    TAB, Q,  W,  E,  R,  T,  Y,  U,  I,  O,  P,   LBRC,RBRC,    BSPC,  DEL, END, PGDN,  P7,  P8, P9,  PPLS, | ||||
|     SELECT, COPY,    LCTL, A,  S,  D,  F,  G,  H,  J,  K,  L,  SCLN,QUOT,        ENT,                    P4,  P5, P6, | ||||
|     EXECUTE,PASTE,   LSFT,  Z,  X,  C,  V,  B,  N,  M,  COMM,DOT,SLSH,           RSFT,       UP,         P1,  P2, P3,  PENT, | ||||
|     FIND,   CUT,     CAPS, LALT, LGUI,HENK,  SPC,            MHEN,KANA,RGUI,APP, RALT,  LEFT,DOWN,RGHT,  P0,      PDOT | ||||
|     ), | ||||
| */ | ||||
|     // 0: default
 | ||||
|     SHORT_TYPE( | ||||
|         STOP, F1,F2,F3,F4, F5, F6,   CUT,PASTE,COPY,PWR,    INS, HOME,PGUP, | ||||
|               F7,F8,F9,F10,F11,F12,                         DEL, END, PGDN, | ||||
|         ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, | ||||
|         TAB,  Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,    BSPC, | ||||
|         LCTL,  A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,        ENT, | ||||
|         LSFT,   Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,  RALT,UP,  RSFT, | ||||
|         CAPS,LALT,LGUI,            SPC,              RGUI,APP, NLCK,LEFT,DOWN,RGHT | ||||
|     ), | ||||
|     // 1: with layer keys
 | ||||
|     SHORT_TYPE( | ||||
|         ESC,  F1,F2,F3,F4, F5, F6,   CUT,PASTE,COPY,PWR,    INS, HOME,PGUP, | ||||
|               F7,F8,F9,F10,F11,F12,                         DEL, END, PGDN, | ||||
|         ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, | ||||
|         TAB,  Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,    BSPC, | ||||
|         LCTL,  A,   S,   D,   F,   G,   H,   J,   K,   L,   FN1, QUOT,        ENT, | ||||
|         LSFT,   Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2,   RSFT,UP,  FN0, | ||||
|         CAPS,LALT,LGUI,            SPC,              RGUI,RALT,FN0, LEFT,DOWN,RGHT | ||||
|     ), | ||||
|     // 2: HHKB
 | ||||
|     SHORT_TYPE( | ||||
|         ESC,  F1,F2,F3,F4, F5, F6,   CUT,PASTE,COPY,PWR,    INS, HOME,PGUP, | ||||
|               F7,F8,F9,F10,F11,F12,                         DEL, END, PGDN, | ||||
|         GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, | ||||
|         CAPS, NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,      BSPC, | ||||
|         LCTL,  VOLD,VOLU,MUTE,NO,  NO,  NO,  NO,  HOME,PGUP,LEFT,RGHT,        ENT, | ||||
|         LSFT,   Z,   X,   C,   V,   B,   NO,  NO,  END, PGDN,DOWN,  RSFT,PGUP,FN0, | ||||
|         CAPS,LALT,LGUI,            SPC,              RGUI,RALT,FN0, HOME,PGDN,END | ||||
|     ), | ||||
|     // 3: Mousekey
 | ||||
|     SHORT_TYPE( | ||||
|         ESC,  F1,F2,F3,F4, F5, F6,   CUT,PASTE,COPY,PWR,    INS, HOME,PGUP, | ||||
|               F7,F8,F9,F10,F11,F12,                         DEL, END, PGDN, | ||||
|         GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, | ||||
|         CAPS, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,WH_U,WH_R,NO,  NO,  NO,      BSPC, | ||||
|         LCTL,  NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,FN1, NO,          ENT, | ||||
|         LSFT,   NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,NO,  NO,  NO,    RSFT,UP,  NO, | ||||
|         CAPS,LALT,LGUI,            BTN1,             RGUI,RALT,NO,  LEFT,DOWN,RGHT | ||||
|     ), | ||||
|     // 4: Cursor
 | ||||
|     SHORT_TYPE( | ||||
|         ESC,  F1,F2,F3,F4, F5, F6,   CUT,PASTE,COPY,PWR,    INS, HOME,PGUP, | ||||
|               F7,F8,F9,F10,F11,F12,                         DEL, END, PGDN, | ||||
|         GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, | ||||
|         CAPS, NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, NO,  NO,  NO,      BSPC, | ||||
|         LCTL,  NO,  NO,  NO,  NO,  NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,          ENT, | ||||
|         LSFT,   NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2,   RSFT,UP,  NO, | ||||
|         CAPS,LALT,LGUI,            BTN1,             RGUI,RALT,NO,  LEFT,DOWN,RGHT | ||||
|     PAUS,COPY,  F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9, F10, F11, F12, F13, F14, | ||||
|       ESC,    1,   2,   3,   4,   5,    NO, NO,     6,   7,   8,   9,   0,   BSPC, | ||||
|       TAB,    Q,   W,   E,   R,   T,      UP,       Y,   U,   I,   O,   P,   ENT, | ||||
|       LCTL,  A,   S,   D,   F,   G,  MINS,  EQL,     H,   J,   K,   L,SCLN, | ||||
|       LSFT, Z,   X,   C,   V,   B, INS, DOWN,  DEL,   N,   M,COMM, DOT,SLSH, | ||||
|               LGUI, LALT, LCTL, LSFT,      SPC,      SPC,   RALT | ||||
|     ), | ||||
| }; | ||||
| 
 | ||||
|  | @ -190,3 +139,49 @@ uint8_t keymap_fn_keycode(uint8_t index) | |||
| { | ||||
|     return pgm_read_byte(&fn_keycode[index]); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #if 0 | ||||
| /* PC-9801-98-S02   Raku Raku keyboard(Luckyboard) M-siki mode
 | ||||
|   ,---------------------------------------------------------------. | ||||
|   | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E| | ||||
|   `---------------------------------------------------------------' | ||||
|   ,---------------------------------------------------------------. | ||||
|   |    00| 01| 02| 03| 04| 05| NUM|CAPS| 06| 07| 08| 09| 0A|    0E| | ||||
|   |---------------------------------------------------------------| | ||||
|   |   0F| 10| 25| 20| 23| 2B|    3A     | 2F| 15| 13| 11| 19|   1C| | ||||
|   |---------------------------------------------------------------| | ||||
|   |  74| 12| 16| 17| 1D| 18|  3B  |  3C  | 24| 1E| 14| 2E| 22|    | | ||||
|   |---------------------------------------------------------------| | ||||
|   | 70| xx| 2A| 2C| xx| xx| 38|  3D   | 39| 21| 29| 1F| xx| 2D| 70| | ||||
|   `---------------------------------------------------------------' | ||||
|           | 73|   51|   xx|   xx|       34|   xx|   35| xx| | ||||
|           `-----------------------------------------------' | ||||
| */ | ||||
| 
 | ||||
| #define KEYMAP_M( \ | ||||
|     K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \ | ||||
|       K00,  K01, K02, K03, K04, K05,              K06, K07, K08, K09, K0A,    K0E,  \ | ||||
|       K0F,  K10, K25, K23, K20, K2B,     K3A,     K2F, K15, K13, K11, K19,    K1C,  \ | ||||
|       K74, K12, K16, K17, K1D, K18,   K3B,  K3C,   K24, K1E, K14, K2E, K22,         \ | ||||
|       K70,     K2A, K2C,           K38,  K3D,  K39, K21, K29, K1F,      K2D,        \ | ||||
|                K73,  K51,                  K34,              K35                    \ | ||||
| ) { \ | ||||
|     { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ | ||||
|     { KC_##K08, KC_##K09, KC_##K0A, KC_NO,    KC_NO,    KC_NO,    KC_##K0E, KC_##K0F }, \ | ||||
|     { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ | ||||
|     { KC_##K18, KC_##K19, KC_NO,    KC_NO,    KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ | ||||
|     { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ | ||||
|     { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_##K51, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ | ||||
|     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_##K70, KC_NO,    KC_NO,    KC_##K73, KC_##K74, KC_NO,    KC_NO,    KC_NO    }, \ | ||||
|     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }  \ | ||||
| } | ||||
| #endif | ||||
|  |  | |||
|  | @ -65,6 +65,7 @@ void matrix_init(void) | |||
| { | ||||
|     print_enable = true; | ||||
|     debug_enable = true; | ||||
|     //debug_matrix = true;
 | ||||
| 
 | ||||
|     PC98_RST_DDR |= (1<<PC98_RST_BIT); | ||||
|     PC98_RDY_DDR |= (1<<PC98_RDY_BIT); | ||||
|  | @ -99,32 +100,15 @@ uint8_t matrix_scan(void) | |||
| { | ||||
|     is_modified = false; | ||||
| 
 | ||||
|     uint8_t code; | ||||
|     uint16_t code; | ||||
|     PC98_RDY_PORT |= (1<<PC98_RDY_BIT); | ||||
|     _delay_us(30); | ||||
|     code = serial_recv(); | ||||
|     code = serial_recv2(); | ||||
|     PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT); | ||||
|     if (!code) return 0; | ||||
|     if (code == -1) return 0; | ||||
| 
 | ||||
|     debug_hex(code); debug(" "); | ||||
| 
 | ||||
| /*
 | ||||
|     switch (code) { | ||||
|         case 0x7E:  // reset fail
 | ||||
|         case 0xFE:  // layout
 | ||||
|         case 0xFF:  // reset success
 | ||||
|             _delay_ms(500); | ||||
|             // ignore response byte
 | ||||
|             debug("(response ignored:"); | ||||
|             while ((code = serial_recv())) { debug(" "); debug_hex(code); } | ||||
|             debug(") "); | ||||
|             // FALL THROUGH
 | ||||
|         case 0x7F: | ||||
|             // all keys up
 | ||||
|             for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; | ||||
|             return 0; | ||||
|     } | ||||
| 
 | ||||
|     if (code&0x80) { | ||||
|         // break code
 | ||||
|         if (matrix_is_on(ROW(code), COL(code))) { | ||||
|  | @ -138,7 +122,6 @@ uint8_t matrix_scan(void) | |||
|             is_modified = true; | ||||
|         } | ||||
|     } | ||||
| */ | ||||
|     return code; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tmk
						tmk