|
|
| version 1.3, 2005/02/04 06:42:07 | version 1.4, 2008/06/02 20:07:30 |
|---|---|
| Line 5 | Line 5 |
| #include "keystat.tbl" | #include "keystat.tbl" |
| // キーコードがないので PC-98シリーズのキーコードをベースとする | /* キーコードがないので PC-98シリーズのキーコードをベースとする */ |
| // … つまり猫のがそのまま使える | /* … つまり猫のがそのまま使える */ |
| KEYSTAT keystat; | KEYSTAT keystat; |
| Line 60 UINT keystat_getflag(void) { | Line 60 UINT keystat_getflag(void) { |
| kc = 0; | kc = 0; |
| if (ks & 0x40) { | if (ks & 0x40) { |
| kf = keyflag[keystat.lastkey]; | kf = keyflag[keystat.lastkey]; |
| ks |= (kf & 0x80); // function | ks |= (kf & 0x80); /* function */ |
| if (ks & 0x04) { // kana | if (ks & 0x04) { /* kana */ |
| if (!(ks & 0x02)) { // shift | if (!(ks & 0x02)) { /* shift */ |
| tbl = 4; | tbl = 4; |
| } | } |
| else { | else { |
| tbl = 5; | tbl = 5; |
| } | } |
| } | } |
| else if (ks & 0x01) { // ctrl | else if (ks & 0x01) { /* ctrl */ |
| tbl = 3; | tbl = 3; |
| } | } |
| else if (ks & 0x10) { // grph | else if (ks & 0x10) { /* grph */ |
| tbl = 2; | tbl = 2; |
| } | } |
| else if (ks & 0x02) { // shift | else if (ks & 0x02) { /* shift */ |
| tbl = 1; | tbl = 1; |
| } | } |
| else { | else { |
| tbl = 0; | tbl = 0; |
| } | } |
| kc = keytbl[tbl][keystat.lastkey]; | kc = keytbl[tbl][keystat.lastkey]; |
| if (ks & 0x08) { // caps | if (ks & 0x08) { /* caps */ |
| if (((kc >= 'A') && (kc <= 'Z')) || | if (((kc >= 'A') && (kc <= 'Z')) || |
| ((kc >= 'a') && (kc <= 'z'))) { | ((kc >= 'a') && (kc <= 'z'))) { |
| kc ^= 0x20; | kc ^= 0x20; |
| Line 103 REG8 keystat_getjoy(void) { | Line 103 REG8 keystat_getjoy(void) { |
| } | } |
| // ---- | /* extension */ |
| void keystat_keydown(REG8 ref) { | void keystat_keydown(REG8 ref) { |
| Line 179 void keystat_allrelease(void) { | Line 179 void keystat_allrelease(void) { |
| } | } |
| } | } |
| // ---- | |
| // キーコード変更 | |
| static REG8 cnvnewcode(REG8 oldcode) { | static REG8 cnvnewcode(REG8 oldcode) { |
| switch(oldcode) { | switch(oldcode) { |
| case 0x71: // 通常caps | case 0x71: /* 通常caps */ |
| return(0x81); | return(0x81); |
| case 0x72: // 通常カナ | case 0x72: /* 通常カナ */ |
| return(0x82); | return(0x82); |
| case 0x79: // メカニカルロックcaps | case 0x79: /* メカニカルロックcaps */ |
| return(0x71); | return(0x71); |
| case 0x7a: // メカニカルロックcaps | case 0x7a: /* メカニカルロックcaps */ |
| return(0x72); | return(0x72); |
| case 0x76: | case 0x76: |
| return(0x90); // NKEY_USER + 0 | return(0x90); /* NKEY_USER + 0 */ |
| case 0x77: | case 0x77: |
| return(0x91); // NKEY_USER + 1 | return(0x91); /* NKEY_USER + 1 */ |
| default: | default: |
| return(oldcode); | return(oldcode); |
| Line 224 void keystat_senddata(REG8 data) { | Line 219 void keystat_senddata(REG8 data) { |
| } | } |
| // 0x80 --> 0x01 | /* 0x80 --> 0x01 |
| // Q W E A D Z X C | * Q W E A D Z X C |
| // [7] [4] [1] [8] [2] [9] [6] [3] | * [7] [4] [1] [8] [2] [9] [6] [3] |
| // ESC 1 [-] [+] [*] TAB ' ' Ent | * ESC 1 [-] [+] [*] TAB ' ' Ent */ |