--- np2/win9x/winkbd.cpp 2004/02/18 03:24:48 1.6 +++ np2/win9x/winkbd.cpp 2005/02/07 14:46:14 1.10 @@ -6,7 +6,7 @@ #define NC 0xff -static const BYTE key106[256] = { +static UINT8 key106[256] = { // , , ,STOP, , , , ; 0x00 NC, NC, NC,0x60, NC, NC, NC, NC, // BS, TAB, , , CLR, ENT, , ; 0x08 @@ -72,7 +72,7 @@ static const BYTE key106[256] = { // , , , , , , , ; 0xf8 NC, NC, NC, NC, NC, NC, NC, NC}; -static const BYTE key106ext[256] = { +static const UINT8 key106ext[256] = { // , , ,STOP, , , , ; 0x00 NC, NC, NC, NC, NC, NC, NC, NC, // BS, TAB, , , CLR, ENT, , ; 0x08 @@ -142,29 +142,11 @@ static const UINT8 f12keys[] = { 0x61, 0x60, 0x4d, 0x4f, 0x76, 0x77}; -static BYTE getf12key(void) { - - UINT key; - - key = np2oscfg.F12COPY - 1; - if (key < (sizeof(f12keys)/sizeof(UINT8))) { - return(f12keys[key]); - } - else { - return(NC); - } -} - void winkbd_keydown(WPARAM wParam, LPARAM lParam) { - BYTE data; + UINT8 data; - if (wParam != VK_F12) { - data = key106[wParam & 0xff]; - } - else { - data = getf12key(); - } + data = key106[wParam & 0xff]; if (data != NC) { if ((data == 0x73) && (np2oscfg.KEYBOARD == KEY_KEY101) && @@ -189,14 +171,9 @@ void winkbd_keydown(WPARAM wParam, LPARA void winkbd_keyup(WPARAM wParam, LPARAM lParam) { - BYTE data; + UINT8 data; - if (wParam != VK_F12) { - data = key106[wParam & 0xff]; - } - else { - data = getf12key(); - } + data = key106[wParam & 0xff]; if (data != NC) { if ((data == 0x73) && (np2oscfg.KEYBOARD == KEY_KEY101) && @@ -209,7 +186,7 @@ void winkbd_keyup(WPARAM wParam, LPARAM keystat_senddata(0x70 | 0x80); // PC/AT only data = key106ext[wParam & 0xff]; } - keystat_senddata((BYTE)(data | 0x80)); + keystat_senddata((UINT8)(data | 0x80)); } else { // ver0.28 if ((np2oscfg.KEYBOARD != KEY_PC98) && (wParam == 0x0c)) { @@ -219,11 +196,37 @@ 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) { UINT i; - for (i=0; i<(sizeof(f12keys)/sizeof(UINT8)); i++) { + for (i=0; i