1
0
mirror of https://github.com/libretro/RetroArch synced 2024-07-08 12:15:49 +00:00

(Accessibility) Cleanups

This commit is contained in:
twinaphex 2020-01-12 22:04:31 +01:00
parent 5b8411fe77
commit b8328a9fdf
3 changed files with 71 additions and 77 deletions

View File

@ -35,17 +35,8 @@ RETRO_BEGIN_DECLS
bool is_accessibility_enabled(void);
bool accessibility_speak(const char* speak_text);
bool accessibility_speak_priority(const char* speak_text, int priority);
bool accessibility_startup_message(void);
bool is_narrator_running(void);
bool accessibility_speak_ai_service(
const char* speak_text, const char* voice, int priority);
RETRO_END_DECLS
#endif

View File

@ -107,7 +107,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
#ifdef HAVE_ACCESSIBILITY
if (iterate_type != last_iterate_type && is_accessibility_enabled())
accessibility_speak(menu->menu_state_msg);
accessibility_speak_priority(menu->menu_state_msg, 10);
#endif
BIT64_SET(menu->state, MENU_STATE_RENDER_MESSAGEBOX);
@ -163,12 +163,12 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
char current_sublabel[255];
get_current_menu_sublabel(current_sublabel, sizeof(current_sublabel));
if (string_is_equal(current_sublabel, ""))
accessibility_speak(menu->menu_state_msg);
accessibility_speak_priority(menu->menu_state_msg, 10);
else
accessibility_speak(current_sublabel);
accessibility_speak_priority(current_sublabel, 10);
}
else
accessibility_speak(menu->menu_state_msg);
accessibility_speak_priority(menu->menu_state_msg, 10);
}
#endif
}
@ -288,7 +288,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
#ifdef HAVE_ACCESSIBILITY
if ((last_iterate_type == ITERATE_TYPE_HELP || last_iterate_type == ITERATE_TYPE_INFO) && last_iterate_type != iterate_type && is_accessibility_enabled())
accessibility_speak("Closed dialog.");
accessibility_speak_priority("Closed dialog.", 10);
#endif
last_iterate_type = iterate_type;
@ -474,7 +474,7 @@ int generic_menu_entry_action(
}
if (!string_is_equal(speak_string, ""))
accessibility_speak(speak_string);
accessibility_speak_priority(speak_string, 10);
}
#endif

View File

@ -1172,6 +1172,10 @@ static const void *joypad_driver_find_handle(int idx);
#ifdef HAVE_HID
static const void *hid_driver_find_handle(int idx);
#endif
#ifdef HAVE_ACCESSIBILITY
static bool is_narrator_running(void);
static bool accessibility_startup_message(void);
#endif
static bool midi_driver_read(uint8_t *byte);
static bool midi_driver_write(uint8_t byte, uint32_t delta_time);
@ -2608,8 +2612,8 @@ bool menu_input_dialog_start_search(void)
#ifdef HAVE_ACCESSIBILITY
if (is_accessibility_enabled())
accessibility_speak((char*)
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH));
accessibility_speak_priority((char*)
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH), 10);
#endif
menu_input_dialog_keyboard_buffer =
@ -2641,7 +2645,7 @@ bool menu_input_dialog_start(menu_input_ctx_line_t *line)
input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL);
#ifdef HAVE_ACCESSIBILITY
accessibility_speak("Keyboard input:");
accessibility_speak_priority("Keyboard input:", 10);
#endif
menu_input_dialog_keyboard_buffer =
@ -4632,7 +4636,7 @@ static void handle_translation_cb(
#ifdef HAVE_ACCESSIBILITY
if (text_string && is_accessibility_enabled())
accessibility_speak(text_string);
accessibility_speak_priority(text_string, 10);
#endif
finish:
@ -5084,7 +5088,7 @@ static bool run_translation_service(void)
settings->arrays.ai_service_url, sizeof(new_ai_service_url));
/* if query already exists in url, then use &'s instead */
if (strrchr(new_ai_service_url, '?') != NULL)
if (strrchr(new_ai_service_url, '?'))
separator = '&';
/* source lang */
@ -6564,7 +6568,7 @@ bool command_event(enum event_command cmd, void *data)
{
#ifdef HAVE_ACCESSIBILITY
if (is_accessibility_enabled())
accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED));
accessibility_speak_priority((char*) msg_hash_to_str(MSG_UNPAUSED), 10);
#endif
command_event(CMD_EVENT_UNPAUSE, NULL);
}
@ -7272,9 +7276,9 @@ TODO: Add a setting for these tweaks */
if (is_accessibility_enabled())
{
if (boolean)
accessibility_speak((char*) msg_hash_to_str(MSG_PAUSED));
accessibility_speak_priority((char*) msg_hash_to_str(MSG_PAUSED), 10);
else
accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED));
accessibility_speak_priority((char*) msg_hash_to_str(MSG_UNPAUSED), 10);
}
#endif
@ -7740,13 +7744,13 @@ TODO: Add a setting for these tweaks */
ai_service_speech_stop();
#ifdef HAVE_ACCESSIBILITY
if (is_accessibility_enabled())
accessibility_speak("stopped.");
accessibility_speak_priority("stopped.", 10);
#endif
}
#ifdef HAVE_ACCESSIBILITY
else if (is_accessibility_enabled() && settings->uints.ai_service_mode == 2 &&
is_narrator_running())
accessibility_speak("stopped.");
accessibility_speak_priority("stopped.", 10);
#endif
else
{
@ -16786,81 +16790,81 @@ void input_keyboard_event(bool down, unsigned code,
if (code != 303 && code != 0)
{
char* say_char = (char*) malloc(sizeof(char)+1);
if (say_char != NULL)
if (say_char)
{
char c = (char) character;
*say_char = c;
if (character == 127)
accessibility_speak("backspace");
accessibility_speak_priority("backspace", 10);
else if (c == '`')
accessibility_speak("left quote");
accessibility_speak_priority("left quote", 10);
else if (c == '`')
accessibility_speak("tilde");
accessibility_speak_priority("tilde", 10);
else if (c == '!')
accessibility_speak("exclamation point");
accessibility_speak_priority("exclamation point", 10);
else if (c == '@')
accessibility_speak("at sign");
accessibility_speak_priority("at sign", 10);
else if (c == '#')
accessibility_speak("hash sign");
accessibility_speak_priority("hash sign", 10);
else if (c == '$')
accessibility_speak("dollar sign");
accessibility_speak_priority("dollar sign", 10);
else if (c == '%')
accessibility_speak("percent sign");
accessibility_speak_priority("percent sign", 10);
else if (c == '^')
accessibility_speak("carrot");
accessibility_speak_priority("carrot", 10);
else if (c == '&')
accessibility_speak("ampersand");
accessibility_speak_priority("ampersand", 10);
else if (c == '*')
accessibility_speak("asterisk");
accessibility_speak_priority("asterisk", 10);
else if (c == '(')
accessibility_speak("left bracket");
accessibility_speak_priority("left bracket", 10);
else if (c == ')')
accessibility_speak("right bracket");
accessibility_speak_priority("right bracket", 10);
else if (c == '-')
accessibility_speak("minus");
accessibility_speak_priority("minus", 10);
else if (c == '_')
accessibility_speak("underscore");
accessibility_speak_priority("underscore", 10);
else if (c == '=')
accessibility_speak("equals");
accessibility_speak_priority("equals", 10);
else if (c == '+')
accessibility_speak("plus");
accessibility_speak_priority("plus", 10);
else if (c == '[')
accessibility_speak("left square bracket");
accessibility_speak_priority("left square bracket", 10);
else if (c == '{')
accessibility_speak("left curl bracket");
accessibility_speak_priority("left curl bracket", 10);
else if (c == ']')
accessibility_speak("right square bracket");
accessibility_speak_priority("right square bracket", 10);
else if (c == '}')
accessibility_speak("right curl bracket");
accessibility_speak_priority("right curl bracket", 10);
else if (c == '\\')
accessibility_speak("back slash");
accessibility_speak_priority("back slash", 10);
else if (c == '|')
accessibility_speak("pipe");
accessibility_speak_priority("pipe", 10);
else if (c == ';')
accessibility_speak("semicolon");
accessibility_speak_priority("semicolon", 10);
else if (c == ':')
accessibility_speak("colon");
accessibility_speak_priority("colon", 10);
else if (c == '\'')
accessibility_speak("single quote");
accessibility_speak_priority("single quote", 10);
else if (c == '\"')
accessibility_speak("double quote");
accessibility_speak_priority("double quote", 10);
else if (c == ',')
accessibility_speak("comma");
accessibility_speak_priority("comma", 10);
else if (c == '<')
accessibility_speak("left angle bracket");
accessibility_speak_priority("left angle bracket", 10);
else if (c == '.')
accessibility_speak("period");
accessibility_speak_priority("period", 10);
else if (c == '>')
accessibility_speak("right angle bracket");
accessibility_speak_priority("right angle bracket", 10);
else if (c == '/')
accessibility_speak("front slash");
accessibility_speak_priority("front slash", 10);
else if (c == '?')
accessibility_speak("question mark");
accessibility_speak_priority("question mark", 10);
else if (c == ' ')
accessibility_speak("space");
accessibility_speak_priority("space", 10);
else if (character != 0)
accessibility_speak(say_char);
accessibility_speak_priority(say_char, 10);
free(say_char);
}
}
@ -29297,7 +29301,7 @@ unsigned int retroarch_get_rotation(void)
#ifdef HAVE_ACCESSIBILITY
/* Accessibility */
int speak_pid = 0;
static int speak_pid = 0;
bool is_accessibility_enabled(void)
{
@ -29317,13 +29321,6 @@ bool is_input_keyboard_display_on(void)
#endif
}
#ifdef HAVE_ACCESSIBILITY
bool accessibility_speak(const char* speak_text)
{
return accessibility_speak_priority(speak_text, 10);
}
#endif
#if defined(__MACH__) && defined(__APPLE__)
#include <TargetConditionals.h>
#if TARGET_OS_OSX && !defined(EMSCRIPTEN)
@ -29400,7 +29397,7 @@ static char* accessibility_mac_language_code(const char* language)
return "";
}
bool is_narrator_running_macos(void)
static bool is_narrator_running_macos(void)
{
if (kill(speak_pid, 0) == 0)
return true;
@ -29621,14 +29618,14 @@ static bool accessibility_speak_windows(
#endif
#if (defined(__linux__) || defined(__unix__)) && !defined(EMSCRIPTEN)
bool is_narrator_running_linux(void)
static bool is_narrator_running_linux(void)
{
if (kill(speak_pid, 0) == 0)
return true;
return false;
}
bool accessibility_speak_linux(
static bool accessibility_speak_linux(
const char* speak_text, const char* language, int priority)
{
int pid;
@ -29725,7 +29722,8 @@ bool accessibility_speak_priority(const char* speak_text, int priority)
return true;
}
bool is_narrator_running(void)
#ifdef HAVE_ACCESSIBILITY
static bool is_narrator_running(void)
{
if (is_accessibility_enabled())
{
@ -29739,8 +29737,10 @@ bool is_narrator_running(void)
}
return true;
}
#endif
bool accessibility_speak_ai_service(
#if 0
static bool accessibility_speak_ai_service(
const char* speak_text, const char* language, int priority)
{
#if defined(HAVE_NETWORKING) && defined(HAVE_TRANSLATE)
@ -29758,7 +29758,7 @@ bool accessibility_speak_ai_service(
strlcpy(new_ai_service_url, settings->arrays.ai_service_url,
sizeof(new_ai_service_url));
if (strrchr(new_ai_service_url, '?') != NULL)
if (strrchr(new_ai_service_url, '?'))
separator = '&';
snprintf(temp_string, sizeof(temp_string),
"%csource_lang=%s&target_lang=%s&output=espeak",
@ -29782,12 +29782,15 @@ bool accessibility_speak_ai_service(
return false;
#endif
}
#endif
bool accessibility_startup_message(void)
static bool accessibility_startup_message(void)
{
/* State that the narrator is on, and also include the first menu
item we're on at startup. */
accessibility_speak("RetroArch accessibility on. Main Menu Load Core.");
accessibility_speak_priority(
"RetroArch accessibility on. Main Menu Load Core.",
10);
return true;
}
#endif