Added in fixes for accessibility feature.

This commit is contained in:
Barry Rowe 2019-12-04 10:51:50 -08:00
parent 1e6e7a698f
commit 3a67e072bb
5 changed files with 37 additions and 32 deletions

View File

@ -154,7 +154,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
if (strcmp(menu->menu_state_msg, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE))==0)
{
char current_sublabel[255];
get_current_menu_sublabel(current_sublabel);
get_current_menu_sublabel(current_sublabel, 255);
if (strcmp(current_sublabel, "")==0)
accessibility_speak(menu->menu_state_msg);
else
@ -420,9 +420,9 @@ int generic_menu_entry_action(
char title_name[255];
char speak_string[512];
strcpy(title_name, "");
strcpy(current_label, "");
get_current_menu_value(current_value);
strlcpy(title_name, "",1);
strlcpy(current_label, "",1);
get_current_menu_value(current_value, 255);
switch (action)
{
case MENU_ACTION_INFO:
@ -436,29 +436,29 @@ int generic_menu_entry_action(
case MENU_ACTION_DOWN:
case MENU_ACTION_SCROLL_UP:
case MENU_ACTION_SCROLL_DOWN:
get_current_menu_label(current_label);
get_current_menu_label(current_label, 255);
break;
case MENU_ACTION_START:
case MENU_ACTION_SELECT:
case MENU_ACTION_SEARCH:
get_current_menu_label(current_label);
get_current_menu_label(current_label, 255);
case MENU_ACTION_SCAN:
default:
break;
}
{
strcpy(speak_string, "");
strlcpy(speak_string, "",1);
if (strcmp(title_name, "") != 0)
{
strcpy(speak_string, title_name);
strcat(speak_string, " ");
strlcpy(speak_string, title_name, 255);
strlcat(speak_string, " ", 2);
}
strcat(speak_string, current_label);
strlcat(speak_string, current_label, 255);
if (strcmp(current_value, "...")!=0)
{
strcat(speak_string, " ");
strcat(speak_string, current_value);
strlcat(speak_string, " ",2);
strlcat(speak_string, current_value, 255);
}
if (strcmp(speak_string, "") != 0)

View File

@ -4130,7 +4130,7 @@ void menu_subsystem_populate(const struct retro_subsystem_info* subsystem, menu_
}
void get_current_menu_value(char* retstr)
void get_current_menu_value(char* retstr, size_t max)
{
const char* entry_label;
menu_entry_t entry;
@ -4140,10 +4140,10 @@ void get_current_menu_value(char* retstr)
menu_entry_get(&entry, 0, menu_navigation_get_selection(), NULL, true);
menu_entry_get_value(&entry, &entry_label);
strcpy(retstr, entry_label);
strlcpy(retstr, entry_label, max);
}
void get_current_menu_label(char* retstr)
void get_current_menu_label(char* retstr, size_t max)
{
const char* entry_label;
menu_entry_t entry;
@ -4153,10 +4153,10 @@ void get_current_menu_label(char* retstr)
menu_entry_get(&entry, 0, menu_navigation_get_selection(), NULL, true);
menu_entry_get_rich_label(&entry, &entry_label);
strcpy(retstr, entry_label);
strlcpy(retstr, entry_label, max);
}
void get_current_menu_sublabel(char* retstr)
void get_current_menu_sublabel(char* retstr, size_t max)
{
const char* entry_sublabel;
menu_entry_t entry;
@ -4166,5 +4166,5 @@ void get_current_menu_sublabel(char* retstr)
menu_entry_get(&entry, 0, menu_navigation_get_selection(), NULL, true);
menu_entry_get_sublabel(&entry, &entry_sublabel);
strcpy(retstr, entry_sublabel);
strlcpy(retstr, entry_sublabel, max);
}

View File

@ -281,9 +281,9 @@ int menu_entry_action(
void menu_entry_init(menu_entry_t *entry);
void get_current_menu_value(char* retstr);
void get_current_menu_label(char* retstr);
void get_current_menu_sublabel(char* retstr);
void get_current_menu_value(char* retstr, size_t max);
void get_current_menu_label(char* retstr, size_t max);
void get_current_menu_sublabel(char* retstr, size_t max);
RETRO_END_DECLS

View File

@ -4172,7 +4172,7 @@ static void handle_translation_cb(
if (string_is_equal(error_string, "No text found."))
{
RARCH_LOG("No text found...\n");
strcpy(text_string, error_string);
strlcpy(text_string, error_string, 15);
#ifdef HAVE_MENU_WIDGETS
if (menu_widgets_paused)
{
@ -29280,8 +29280,13 @@ bool accessibility_speak_linux(char* speak_text, const char* language, int prior
{
int pid;
char* voice_out = malloc(3+strlen(language));
strcpy(voice_out, "-v");
strcat(voice_out, language);
char* speed_out = malloc(3+3);
strlcpy(voice_out, "-v", 3);
strlcat(voice_out, language, 5);
strlcpy(speed_out, "-s450", 6);
if (priority < 10 && speak_pid > 0)
{
/* check if old pid is running */
@ -29314,7 +29319,7 @@ bool accessibility_speak_linux(char* speak_text, const char* language, int prior
else
{
/* child process: replace process with the espeak command */
execvp("espeak", (char* []) {"espeak", voice_out, speak_text, NULL});
execvp("espeak", (char* []) {"espeak", voice_out,speed_out, speak_text, NULL});
}
return true;
}

View File

@ -2022,23 +2022,23 @@ unsigned int retroarch_get_rotation(void);
RETRO_END_DECLS
bool is_input_keyboard_display_on();
bool is_accessibility_enabled();
bool is_input_keyboard_display_on(void);
bool is_accessibility_enabled(void);
bool accessibility_speak(char* speak_text);
bool accessibility_speak_priority(char* speak_text, int priority);
bool accessibility_startup_message();
bool accessibility_startup_message(void);
bool is_narrator_running();
bool is_narrator_running(void);
#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__)
bool is_narrator_running_windows();
bool is_narrator_running_windows(void);
bool accessibility_speak_windows(char* speak_text, const char* voice, int priority);
#elif defined(__APPLE__) && defined(__MACH__)
bool is_narrator_running_macos();
bool is_narrator_running_macos(void);
char* accessibility_mac_language_code(const char* language);
bool accessibility_speak_macos(char* speak_text, const char* voice, int priority);
#elif defined(__linux__) || defined(__unix__)
bool is_narrator_running_linux();
bool is_narrator_running_linux(void);
bool accessibility_speak_linux(char* speak_text, const char* voice, int priority);
#endif
bool accessibility_speak_ai_service(char* speak_text, const char* voice, int priority);