|
|
| version 1.3, 2003/11/13 07:47:17 | version 1.5, 2003/11/14 10:04:56 |
|---|---|
| Line 12 | Line 12 |
| #if TARGET_API_MAC_CARBON | #if TARGET_API_MAC_CARBON |
| static BYTE keymap[16]; | typedef struct { |
| static UINT32 shiftchktick = 0; | UINT32 tick; |
| BYTE keymap[16]; | |
| BOOL active; | |
| UINT32 repbase; | |
| UINT32 reptick; | |
| BYTE repkey; | |
| } MACKBD; | |
| static MACKBD mackbd; | |
| static const BYTE keymac[128] = { | static const BYTE keymac[128] = { |
| // £Á, £Ó, £Ä, £Æ, £È, £Ç, £Ú, £Ø ; 0x00 | // £Á, £Ó, £Ä, £Æ, £È, £Ç, £Ú, £Ø ; 0x00 |
| Line 49 static const BYTE keymac[128] = { | Line 58 static const BYTE keymac[128] = { |
| // F2, rd, F1, ¢«, ¢ª, ¢, ¢¬, ; 0x78 | // F2, rd, F1, ¢«, ¢ª, ¢, ¢¬, ; 0x78 |
| 0x63,0x36,0x62,0x3b,0x3c,0x3d,0x3a, NC}; | 0x63,0x36,0x62,0x3b,0x3c,0x3d,0x3a, NC}; |
| static const BYTE repkey[16] = { | |
| 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, | |
| 0xff, 0xff, 0xc1, 0xff, 0xc0, 0x0f, 0x07, 0x07}; | |
| void mackbd_initialize(void) { | void mackbd_initialize(void) { |
| shiftchktick = GETTICK(); | mackbd.tick = GETTICK(); |
| ZeroMemory(&keymap, sizeof(keymap)); | ZeroMemory(&mackbd.keymap, sizeof(mackbd.keymap)); |
| mackbd.active = TRUE; | |
| mackbd.repkey = NC; | |
| } | } |
| void mackbd_callback(void) { | void mackbd_callback(void) { |
| Line 64 void mackbd_callback(void) { | Line 80 void mackbd_callback(void) { |
| UINT j; | UINT j; |
| BYTE keycode; | BYTE keycode; |
| if (!mackbd.active) { | |
| return; | |
| } | |
| tick = GETTICK(); | tick = GETTICK(); |
| if (shiftchktick == tick) { | if (mackbd.tick == tick) { |
| return; | return; |
| } | } |
| shiftchktick = tick; | mackbd.tick = tick; |
| #if TARGET_API_MAC_CARBON | #if TARGET_API_MAC_CARBON |
| GetKeys((long *)key); | GetKeys((long *)key); |
| #else | #else |
| GetKeys((unsigned long *)key); | GetKeys((unsigned long *)key); |
| #endif | #endif |
| for (i=0; i<16; i++) { | for (i=0; i<16; i++) { |
| update = keymap[i] ^ key[i]; | update = mackbd.keymap[i] ^ key[i]; |
| if (update) { | if (update) { |
| keymap[i] = key[i]; | mackbd.keymap[i] = key[i]; |
| for (j=0; j<8; j++) { | for (j=0; j<8; j++) { |
| if (update & (1 << j)) { | if (update & (1 << j)) { |
| TRACEOUT(("key %x %d", i * 8 + j, (key[i] & (1 << j))?1:0)); | |
| keycode = keymac[i * 8 + j]; | keycode = keymac[i * 8 + j]; |
| if (keycode != NC) { | if (keycode != NC) { |
| if (key[i] & (1 << j)) { | if (key[i] & (1 << j)) { |
| keystat_senddata(keycode); | keystat_senddata(keycode); |
| if ((repkey[keycode >> 3] << (keycode & 7)) | |
| & 0x80) { | |
| mackbd.repkey = keycode; | |
| mackbd.repbase = tick; | |
| mackbd.reptick = 500; | |
| } | |
| } | } |
| else { | else { |
| if (mackbd.repkey == keycode) { | |
| mackbd.repkey = NC; | |
| } | |
| keystat_senddata(keycode + 0x80); | keystat_senddata(keycode + 0x80); |
| } | } |
| } | } |
| Line 94 TRACEOUT(("key %x %d", i * 8 + j, (key[i | Line 122 TRACEOUT(("key %x %d", i * 8 + j, (key[i |
| } | } |
| } | } |
| } | } |
| // ¥¡¼¥ê¥Ô¡¼¥È½èÍý | |
| if (mackbd.repkey != NC) { | |
| if ((tick - mackbd.repbase) >= mackbd.reptick) { | |
| keystat_senddata(mackbd.repkey); // keystat¦¤Çbreak¤¹¤ë | |
| mackbd.repbase = tick; | |
| mackbd.reptick = 40; | |
| } | |
| } | |
| } | } |
| BOOL mackbd_keydown(int keycode) { | BOOL mackbd_keydown(int keycode) { |
| Line 126 BOOL mackbd_keyup(int keycode) { | Line 163 BOOL mackbd_keyup(int keycode) { |
| return(FALSE); | return(FALSE); |
| } | } |
| void mackbd_activate(BOOL active) { | |
| if (mackbd.active != active) { | |
| mackbd.active = active; | |
| if (!active) { | |
| ZeroMemory(&mackbd.keymap, sizeof(mackbd.keymap)); | |
| keystat_allrelease(); | |
| } | |
| } | |
| } | |
| #else | #else |
| enum { | enum { |
| Line 187 static const BYTE keymac[128] = { | Line 235 static const BYTE keymac[128] = { |
| typedef struct { | typedef struct { |
| UINT32 tick; | UINT32 tick; |
| UINT16 shift; | UINT16 shift; |
| BOOL active; | |
| } MACKBD; | } MACKBD; |
| static MACKBD mackbd; | static MACKBD mackbd; |
| Line 194 static MACKBD mackbd; | Line 243 static MACKBD mackbd; |
| void mackbd_initialize(void) { | void mackbd_initialize(void) { |
| ZeroMemory(&mackbd, sizeof(mackbd)); | ZeroMemory(&mackbd, sizeof(mackbd)); |
| mackbd.active = TRUE; | |
| } | } |
| void mackbd_callback(void) { | void mackbd_callback(void) { |
| Line 204 void mackbd_callback(void) { | Line 254 void mackbd_callback(void) { |
| UINT16 shiftchg; | UINT16 shiftchg; |
| UINT i; | UINT i; |
| if (!mackbd.active) { | |
| return; | |
| } | |
| tick = GETTICK(); | tick = GETTICK(); |
| if (mackbd.tick != tick) { | if (mackbd.tick != tick) { |
| mackbd.tick = tick; | mackbd.tick = tick; |
| Line 274 BOOL mackbd_keyup(int keycode) { | Line 328 BOOL mackbd_keyup(int keycode) { |
| } | } |
| } | } |
| void mackbd_activate(BOOL active) { | |
| if (mackbd.active != active) { | |
| mackbd.active = active; | |
| if (!active) { | |
| keystat_allrelease(); | |
| } | |
| } | |
| } | |
| #endif | #endif |