/* post_levent_*(event[,unk]) post the event with PostLogicalEventToUI or PostLogicaEventForNotPowerType This sends the event. The difference between functions isn't clear. event is an event id (number) or name (string). unk is an optional number whose meaning is unknown, defaults to zero. Based on code, other values would probably be a pointer. This is NOT the 3rd item in the event table. */ static int luaCB_post_levent_to_ui( lua_State* L ) { unsigned event_id,arg; event_id = levent_id_from_lua_arg(L,1); arg = luaL_optnumber(L, 2, 0); PostLogicalEventToUI(event_id,arg); return 0; }
// note, slow linear search every time int levent_post_to_ui_by_name(const char *name) { unsigned id=levent_id_for_name(name); if(id) { PostLogicalEventToUI(id,0); return 1; } return 0; }
void kbd_key_release(long key) { #ifdef KBD_SIMULATE_VIDEO_KEY if (key == KEY_VIDEO && is_video_key_pressed) { PostLogicalEventToUI(levent_id_for_name("UnpressMovieButton"),0); is_video_key_pressed = 0; return; } #endif int i; for (i=0;keymap[i].hackkey;i++){ if (keymap[i].hackkey == key){ kbd_mod_state[keymap[i].grp] |= keymap[i].canonkey; return; } } }
void kbd_key_press(long key) { #ifdef KBD_SIMULATE_VIDEO_KEY if (key == KEY_VIDEO && !is_video_key_pressed) { // TODO define for ID would be more efficient PostLogicalEventToUI(levent_id_for_name("PressMovieButton"),0); is_video_key_pressed = 1; // TODO not clear if this should return, or set state too return; } #endif int i; for (i=0;keymap[i].hackkey;i++){ if (keymap[i].hackkey == key){ kbd_mod_state[keymap[i].grp] &= ~keymap[i].canonkey; return; } } }