|
|
| version 1.4, 2004/01/15 18:15:30 | version 1.10, 2005/02/07 14:46:14 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "np2.h" | #include "np2.h" |
| #include "winkbd.h" | #include "winkbd.h" |
| #include "pccore.h" | #include "keystat.h" |
| #include "iocore.h" | |
| #define NC 0xff | #define NC 0xff |
| static const BYTE key106[256] = { | static UINT8 key106[256] = { |
| // , , ,STOP, , , , ; 0x00 | // , , ,STOP, , , , ; 0x00 |
| NC, NC, NC,0x60, NC, NC, NC, NC, | NC, NC, NC,0x60, NC, NC, NC, NC, |
| // BS, TAB, , , CLR, ENT, , ; 0x08 | // BS, TAB, , , CLR, ENT, , ; 0x08 |
| Line 73 static const BYTE key106[256] = { | Line 72 static const BYTE key106[256] = { |
| // , , , , , , , ; 0xf8 | // , , , , , , , ; 0xf8 |
| NC, NC, NC, NC, NC, NC, NC, NC}; | NC, NC, NC, NC, NC, NC, NC, NC}; |
| static const BYTE key106ext[256] = { | static const UINT8 key106ext[256] = { |
| // , , ,STOP, , , , ; 0x00 | // , , ,STOP, , , , ; 0x00 |
| NC, NC, NC, NC, NC, NC, NC, NC, | NC, NC, NC, NC, NC, NC, NC, NC, |
| // BS, TAB, , , CLR, ENT, , ; 0x08 | // BS, TAB, , , CLR, ENT, , ; 0x08 |
| Line 139 static const BYTE key106ext[256] = { | Line 138 static const BYTE key106ext[256] = { |
| // , , , , , , , ; 0xf8 | // , , , , , , , ; 0xf8 |
| NC, NC, NC, NC, NC, NC, NC, NC}; | NC, NC, NC, NC, NC, NC, NC, NC}; |
| static const BYTE f12keys[] = { | static const UINT8 f12keys[] = { |
| 0x61, 0x60, 0x4d, 0x4f}; | 0x61, 0x60, 0x4d, 0x4f, 0x76, 0x77}; |
| static BYTE getf12key(void) { | |
| UINT key; | |
| key = np2oscfg.F12COPY - 1; | |
| if (key < (sizeof(f12keys)/sizeof(BYTE))) { | |
| return(f12keys[key]); | |
| } | |
| else { | |
| return(NC); | |
| } | |
| } | |
| void winkbd_keydown(WPARAM wParam, LPARAM lParam) { | void winkbd_keydown(WPARAM wParam, LPARAM lParam) { |
| BYTE data; | UINT8 data; |
| if (wParam != VK_F12) { | data = key106[wParam & 0xff]; |
| data = key106[wParam & 0xff]; | |
| } | |
| else { | |
| data = getf12key(); | |
| } | |
| if (data != NC) { | if (data != NC) { |
| if ((data == 0x73) && | if ((data == 0x73) && |
| (np2oscfg.KEYBOARD == KEY_KEY101) && | (np2oscfg.KEYBOARD == KEY_KEY101) && |
| Line 190 void winkbd_keydown(WPARAM wParam, LPARA | Line 171 void winkbd_keydown(WPARAM wParam, LPARA |
| void winkbd_keyup(WPARAM wParam, LPARAM lParam) { | void winkbd_keyup(WPARAM wParam, LPARAM lParam) { |
| BYTE data; | UINT8 data; |
| if (wParam != VK_F12) { | data = key106[wParam & 0xff]; |
| data = key106[wParam & 0xff]; | |
| } | |
| else { | |
| data = getf12key(); | |
| } | |
| if (data != NC) { | if (data != NC) { |
| if ((data == 0x73) && | if ((data == 0x73) && |
| (np2oscfg.KEYBOARD == KEY_KEY101) && | (np2oscfg.KEYBOARD == KEY_KEY101) && |
| Line 210 void winkbd_keyup(WPARAM wParam, LPARAM | Line 186 void winkbd_keyup(WPARAM wParam, LPARAM |
| keystat_senddata(0x70 | 0x80); // PC/AT only | keystat_senddata(0x70 | 0x80); // PC/AT only |
| data = key106ext[wParam & 0xff]; | data = key106ext[wParam & 0xff]; |
| } | } |
| keystat_senddata((BYTE)(data | 0x80)); | keystat_senddata((UINT8)(data | 0x80)); |
| } | } |
| else { // ver0.28 | else { // ver0.28 |
| if ((np2oscfg.KEYBOARD != KEY_PC98) && (wParam == 0x0c)) { | if ((np2oscfg.KEYBOARD != KEY_PC98) && (wParam == 0x0c)) { |
| Line 220 void winkbd_keyup(WPARAM wParam, LPARAM | Line 196 void winkbd_keyup(WPARAM wParam, LPARAM |
| } | } |
| } | } |
| void winkbd_roll(BOOL pcat) { | |
| if (pcat) { | |
| key106[0x21] = 0x36; | |
| key106[0x22] = 0x37; | |
| } | |
| else { | |
| key106[0x21] = 0x37; | |
| key106[0x22] = 0x36; | |
| } | |
| } | |
| void winkbd_setf12(UINT f12key) { | |
| UINT8 key; | |
| f12key--; | |
| if (f12key < NELEMENTS(f12keys)) { | |
| key = f12keys[f12key]; | |
| } | |
| else { | |
| key = NC; | |
| } | |
| key106[0x7b] = key; | |
| } | |
| void winkbd_resetf12(void) { | void winkbd_resetf12(void) { |
| UINT i; | UINT i; |
| for (i=0; i<(sizeof(f12keys)/sizeof(BYTE)); i++) { | for (i=0; i<NELEMENTS(f12keys); i++) { |
| keystat_forcerelease(f12keys[i]); | keystat_forcerelease(f12keys[i]); |
| } | } |
| } | } |