12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "../mmage/mmage.h"
- #include "wwbios.h"
- extern "C" {
- #include "../wonx/wonx_include/key.h"
- }
- enum {
- KEY_PRESS_CHECK = 0,
- KEY_HIT_CHECK,
- KEY_WAIT,
- KEY_SET_REPEAT,
- KEY_GET_REPEAT,
- KEY_HIT_CHECK_WITH_REPEAT,
- };
- void key_handler(int func_no) {
- WORD ret;
- switch(func_no) {
- case KEY_PRESS_CHECK:
- wregs[AX] = key_press_check();
- break;
- case KEY_HIT_CHECK:
- wregs[AX] = key_hit_check();
- break;
- case KEY_WAIT:
- // return 値が 0 のときは ip を -2 して見かけ上 wait してるようにみせかける
- ret = key_wait();
- if(ret) {
- wregs[AX] = ret;
- } else {
- WaitForSingleObject(wonw32ctx->syncevent, INFINITE);
- ip = ip - 2;
- }
- break;
- case KEY_SET_REPEAT:
- key_set_repeat(*bregs[BL], *bregs[BH]);
- break;
- case KEY_GET_REPEAT:
- wregs[AX] = key_get_repeat();
- break;
- case KEY_HIT_CHECK_WITH_REPEAT:
- wregs[AX] = key_hit_check_with_repeat();
- break;
- default:
- break;
- }
- }
|