void menu_input_search_start(void) { menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return; menu->keyboard.display = true; menu->keyboard.label = "Search: "; menu->keyboard.buffer = input_keyboard_start_line(menu, menu_input_search_callback); }
void menu_key_start_line(void *data, const char *label, input_keyboard_line_complete_t cb) { menu_handle_t *menu = (menu_handle_t*)data; if (!menu) return; menu->keyboard.display = true; menu->keyboard.label = label; menu->keyboard.buffer = input_keyboard_start_line(menu, cb); }
void menu_input_search_start(void) { menu_handle_t *menu = menu_driver_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); if (!menu || !menu_input) return; menu_input->keyboard.display = true; menu_input->keyboard.label = menu_hash_to_str(MENU_VALUE_SEARCH); menu_input->keyboard.buffer = input_keyboard_start_line(menu, menu_input_search_callback); }
void menu_key_event(bool down, unsigned keycode, uint32_t character, uint16_t mod) { (void)down; (void)keycode; (void)mod; if (character == '/') { rgui->keyboard.display = true; rgui->keyboard.label = "Search: "; rgui->keyboard.buffer = input_keyboard_start_line(rgui, menu_search_callback); } }
void menu_input_key_start_line(const char *label, const char *label_setting, unsigned type, unsigned idx, input_keyboard_line_complete_t cb) { menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return; menu->keyboard.display = true; menu->keyboard.label = label; menu->keyboard.label_setting = label_setting; menu->keyboard.type = type; menu->keyboard.idx = idx; menu->keyboard.buffer = input_keyboard_start_line(menu, cb); }
bool menu_input_dialog_start_search(void) { menu_handle_t *menu = NULL; if (!menu_driver_ctl( RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; menu_input_dialog_display_kb(); strlcpy(menu_input_dialog_keyboard_label, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH), sizeof(menu_input_dialog_keyboard_label)); menu_input_dialog_keyboard_buffer = input_keyboard_start_line(menu, menu_input_search_cb); return true; }
void menu_input_key_start_line(const char *label, const char *label_setting, unsigned type, unsigned idx, input_keyboard_line_complete_t cb) { bool keyboard_display = true; menu_handle_t *menu = menu_driver_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); if (!menu || !menu_input) return; menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_DISPLAY, &keyboard_display); menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_LABEL, &label); menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_LABEL_SETTING, &label_setting); menu_input->keyboard.type = type; menu_input->keyboard.idx = idx; menu_input->keyboard.buffer = input_keyboard_start_line(menu, cb); }
void menu_key_event(bool down, unsigned keycode, uint32_t character, uint16_t mod) { if (!driver.menu) { RARCH_ERR("Cannot invoke menu key event callback, menu handle is not initialized.\n"); return; } (void)down; (void)keycode; (void)mod; if (character == '/') { driver.menu->keyboard.display = true; driver.menu->keyboard.label = "Search: "; driver.menu->keyboard.buffer = input_keyboard_start_line(driver.menu, menu_search_callback); } }
bool menu_input_dialog_start(menu_input_ctx_line_t *line) { menu_handle_t *menu = NULL; if (!line) return false; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; menu_input_dialog_display_kb(); strlcpy(menu_input_dialog_keyboard_label, line->label, sizeof(menu_input_dialog_keyboard_label)); strlcpy(menu_input_dialog_keyboard_label_setting, line->label_setting, sizeof(menu_input_dialog_keyboard_label_setting)); menu_input_dialog_keyboard_type = line->type; menu_input_dialog_keyboard_idx = line->idx; menu_input_dialog_keyboard_buffer = input_keyboard_start_line(menu, line->cb); return true; }
bool menu_input_ctl(enum menu_input_ctl_state state, void *data) { menu_input_t *menu_input = menu_input_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); if (!menu_input) return false; switch (state) { case MENU_INPUT_CTL_SEARCH_START: menu_input->keyboard.display = true; menu_input->keyboard.label = menu_hash_to_str(MENU_VALUE_SEARCH); menu_input->keyboard.buffer = input_keyboard_start_line(menu, menu_input_search_callback); return true; case MENU_INPUT_CTL_MOUSE_SCROLL_DOWN: { bool *ptr = (bool*)data; *ptr = menu_input->mouse.scrolldown; } return true; case MENU_INPUT_CTL_MOUSE_SCROLL_UP: { bool *ptr = (bool*)data; *ptr = menu_input->mouse.scrollup; } return true; case MENU_INPUT_CTL_MOUSE_PTR: { unsigned *ptr = (unsigned*)data; menu_input->mouse.ptr = *ptr; } return true; case MENU_INPUT_CTL_POINTER_PTR: { unsigned *ptr = (unsigned*)data; menu_input->pointer.ptr = *ptr; } return true; case MENU_INPUT_CTL_POINTER_ACCEL_READ: { float *ptr = (float*)data; *ptr = menu_input->pointer.accel; } return true; case MENU_INPUT_CTL_POINTER_ACCEL_WRITE: { float *ptr = (float*)data; menu_input->pointer.accel = *ptr; } return true; case MENU_INPUT_CTL_POINTER_DRAGGING: { bool *ptr = (bool*)data; *ptr = menu_input->pointer.dragging; } return true; case MENU_INPUT_CTL_KEYBOARD_DISPLAY: { bool *ptr = (bool*)data; *ptr = menu_input->keyboard.display; } return true; case MENU_INPUT_CTL_SET_KEYBOARD_DISPLAY: { bool *ptr = (bool*)data; menu_input->keyboard.display = *ptr; } return true; case MENU_INPUT_CTL_KEYBOARD_BUFF_PTR: { const char **ptr = (const char**)data; *ptr = *menu_input->keyboard.buffer; } return true; case MENU_INPUT_CTL_KEYBOARD_LABEL: { const char **ptr = (const char**)data; *ptr = menu_input->keyboard.label; } return true; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL: { char **ptr = (char**)data; menu_input->keyboard.label = *ptr; } return true; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL: menu_input->keyboard.label = NULL; return true; case MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING: { const char **ptr = (const char**)data; *ptr = menu_input->keyboard.label_setting; } return true; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL_SETTING: { char **ptr = (char**)data; menu_input->keyboard.label_setting = *ptr; } return true; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING: menu_input->keyboard.label_setting = NULL; return true; } return false; }
bool menu_input_ctl(enum menu_input_ctl_state state, void *data) { static char menu_input_keyboard_label_setting[256]; static const char **menu_input_keyboard_buffer; static const char *menu_input_keyboard_label = NULL; static bool pointer_dragging = false; menu_input_t *menu_input = menu_input_get_ptr(); if (!menu_input) return false; switch (state) { case MENU_INPUT_CTL_BIND_SET_MIN_MAX: { menu_input_ctx_bind_limits_t *lim = (menu_input_ctx_bind_limits_t*)data; if (!lim || !menu_input) return false; menu_input->binds.begin = lim->min; menu_input->binds.last = lim->max; } break; case MENU_INPUT_CTL_CHECK_INSIDE_HITBOX: { menu_input_ctx_hitbox_t *hitbox = (menu_input_ctx_hitbox_t*)data; int16_t mouse_x = menu_input_mouse_state(MENU_MOUSE_X_AXIS); int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); bool inside_hitbox = (mouse_x >= hitbox->x1) && (mouse_x <= hitbox->x2) && (mouse_y >= hitbox->y1) && (mouse_y <= hitbox->y2) ; if (!inside_hitbox) return false; } break; case MENU_INPUT_CTL_DEINIT: memset(menu_input, 0, sizeof(menu_input_t)); pointer_dragging = false; break; case MENU_INPUT_CTL_SEARCH_START: { menu_handle_t *menu = NULL; if (!menu_driver_ctl( RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; menu_input->keyboard.display = true; menu_input_keyboard_label = menu_hash_to_str(MENU_VALUE_SEARCH); menu_input_keyboard_buffer = input_keyboard_start_line(menu, menu_input_search_cb); } break; case MENU_INPUT_CTL_MOUSE_PTR: { unsigned *ptr = (unsigned*)data; menu_input->mouse.ptr = *ptr; } break; case MENU_INPUT_CTL_POINTER_PTR: { unsigned *ptr = (unsigned*)data; menu_input->pointer.ptr = *ptr; } break; case MENU_INPUT_CTL_POINTER_ACCEL_READ: { float *ptr = (float*)data; *ptr = menu_input->pointer.accel; } break; case MENU_INPUT_CTL_POINTER_ACCEL_WRITE: { float *ptr = (float*)data; menu_input->pointer.accel = *ptr; } break; case MENU_INPUT_CTL_IS_POINTER_DRAGGED: return pointer_dragging; case MENU_INPUT_CTL_SET_POINTER_DRAGGED: pointer_dragging = true; break; case MENU_INPUT_CTL_UNSET_POINTER_DRAGGED: pointer_dragging = false; break; case MENU_INPUT_CTL_KEYBOARD_DISPLAY: { bool *ptr = (bool*)data; *ptr = menu_input->keyboard.display; } break; case MENU_INPUT_CTL_SET_KEYBOARD_DISPLAY: { bool *ptr = (bool*)data; menu_input->keyboard.display = *ptr; } break; case MENU_INPUT_CTL_KEYBOARD_BUFF_PTR: { const char **ptr = (const char**)data; *ptr = *menu_input_keyboard_buffer; } break; case MENU_INPUT_CTL_KEYBOARD_LABEL: { const char **ptr = (const char**)data; *ptr = menu_input_keyboard_label; } break; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL: { char **ptr = (char**)data; menu_input_keyboard_label = *ptr; } break; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL: menu_input_keyboard_label = NULL; break; case MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING: { const char **ptr = (const char**)data; *ptr = menu_input_keyboard_label_setting; } break; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL_SETTING: { char **ptr = (char**)data; strlcpy(menu_input_keyboard_label_setting, *ptr, sizeof(menu_input_keyboard_label_setting)); } break; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING: menu_input_keyboard_label_setting[0] = '\0'; break; case MENU_INPUT_CTL_BIND_NONE: case MENU_INPUT_CTL_BIND_SINGLE: case MENU_INPUT_CTL_BIND_ALL: return menu_input_key_bind_set_mode(state, data); case MENU_INPUT_CTL_BIND_ITERATE: { menu_input_ctx_bind_t *bind = (menu_input_ctx_bind_t*)data; if (!bind) return false; return menu_input_key_bind_iterate(bind->s, bind->len); } case MENU_INPUT_CTL_START_LINE: { bool keyboard_display = true; menu_handle_t *menu = NULL; menu_input_ctx_line_t *line = (menu_input_ctx_line_t*)data; if (!menu_input || !line) return false; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_DISPLAY, &keyboard_display); menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_LABEL, &line->label); menu_input_ctl(MENU_INPUT_CTL_SET_KEYBOARD_LABEL_SETTING, &line->label_setting); menu_input->keyboard.type = line->type; menu_input->keyboard.idx = line->idx; menu_input_keyboard_buffer = input_keyboard_start_line(menu, line->cb); } break; default: case MENU_INPUT_CTL_NONE: break; } return true; }
void menu_key_start_line(rgui_handle_t *rgui, const char *label, input_keyboard_line_complete_t cb) { rgui->keyboard.display = true; rgui->keyboard.label = label; rgui->keyboard.buffer = input_keyboard_start_line(rgui, cb); }