--- np2/macos9/mackbd.cpp 2003/11/14 10:04:56 1.5 +++ np2/macos9/mackbd.cpp 2004/02/13 09:07:42 1.11 @@ -9,6 +9,35 @@ #define NC 0xff +typedef struct { + UINT8 f11[5]; + UINT8 f12[5]; +} BINDTBL; + +static const BINDTBL bindtbl = { + // ¥«¥Ê Stop [¡á] NFER USER + {0x72, 0x60, 0x4d, 0x51, 0x76}, + // Copy [¡¤] XFER + {NC, 0x61, 0x4f, 0x35, 0x77}}; + +void mackbd_resetf11(void) { + + UINT i; + + for (i=1; i<(sizeof(bindtbl.f11)/sizeof(UINT8)); i++) { + keystat_forcerelease(bindtbl.f11[i]); + } +} + +void mackbd_resetf12(void) { + + UINT i; + + for (i=1; i<(sizeof(bindtbl.f12)/sizeof(UINT8)); i++) { + keystat_forcerelease(bindtbl.f12[i]); + } +} + #if TARGET_API_MAC_CARBON @@ -23,7 +52,6 @@ typedef struct { static MACKBD mackbd; - static const BYTE keymac[128] = { // £Á, £Ó, £Ä, £Æ, £È, £Ç, £Ú, £Ø ; 0x00 0x1d,0x1e,0x1f,0x20,0x22,0x21,0x29,0x2a, @@ -41,16 +69,16 @@ static const BYTE keymac[128] = { 0x0f,0x34, NC,0x0e, NC,0x00, NC, NC, // sft, cps, alt, ctl, , , , ; 0x38 0x70,0x79,0x73,0x74, NC, NC, NC, NC, - // , [.], , [*], , , [+], ; 0x40 - NC,0x50, NC,0x45, NC, NC,0x49, NC, - // , , , , ret, , [-], clr ; 0x48 - NC, NC, NC, NC,0x1c, NC,0x40,0x3e, + // , [.], , [*], , [+], , ; 0x40 + NC,0x50, NC,0x45, NC,0x49, NC, NC, + // , , , [/], ret, , [-], clr ; 0x48 + NC, NC, NC,0x41,0x1c, NC,0x40,0x3e, // , [=], [0], [1], [2], [3], [4], [5] ; 0x50 NC,0x4d,0x4e,0x4a,0x4b,0x4c,0x46,0x47, // [6], [7], , [8], [9], ¡ï, ¡², [,] ; 0x58 0x48,0x42, NC,0x43,0x44,0x0d,0x33,0x4f, // F5, F6, F7, F3, F8, F9, , F11 ; 0x60 - 0x66,0x67,0x68,0x64,0x69,0x6a, NC,0x72, + 0x66,0x67,0x68,0x64,0x69,0x6a, NC, NC, // , F13, , F14, , F10, , F12 ; 0x68 NC, NC, NC, NC, NC,0x6b, NC, NC, // , F15, hlp, hom, ru, del, F4, end ; 0x70 @@ -133,33 +161,48 @@ void mackbd_callback(void) { } } -BOOL mackbd_keydown(int keycode) { +BOOL mackbd_keydown(int keycode, BOOL cmd) { + + BYTE data; - if (keycode == 0x6f) { - if (np2oscfg.F12COPY == 1) { - keystat_senddata(0x61); - return(TRUE); - } - else if (np2oscfg.F12COPY == 2) { - keystat_senddata(0x60); - return(TRUE); - } + data = NC; + if (keycode == 0x67) { + if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(UINT8))) { + data = bindtbl.f11[np2oscfg.F11KEY]; + } + } + else if (keycode == 0x6f) { + if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(UINT8))) { + data = bindtbl.f12[np2oscfg.F12KEY]; + } } + if (data != NC) { + keystat_senddata(data); + return(TRUE); + } + (void)cmd; return(FALSE); } BOOL mackbd_keyup(int keycode) { - if (keycode == 0x6f) { - if (np2oscfg.F12COPY == 1) { - keystat_senddata(0x61 | 0x80); - return(TRUE); - } - else if (np2oscfg.F12COPY == 2) { - keystat_senddata(0x60 | 0x80); - return(TRUE); + BYTE data; + + data = NC; + if (keycode == 0x67) { + if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(UINT8))) { + data = bindtbl.f11[np2oscfg.F11KEY]; } } + else if (keycode == 0x6f) { + if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(UINT8))) { + data = bindtbl.f12[np2oscfg.F12KEY]; + } + } + if (data != NC) { + keystat_senddata(data | 0x80); + return(TRUE); + } return(FALSE); } @@ -215,16 +258,16 @@ static const BYTE keymac[128] = { 0x0f,0x34, NC,0x0e, NC,0x00, NC, NC, // sft, cps, alt, ctl, , , , ; 0x38 NC, NC, NC, NC, NC, NC, NC, NC, - // , [.], , [*], , , [+], ; 0x40 - NC,0x50, NC,0x45, NC, NC,0x49, NC, - // , , , , ret, , [-], clr ; 0x48 - NC, NC, NC, NC,0x1c, NC,0x40,0x3e, + // , [.], , [*], , [+], , ; 0x40 + NC,0x50, NC,0x45, NC,0x49, NC, NC, + // , , , [/], ret, , [-], clr ; 0x48 + NC, NC, NC,0x41,0x1c, NC,0x40,0x3e, // , [=], [0], [1], [2], [3], [4], [5] ; 0x50 NC,0x4d,0x4e,0x4a,0x4b,0x4c,0x46,0x47, // [6], [7], , [8], [9], ¡ï, ¡², [,] ; 0x58 0x48,0x42, NC,0x43,0x44,0x0d,0x33,0x4f, // F5, F6, F7, F3, F8, F9, , F11 ; 0x60 - 0x66,0x67,0x68,0x64,0x69,0x6a, NC,0x72, + 0x66,0x67,0x68,0x64,0x69,0x6a, NC, NC, // , F13, , F14, , F10, , F12 ; 0x68 NC, NC, NC, NC, NC,0x6b, NC, NC, // , F15, hlp, hom, ru, del, F4, end ; 0x70 @@ -232,6 +275,41 @@ static const BYTE keymac[128] = { // F2, rd, F1, ¢«, ¢ª, ¢­, ¢¬, ; 0x78 0x63,0x36,0x62,0x3b,0x3c,0x3d,0x3a, NC}; +// ÎӸ饭¡¼²¡²¼ +static const BYTE keymac2[128] = { + // £Á, £Ó, £Ä, £Æ, £È, £Ç, £Ú, £Ø ; 0x00 + NC, NC, NC, NC,0x3f, NC, NC, NC, + // £Ã, £Ö, , £Â, £Ñ, £×, £Å, £Ò ; 0x08 + NC, NC, NC, NC, NC, NC, NC, NC, + // £Ù, £Ô, £±, £², £³, £´, £¶, £µ ; 0x10 + NC, NC,0x62,0x63, 0x64,0x65,0x67,0x66, + // ¡°, £¹, £·, ¡Ý, £¸, £°, ¡Î, £Ï ; 0x18 + NC,0x6a,0x68, NC,0x69,0x6b, NC, NC, + // £Õ, ¡÷, £É, £Ð, ret, £Ì, £Ê, ¡§ ; 0x20 + NC, NC, NC, NC, NC,0x3e, NC, NC, + // £Ë, ¡¨, ¡Ï, ¡¤, ¡¿, £Î, £Í, ¡¥ ; 0x28 + NC, NC, NC, NC, NC, NC, NC, NC, + // TAB, SPC, , BS, , ESC, , apl ; 0x30 + NC, NC, NC, NC, NC, NC, NC, NC, + // sft, cps, alt, ctl, , , , ; 0x38 + NC, NC, NC, NC, NC, NC, NC, NC, + // , [.], , [*], , [+], , ; 0x40 + NC, NC, NC, NC, NC, NC, NC, NC, + // , , , , ret, , [-], clr ; 0x48 + NC, NC, NC, NC, NC, NC, NC, NC, + // , [=], [0], [1], [2], [3], [4], [5] ; 0x50 + NC, NC, NC, NC, NC, NC, NC, NC, + // [6], [7], , [8], [9], ¡ï, ¡², [,] ; 0x58 + NC, NC, NC, NC, NC, NC, NC, NC, + // F5, F6, F7, F3, F8, F9, , F11 ; 0x60 + NC, NC, NC, NC, NC, NC, NC, NC, + // , F13, , F14, , F10, , F12 ; 0x68 + NC, NC, NC, NC, NC, NC, NC, NC, + // , F15, hlp, hom, ru, del, F4, end ; 0x70 + NC, NC, NC, NC, NC,0x38, NC, NC, + // F2, rd, F1, ¢«, ¢ª, ¢­, ¢¬, ; 0x78 + NC, NC, NC, NC, NC, NC, NC, NC}; + typedef struct { UINT32 tick; UINT16 shift; @@ -278,21 +356,28 @@ void mackbd_callback(void) { } } -BOOL mackbd_keydown(int keycode) { +BOOL mackbd_keydown(int keycode, BOOL cmd) { BYTE data; data = NC; - if (keycode == 0x6f) { - if (np2oscfg.F12COPY == 1) { - data = 0x61; + if (keycode == 0x67) { + if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(UINT8))) { + data = bindtbl.f11[np2oscfg.F11KEY]; } - else if (np2oscfg.F12COPY == 2) { - data = 0x60; + } + else if (keycode == 0x6f) { + if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(UINT8))) { + data = bindtbl.f12[np2oscfg.F12KEY]; } } else if (keycode < 0x80) { - data = keymac[keycode]; + if (!cmd) { + data = keymac[keycode]; + } + else { + data = keymac2[keycode]; + } } if (data != NC) { keystat_senddata(data); @@ -306,26 +391,33 @@ BOOL mackbd_keydown(int keycode) { BOOL mackbd_keyup(int keycode) { BYTE data; + BOOL ret; data = NC; - if (keycode == 0x6f) { - if (np2oscfg.F12COPY == 1) { - data = 0x61; + ret = FALSE; + if (keycode == 0x67) { + if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(UINT8))) { + data = bindtbl.f11[np2oscfg.F11KEY]; } - else if (np2oscfg.F12COPY == 2) { - data = 0x60; + } + else if (keycode == 0x6f) { + if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(UINT8))) { + data = bindtbl.f12[np2oscfg.F12KEY]; } } else if (keycode < 0x80) { data = keymac[keycode]; + if (data != NC) { + keystat_senddata(data | 0x80); + ret = TRUE; + } + data = keymac2[keycode]; } if (data != NC) { keystat_senddata(data | 0x80); - return(TRUE); - } - else { - return(FALSE); + ret = TRUE; } + return(ret); } void mackbd_activate(BOOL active) { @@ -340,40 +432,3 @@ void mackbd_activate(BOOL active) { #endif - -#if 0 -// ÎӸ饭¡¼²¡²¼ -static const BYTE keymac2[128] = { - // £Á, £Ó, £Ä, £Æ, £È, £Ç, £Ú, £Ø ; 0x00 - NC, NC, NC, NC,0x3f, NC, NC, NC, - // £Ã, £Ö, , £Â, £Ñ, £×, £Å, £Ò ; 0x08 - NC, NC, NC, NC, NC, NC, NC, NC, - // £Ù, £Ô, £±, £², £³, £´, £¶, £µ ; 0x10 - NC, NC,0x62,0x63, 0x64,0x65,0x67,0x66, - // ¡°, £¹, £·, ¡Ý, £¸, £°, ¡Î, £Ï ; 0x18 - NC,0x6a,0x68, NC,0x69,0x6b, NC, NC, - // £Õ, ¡÷, £É, £Ð, ret, £Ì, £Ê, ¡§ ; 0x20 - NC, NC, NC, NC, NC,0x3e, NC, NC, - // £Ë, ¡¨, ¡Ï, ¡¤, ¡¿, £Î, £Í, ¡¥ ; 0x28 - NC, NC, NC, NC, NC, NC, NC, NC, - // TAB, SPC, , BS, , ESC, , apl ; 0x30 - NC, NC, NC, NC, NC, NC, NC, NC, - // sft, cps, alt, ctl, , , , ; 0x38 - NC, NC, NC, NC, NC, NC, NC, NC, - // , [.], , [*], , , [+], ; 0x40 - NC, NC, NC, NC, NC, NC, NC, NC, - // , , , , ret, , [-], clr ; 0x48 - NC, NC, NC, NC, NC, NC, NC, NC, - // , [=], [0], [1], [2], [3], [4], [5] ; 0x50 - NC, NC, NC, NC, NC, NC, NC, NC, - // [6], [7], , [8], [9], ¡ï, ¡², [,] ; 0x58 - NC, NC, NC, NC, NC, NC, NC, NC, - // F5, F6, F7, F3, F8, F9, , F11 ; 0x60 - NC, NC, NC, NC, NC, NC, NC, NC, - // , F13, , F14, , F10, , F12 ; 0x68 - NC, NC, NC, NC, NC, NC, NC, NC, - // , F15, hlp, hom, ru, del, F4, end ; 0x70 - NC, NC, NC, NC, NC,0x38, NC, NC, - // F2, rd, F1, ¢«, ¢ª, ¢­, ¢¬, ; 0x78 - NC, NC, NC, NC, NC, NC, NC, NC}; -#endif