Patent Description:
Accessibility refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both "direct access" (i.e., unassisted access) and "indirect access" meaning compatibility with a person's assistive technology (e.g., computer screen readers). With our society's ever-growing reliance on technology, a need arose to remove barriers that prevented interaction with, or access to, computing devices by people with disabilities. For instance, different accessibility features relating to visual impairment, hearing impairment and dexterity impairment, such as magnifiers, closed captioning, and input device shortcuts, respectively, have been implemented into computing devices to make them universally accessible to people with and without disabilities.

Today, many operating systems (OSes) are designed to provide users with access to an array of different OS-level accessibility features. Such OSes typically also provide a user interface (UI) (e.g., a graphical user interface (GUI), voice interface, or the like) via which a user can turn on or off such OS-level accessibility features or adjust certain user-configurable settings associated therewith. Typically, most OS-level accessibility features are turned off by default, and a user must turn on the features and optionally adjust any user-customizable settings associated therewith to their liking. The on/off state of such OS-level accessibility features and the state of any user-configurable settings associated therewith are generally referred to herein as "OS-level accessibility settings" or "OS accessibility settings.

Many applications are also being published today that have their own application-level accessibility features and corresponding application-level accessibility settings. As used herein, the terms "application-level accessibility settings" or "application accessibility settings" generally refers to the on/off and user-customizable settings states of such application-level accessibility features. Such application-level accessibility features are typically operated and managed independently of the aforementioned OS-level accessibility features. This means that a user wishing to take advantage of accessibility features at both the OS level and the application level must manage multiple sets of overlapping and/or non-overlapping accessibility settings via entirely different UIs (e.g. an OS UI and an application UI). Interacting with these multiple UIs to adjust the various accessibility settings to the user's liking can be a very time-consuming and complicated process as the user must hunt through the respective UIs to discover and set up various accessibility features. Moreover, the process may be confusing in that the OS and the application may have a same or similar accessibility feature that is identified using different names. For instance, an OS may call the accessibility feature of displaying text on a screen "closed captioning" while an application may call the same accessibility feature "subtitling. " Such features may also be configurable in vastly different ways. Accordingly, even when a user is familiar with a particular accessibility feature at the OS level, it can be difficult for the user to find and manage an analogous feature at the application level.

<CIT> discloses a system in which accessibility profiles are built for different environments. <CIT> discloses an accessibility framework which exposes a uniform application interface to applications with accessibility functionality.

There is provided a method according to claim <NUM>. There is further provided a computing device according to claim <NUM>.

Methods, systems, and computer program products are provided for automatically configuring accessibility settings of an application. In an embodiment, an operating system (OS) and an application are both executing upon a same computing device. The OS maintains one or more user-configurable accessibility settings associated with one or more OS-level accessibility features. The application includes a settings obtainer, a settings determiner, and a settings applier. The settings obtainer sends a request to the OS for information relating to the one or more user-configurable accessibility settings of the OS and receives a response from the OS that includes the information relating to the one or more user-configurable accessibility settings of the OS. The settings determiner determines one or more application accessibility settings based on the information relating to the one or more user-configurable accessibility settings of the OS, wherein the application accessibility settings are associated with one or more application-level accessibility features. The settings applier then applies the one or more application accessibility settings to the application, either automatically or after obtaining user approval to do so.

Further features and advantages of embodiments, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the methods and systems are not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.

The following detailed description discloses numerous example embodiments. The scope of the present patent application is not limited to the disclosed embodiments, but also encompasses combinations of the disclosed embodiments, as well as modifications to the disclosed embodiments.

As described above, many operating systems (OSes) are designed to provide users with access to an array of different OS-level accessibility features. Such OSes typically also provide a user interface (UI) (e.g., a graphical user interface (GUI), voice interface, or the like) via which a user can turn on or off such OS-level accessibility features or adjust certain user-configurable settings associated therewith. Typically, most OS-level accessibility features are turned off by default, and a user must turn on the features and optionally adjust any user-customizable settings associated therewith to their liking. The on/off state of such OS-level accessibility features and the state of any user-configurable settings associated therewith are generally referred to herein as "OS-level accessibility settings" or "OS accessibility settings.

Embodiments described herein help address these and other issues related to discovering, activating and configuring application-level accessibility settings associated with application-level accessibility features. For instance, embodiments described herein relate to an application that is configured to request and receive information from an OS about OS-level accessibility settings associated with OS-level accessibility features. In embodiments, to achieve this, the application communicates with the OS via an application programming interface (API) that is exposed by the OS. However, this communication may be performed in various ways, such as via a different interface.

Once the application has received the information from the OS about the OS-level accessibility settings, the application determines one or more application-level accessibility settings associated with application-level accessibility features. This determination is based on the received information and may be performed in various ways. For example, the application may determine the application-level accessibility settings associated with application-level accessibility features based on a correspondence to the OS-level accessibility settings associated with OS-level accessibility features. This correspondence may include, for example, a correspondence between settings associated with a same or similar feature (e.g., OS-level closed captioning is turned on, so also turn on application-level closed captioning) or a correspondence between settings associated with features that support a same or similar disability (e.g., an OS-level feature is turned on that supports the hearing impaired, so an application-level feature is turned on that is also for the hearing impaired, even though the OS-level feature and application-level feature are completely different).

Upon determining the one or more application-level accessibility settings associated with the identified application-level accessibility features, the application is further configured to apply the one or more application-level accessibility settings to the application. In this way, the application-level accessibility settings are automatically self-configured based on information received from the OS related to the OS-level accessibility settings. In embodiments, and discussed in greater detail hereinafter, the application-level accessibility settings may be applied to the application in various ways, including automatically applying them to the application or applying them upon receiving user confirmation or approval.

Embodiments described herein further enable the exporting of information related to the OS-level accessibility settings and/or the application-level accessibility settings to remote computing devices. In embodiments, and discussed in greater detail hereinafter, remote applications and programs are thus enabled to automatically self-configure their corresponding accessibility settings associated with accessibility features based on the exported information. In this way, additional applications of the user executing on remote computing devices may be likewise configured, thus improving the user experience at the remote computing devices.

Thus, in accordance with embodiments described herein, the user experience with an application having accessibility features may be greatly improved in that the application may automatically configure its own accessibility features to accommodate a user's needs or preferences without the user having to provide any input to the application (or with only simple approvals or confirmations from the user). This avoids the user having to independently discover and manage multiple sets of overlapping and/or non-overlapping accessibility settings via entirely different UIs (e.g. an OS UI and an application UI), which as noted above can be a very time-consuming and complicated process. Indeed, embodiments may enable a user to take advantage of application-level accessibility features that they might otherwise be unaware of, since such features may not be easily discovered or accessed by the user via the application's UI. Furthermore, such application-level features might be completely different from those offered by the OS.

Embodiments described herein also improve the functioning of the computing devices upon which such applications are executed. For example, since the accessibility settings of the application may be determined automatically without requiring the user to have one or more GUI interactions as they navigate through the application's menus, the efficiency of the computing device is greatly improved. In particular, the consumption of processor, memory, display and power resources of the computing device that would otherwise occur due to such GUI interactions may be avoided by embodiments described herein by virtue of automatically determining and configuring the application accessibility settings. Thus, these resources may all be conserved. Also, since the application can automatically optimize the settings of the application-level accessibility features for a particular user, embodiments described herein automatically improve the user interface of the application for the user.

Such embodiments may be implemented in various ways. For instance, <FIG> shows a block diagram of a system <NUM> for automatically configuring accessibility settings of an application based on application settings of an operating system (OS), according to an example embodiment. As shown in <FIG>, system <NUM> includes a computing device <NUM>. Computing device <NUM> may comprise any type of computing device, including a mobile computing device (e.g., a Microsoft@ Surface® device, a laptop computer, a notebook computer, a tablet, a netbook, a smart phone, or a portable gaming device) or a stationary computing device (e.g., a desktop computer or a gaming console). Embodiments described herein may also be applicable to wearable computing devices, virtual reality devices or systems, mixed reality devices or systems, augmented reality devices or systems, or any device or system that includes an OS and an application executing thereon.

Computing device <NUM> represents a computing device configured to execute an OS and an application thereon. For instance, and as shown in <FIG>, computing device <NUM> includes an OS <NUM> and an application <NUM> that runs on (i.e., utilizes resources of) OS <NUM> in a well-known manner. OS <NUM> manages hardware and software resources of computing device <NUM> and provides common services for computer programs, such as application <NUM>.

OS <NUM> includes an OS user interface <NUM> that includes a number of OS-level accessibility features that enable a user to interact with OS <NUM> in a variety of ways. For example, such OS-level accessibility features may include features that enable a user having a disability or impairment to better interact with OS <NUM> via OS user interface <NUM>. OS user interface <NUM> also includes functionality that enables a user to turn on and off such features and optionally adjust various settings associated with such features. These OS-level accessibility settings are stored by OS <NUM> in storage <NUM> associated with OS <NUM> as OS-level accessibility settings <NUM>. Thus, for example, when a user interacts with OS user interface <NUM> to change accessibility settings associated with the OS-level accessibility features, OS <NUM> may update such settings in storage <NUM> to reflect any changes to the settings made by the user.

As noted above, the OS-level accessibility features may include features that facilitate interaction with OS <NUM> by a user with a disability. For instance, such OS-level accessibility features may improve the user experience for those users having a visual impairment, a hearing impairment, a dexterity impairment, a speech impairment, a motor impairment, a cognitive impairment, repetitive stress, color blindness, or the like. These OS-level accessibility features may include, for example, a text-to-speech feature, an auditory feedback feature, a tactile interface feature, a screen-enlargement feature, visible alerts that accompany audio alerts, a closed captioning feature, a speech-to-text feature, head-mounted input devices and eye-tracking, a mouth-stick feature, a block-suck tube feature, a tongue-activated joystick feature, a chording feature, a sticky keys feature, a slow keys feature, a scanning feature, a reminder feature, a grayscale feature, or the like. However, these examples are not intended to be exhaustive or limiting in any way, and the OS-level accessibility features may include any feature presently known or hereinafter developed for improving access to an OS.

OS-level accessibility settings <NUM> associated with an OS-level accessibility feature may include whether the feature is turned on or off, whether any sub-features of the feature are turned off, as well as any other user-configurable aspect, parameter, value, or mode associated with the feature that may be stored by OS <NUM> and used to implement the feature on behalf of a user.

Application <NUM> may comprise a computer program or process (or a set of computer programs or processes) that operates to perform one or more functions, tasks, or activities for the benefit of a user. Application <NUM> may comprise any type of application including but not limited to a collaboration application (e.g., Microsoft Teams®), a productivity application (e.g., Microsoft@ Word®, Microsoft@ PowerPoint®, etc.), a database application (e.g., QuickBooks®, Microsoft@ Excel®), an e-mail application (e.g., Microsoft® Outlook®), a search application, a social networking application, a messaging application, a video player application, a music delivery application, a financial services application, a news application, or a game application. However, these examples are not intended to be exhaustive or limiting in any way, and application <NUM> may comprise any type of application whether presently known or hereinafter developed.

Application <NUM> includes an application user interface <NUM> that includes a number of application-level accessibility features that enable a user to interact with application <NUM> in a variety of ways. For example, such application-level accessibility features may include features that enable a user having a disability or impairment to better interact with application <NUM> via application user interface <NUM>. Application user interface <NUM> also includes functionality that enables a user to turn on and off such features and optionally adjust various settings associated with such features. These application-level accessibility settings are stored by application <NUM> in storage <NUM> associated with application <NUM> as application-level accessibility settings <NUM>. Thus, for example, when a user interacts with application user interface <NUM> to change accessibility settings associated with the application-level accessibility features, application <NUM> may update such settings in storage <NUM> to reflect any changes to the settings made by the user.

The application-level accessibility features may include features that facilitate interaction with application <NUM> by a user with a disability. For instance, such application-level accessibility features may improve the user experience for those users having a visual impairment, a hearing impairment, a dexterity impairment, a speech impairment, a motor impairment, a cognitive impairment, repetitive stress, color blindness, or the like. These application-level accessibility features may include, for example, a text-to-speech feature, an auditory feedback feature, a tactile interface feature, a screen-enlargement feature, visible alerts that accompany audio alerts, a closed captioning feature, a speech-to-text feature, head-mounted input devices and eye-tracking, a mouth-stick feature, a block-suck tube feature, a tongue-activated joystick feature, a chording feature, a sticky keys feature, a slow keys feature, a scanning feature, a reminder feature, a grayscale feature, or the like. However, these examples are not intended to be exhaustive or limiting in any way, and the application-level accessibility features may include any feature presently known or hereinafter developed for improving access to an application.

Application-level accessibility settings <NUM> associated with an application-level accessibility feature may include whether the feature is turned on or off, whether any sub-features of the feature are turned off, as well as any other user-configurable aspect, parameter, value, or mode associated with the feature that may be stored by application <NUM> and used to implement the feature on behalf of a user.

It is noted that certain application-level accessibility features of application <NUM> may be the same as or similar to certain OS-level accessibility features of OS <NUM>. However, certain application-level features of application <NUM> may be entirely different from (e.g., non-overlapping with) the OS-level accessibility features of OS <NUM>. Moreover, even where OS <NUM> and application <NUM> have similar accessibility features, the user-configurable settings that are exposed to the user to manage such features may be very different as between OS <NUM> and application <NUM>.

Application <NUM> is configured to obtain information from OS <NUM> relating to some or all of OS-level accessibility settings <NUM> and automatically determine certain application-level accessibility settings <NUM> based on such information. To achieve this, application <NUM> further includes a settings obtainer <NUM>, a settings determiner <NUM>, and a settings applier <NUM>.

Settings obtainer <NUM> is configured to request the information relating to OS-level accessibility settings <NUM> associated with the OS-level accessibility features of OS <NUM>. For example, settings obtainer <NUM> may be configured to send such a request to OS <NUM> via an application programming interface (API) of OS <NUM>.

Settings obtainer <NUM> is configured to receive a response from OS <NUM> that includes the information relating to OS-level accessibility settings <NUM> associated with the OS-level accessibility features of OS <NUM>. For example, settings obtainer may be configured to receive such information via an API of OS <NUM>. Such information may include, for example, a list of the OS-level accessibility features that have been activated (e.g., turned on) by a user of computing device <NUM>, a state of any user-configurable aspects of those features, and/or a description of those features. However, these are only examples, and other information may be included, including information relating to features that have not been activated by the user, information about a type, frequency or manner of interaction of the user with a particular OS-level accessibility feature, or the like.

Settings determiner <NUM> is configured to determine one or more of application-level accessibility settings <NUM> associated with one or more application-level accessibility features based on the received information relating to OS-level accessibility settings <NUM>. Settings determiner <NUM> determines certain application-level accessibility settings <NUM> associated with certain application-level accessibility features based on a correspondence to certain OS-level accessibility settings <NUM> associated with certain OS-level accessibility features. This correspondence may include, for example, a correspondence between settings associated with a same or similar feature (e.g., OS-level closed captioning is turned on, so also turn on application-level closed captioning) or a correspondence between settings associated with features that support a same or similar disability (e.g., an OS-level feature is turned on that supports the hearing impaired, so an application-level feature is turned on that is also for the hearing impaired, even though the OS-level feature and application-level feature are completely different). However, these examples are not intended to be limiting and settings determiner <NUM> may determine one or more of application-level accessibility settings <NUM> based on the received information relating to OS-level accessibility settings <NUM> in different ways.

Settings applier <NUM> is further configured to apply the determined application accessibility settings to application <NUM>. In embodiments, said applying may include turning one or more of the application-level accessibility features of application <NUM> on or off. Said applying may also include configuring a user-configurable aspect, parameter, value, or mode associated with a setting of the application-level accessibility feature. Once the determined application accessibility settings have been applied by settings applier, they may be stored as part of application-level accessibility settings <NUM> in storage <NUM>.

Settings applier <NUM> may apply the determined application accessibility settings in a variety of ways. For example, settings applier <NUM> may automatically apply the determined application accessibility settings to application <NUM> without any user input. Alternatively, settings applier <NUM> may first prompt a user of application <NUM> for approval or confirmation prior to applying the determined application accessibility settings to application <NUM>. In either case, as was noted above, the user experience is improved by virtue of application <NUM> self-configuring its accessibility settings on behalf of the user and, furthermore, the functioning of computing device <NUM> is improved by enabling such accessibility settings to be determined in a manner that does not require the user to interact with application user interface <NUM>, thereby consuming various resources of computing device <NUM>.

In an embodiment, application <NUM> may be configured to perform the foregoing self-configuration process a first time application <NUM> is launched on computing device <NUM>. In an alternate embodiment, application <NUM> may perform the foregoing self-configuration process as part of an installation process of application <NUM>. In certain embodiments, the foregoing self-configuration process may be performed by an installer program associated with application <NUM> rather than by application <NUM> itself.

In an embodiment, the foregoing self-configuration process may be performed in response to certain user input. For example, a user may interact with application user interface <NUM> of application <NUM> to activate a self-configuration feature thereof that will perform the aforementioned operations to automatically configure application-level accessibility settings <NUM>. Application <NUM> may also be configured to proactively prompt the user to see if the user wishes to activate the self-configuration feature (e.g., at first start-up, in response to determining that the user is having difficulty interacting with the application, or the like).

In an embodiment, the foregoing self-configuration process may be performed on a periodic or intermittent basis by application <NUM>. This may be done, for example, to ensure that application-level accessibility settings <NUM> are kept in synchronization with OS-level accessibility settings <NUM> as the OS-level accessibility settings <NUM> are changed over time, or for other reasons. For instance, application <NUM> may be configured to perform the foregoing self-configuration process on a daily, weekly, monthly or other basis by default, as configured by the user, or as configured by a computing device administrator. However, these examples are not intended to be limiting and application <NUM> may perform the foregoing self-configuration process any number of times in a periodic or non-periodic manner.

To help illustrate the foregoing, <FIG> will now be described. In particular, <FIG> shows a flowchart <NUM> of a method for automatically configuring accessibility settings of an application based on application settings of an OS, according to an example embodiment. In an embodiment, flowchart <NUM> may be implemented by application <NUM> of <FIG>. For the purposes of illustration, flowchart <NUM> of <FIG> is described with continued reference to <FIG>. Other structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following discussion regarding flowchart <NUM> and <FIG>.

Flowchart <NUM> of <FIG> begins with step <NUM>. In step <NUM>, a request is sent to an OS executing on the computing device for information relating to one or more accessibility settings of the OS. For instance, and with reference to <FIG>, settings obtainer <NUM> may send a request to OS <NUM> executing on computing device <NUM> for information relating to OS-level accessibility settings <NUM> of OS <NUM>.

In step <NUM>, a response is received from the operating system that includes the information relating to the one or more accessibility settings of the operating system. For instance, and with reference to <FIG>, settings obtainer <NUM> may receive a response from OS <NUM> that includes information relating to OS-level accessibility settings <NUM> of OS <NUM>. In embodiments, the response may include information such as a list of the OS-level accessibility features that have been activated (e.g., turned on) by a user of computing device <NUM>, a state of any user-configurable aspects of those features, and/or a description of those features. However, these are only examples, and other information may be included, including information relating to features that have not been activated by the user, information about a type, frequency or manner of interaction of the user with a particular OS-level accessibility feature, or the like.

In step <NUM>, one or more application accessibility settings are determined based on the information relating to the one or more accessibility settings of the operating system. For instance, and with reference to <FIG>, settings determiner <NUM> may determine various application accessibility settings based on information relating to OS-level accessibility settings <NUM> of OS <NUM>.

In step <NUM>, the one or more application accessibility settings determined in step <NUM> are applied to the application. For instance, and with reference to <FIG>, settings applier <NUM> may apply the determined application accessibility settings to application <NUM>. As noted above, settings applier <NUM> may perform this function in a variety of ways. For instance, settings applier <NUM> may apply the determined application accessibility settings to application automatically without requiring user input. Alternatively, settings applier <NUM> may apply the determined application accessibility settings to application <NUM> upon user approval, such as user approval in response to a prompt.

<FIG> shows a flowchart <NUM> of a method for applying automatically-determined application-level accessibility settings to an application, according to an example embodiment. In an embodiment, flowchart <NUM> may be implemented by settings applier <NUM> of <FIG>. For the purposes of illustration, flowchart <NUM> of <FIG> is described with continued reference to <FIG> and with respect to <FIG> shows a block diagram of a system <NUM> for prompting a user prior to applying automatically-determined application-level accessibility settings to an application, according to an example embodiment. As shown in <FIG>, system <NUM> includes computing device <NUM> which, in this embodiment, includes a display screen <NUM> within which application user interface <NUM> is displayed. Other structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following discussion regarding flowchart <NUM>, <FIG> and <FIG>.

Flowchart <NUM> begins with step <NUM>. In step <NUM>, a user is prompted for an approval to apply the one or more application accessibility settings to the application. As noted above, this prompt may follow a determination of the one or more application accessibility settings based on information relating to the one or more accessibility settings of the operating system. For example, if the information relating to the one or more accessibility settings of the operating system indicates that the user is hearing impaired, then one or more application accessibility settings may be determined that would improve the user experience for a user that is hearing impaired, such as using closed captions. For instance, and with reference to <FIG> and <FIG>, settings applier <NUM> may prompt the user of application <NUM>, which in an example is Teams, by displaying the prompt "Do you want to enable closed captions in Teams? Yes - No" via application user interface <NUM> within display screen <NUM>. Accordingly, the user may select "Yes" or "No" and settings applier <NUM> will respond accordingly. For instance, if the user selects "No" then settings applier <NUM> will not apply the determined application accessibility settings to application <NUM>. However, if the user selects "Yes" then settings applier <NUM> will apply the determined application accessibility settings to application <NUM>.

In step <NUM>, the one or more application accessibility settings are applied to the application responsive to receiving an approval from the user. For instance, and with reference to <FIG> and <FIG>, upon the user selecting "Yes", settings applier <NUM> will apply the determined application accessibility settings to application <NUM>.

As noted above, in embodiments, the application accessibility settings of application <NUM> may be automatically determined in various ways. For instance, <FIG> shows a flowchart <NUM> of a method for automatically determining one or more application accessibility settings, according to an example embodiment. In an embodiment, flowchart <NUM> may be implemented by settings determiner <NUM> of <FIG>. For the purposes of illustration, flowchart <NUM> of <FIG> is described with continued reference to <FIG>. Other structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following discussion regarding flowchart <NUM> and <FIG>.

Flowchart <NUM> begins with step <NUM>. In step <NUM>, the one or more application accessibility settings are identified based on a correspondence to the one or more accessibility settings of the operating system. For instance, and with reference to <FIG>, settings determiner <NUM> may determine the application-level accessibility settings associated with the application-level accessibility features based on a correspondence to the OS-level accessibility settings associated with OS-level accessibility features. This correspondence may include, for example, a correspondence between settings associated with a same or similar feature (e.g., OS-level closed captioning is turned on, so also turn on application-level closed captioning) or a correspondence between settings associated with features that support a same or similar disability (e.g., an OS-level feature such as closed captioning is turned on that supports the hearing impaired, so an application-level feature such as speech-to-text is turned on since that is also for the hearing impaired, even though the OS-level feature and application-level feature are completely different).

In any of the above-described scenarios, settings determiner <NUM> may be configured to automatically identify and configure application-level accessibility settings associated with application-level accessibility features based on information about OS-accessibility settings associated with OS-level accessibility features. This feature improves the user experience since the user does not have to search through a list of application-level accessibility settings <NUM> to identify and configure various accessibility settings that may be of interest to them. Furthermore, the user may not even know of some of the accessibility settings available in application-level accessibility settings <NUM> either because they are new or not used very often-however, the aforementioned techniques can cause those features to become automatically enabled for the user.

In embodiments, application <NUM> may send the request for information about the OS-level accessibility settings to OS <NUM> in a variety of ways. For instance, <FIG> shows a flowchart <NUM> of a method for sending to an OS a request for information about accessibility settings of the OS, according to one example embodiment. In embodiments, flowchart <NUM> may be implemented by settings obtainer <NUM>. As shown in <FIG>, flowchart <NUM> begins with step <NUM>. In step <NUM>, the request is sent via an API of the OS. For instance, and with continued reference to <FIG>, settings obtainer <NUM> sends the request for information via an API of OS <NUM>. However, this example is not intended to be limiting and settings obtainer <NUM> may send the request for information in various other ways, such as though a different kind of interface.

Likewise, in embodiments, application <NUM> may receive a response from OS <NUM> in various ways. For instance, <FIG> shows a flowchart <NUM> of a method for receiving from an OS a response to a request for information about accessibility settings of the OS according to an example embodiment. As shown in <FIG>, flowchart <NUM> begins with step <NUM>. In step <NUM>, the response including the information is received via the API of the OS. For instance, and with reference to <FIG>, settings obtainer <NUM> receives the response including the information via the API of OS <NUM>. However, this example is not intended to be limiting and settings obtainer <NUM> may receive the response including the information in various other ways, such as through a different kind of interface.

Although the foregoing contemplates an application obtaining information from an OS running on the same computing device to automatically determine application-level accessibility settings, it should be noted that in further embodiments, information about the OS-level accessibility settings of an OS and/or information about the application-level accessibility settings of an application may be exported from a first computing device to one or more remote computing devices to enable applications executing on remote computing devices to also self-configure their accessibility settings. For example, <FIG> shows a flowchart <NUM> of a method for exporting information relating to accessibility settings of an OS and/or information relating to accessibility settings of an application for use in automatically-determining accessibility settings of another application, according to an example embodiment. For the purposes of illustration, flowchart <NUM> of <FIG> is described with continued reference to <FIG> and with reference to <FIG>.

<FIG> shows a block diagram of a system <NUM> for exporting information relating to accessibility settings of an OS and/or information relating to accessibility settings of an application for use in automatically-determining accessibility settings of another application, according to an example embodiment. As shown in <FIG>, a computing device <NUM> includes an OS <NUM> and an application <NUM> which each include a settings exporter <NUM> and <NUM>, respectively. Computing device <NUM> is an example of computing device <NUM> of <FIG>, OS <NUM> is an example of OS <NUM> of <FIG>, and application <NUM> is an example of application <NUM> of <FIG>. Furthermore, information <NUM> is an example of information relating to OS-level accessibility settings <NUM> of <FIG> and information <NUM> is an example of information relating to application-level accessibility settings <NUM> of <FIG>.

As shown in <FIG>, system <NUM> includes a cloud-based storage system <NUM> executing in a cloud <NUM>, a computing device <NUM>, and a computing device <NUM>. Cloud-based storage system <NUM> may comprise, for example, one or more servers or other cloud-based computing devices that are operable to store data, while computing device <NUM> and <NUM> may comprise any type of computing devices including mobile computing devices (e.g., a Microsoft® Surface® device, a laptop computer, a notebook computer, a tablet, a netbook, a smart phone, or a portable gaming device) or stationary computing devices (e.g., a desktop computer or a gaming console). It is noted that although only a certain number of computing devices are shown in system <NUM>, it should be understood that any number of such devices may exist in system <NUM>.

Network <NUM> represents one or more physical links between computing devices that enable the communication of data there between. Network <NUM> may include any type of network, including but not limited to a local area network (LAN), wide area network (WAN) such as the Internet, a telecommunication network, or the like. Network <NUM> may further comprise one or more wired and/or wireless networks or links. Communication over network <NUM> may be carried out using any of a wide variety of well-known wired and wireless network communication protocols. Other structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following discussion regarding flowchart <NUM> and <FIG> and <FIG>.

Flowchart <NUM> begins with step <NUM>. In step <NUM>, one or more of the information relating to the one or more accessibility settings of the operating system or information relating to the one or more application accessibility settings are exported to a remote computing device for use in configuring at least one other application. In the example shown in <FIG>, settings exporter <NUM> may export information <NUM> to cloud-based storage system <NUM> where it may be accessed by computing device <NUM> and/or computing device <NUM>. Accordingly, information <NUM> may be used to configure an application executing on computing device <NUM> and/or computing device <NUM>. For instance, information <NUM> may include information relating to OS-level accessibility settings associated with OS-level accessibility features. As such, information <NUM> may be used to determine and apply one or more application-level accessibility settings of computing device <NUM> and/or computing device <NUM>. The one or more application-level accessibility settings may be applied automatically or upon user approval, such as in response to a prompt.

Likewise, settings exporter <NUM> may export information <NUM> to cloud-based storage system <NUM> where it may be accessed by computing device <NUM> and/or computing device <NUM>. Accordingly, information <NUM> may be used to configure an application executing on computing device <NUM> and/or computing device <NUM>. For instance, information <NUM> may include information relating to application-level accessibility settings associated with application-level accessibility features. As such, information <NUM> may be used to determine and apply one or more application-level accessibility settings of computing device <NUM> and/or computing device <NUM>. The one or more application-level accessibility settings may be applied automatically or upon user approval, such as in response to a prompt.

In alternate embodiments, settings exporter <NUM> may export information <NUM> and/or information <NUM> directly to either of computing device <NUM> or computing device <NUM> and such information may be utilized by those devices, or applications running thereon, to determine and apply one or more application-level accessibility settings of computing device <NUM> or computing device <NUM>, respectively. The one or more application-level accessibility settings may be applied automatically or upon user approval, such as in response to a prompt.

In still further embodiments, a first application executing on a first computing device can communicate with a second application executing on the same computing device to obtain application-level accessibility settings from the second application. The first application can then use the application-level accessibility settings from the second application to determine its own application-level accessibility settings. The first application may communicate with the second application, for example, via a suitable API. The techniques by which the first application determines its own application-level accessibility settings based on the application-level accessibility settings received from the second application may be similar to those described herein for determining application-level accessibility settings based on OS-level accessibility settings, although other methods may be used as well. Such embodiments advantageously enable applications to self-configure their accessibility settings based on the accessibility settings of other, different, applications.

Computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> may be implemented in hardware, or hardware combined with one or both of software and/or firmware. For example, Computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> may be implemented as computer program code/instructions configured to be executed in one or more processors and stored in a computer readable storage medium. Alternatively, Computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> may be implemented as hardware logic/electrical circuitry.

For instance, in an embodiment, one or more, in any combination, of computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> may be implemented together in a SoC. The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a central processing unit (CPU), microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits, and may optionally execute received program code and/or include embedded firmware to perform functions.

<FIG> depicts an exemplary implementation of a computing device <NUM> in which embodiments may be implemented. For example, computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> may each be implemented in one or more computing devices similar to computing device <NUM> in stationary or mobile computer embodiments, including one or more features of computing device <NUM> and/or alternative features. The description of computing device <NUM> provided herein is provided for purposes of illustration and is not intended to be limiting. Embodiments may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s).

A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include operating system <NUM>, one or more application programs <NUM>, other programs <NUM>, and program data <NUM>. Application programs <NUM> or other programs <NUM> may include, for example, computer program logic (e.g., computer program code or instructions) for implementing any of the features of computing device <NUM>, OS <NUM>, application <NUM>, OS user interface <NUM>, storage <NUM>, application user interface <NUM>, settings obtainer <NUM>, settings determiner <NUM>, settings applier <NUM>, storage <NUM>, OS-level accessibility settings <NUM>, application-level accessibility settings <NUM>, display screen <NUM>, computing device <NUM>, operating system <NUM>, application <NUM>, settings exporter <NUM>, settings exporter <NUM>, cloud <NUM>, cloud-based storage system <NUM>, computing device <NUM>, computing device <NUM>, information <NUM>, information <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, flowchart <NUM>, and/or flowchart <NUM> (or any one or more steps of such flowcharts), and/or further embodiments described herein.

A user may enter commands and information into computing device <NUM> through input devices such as keyboard <NUM> and pointing device <NUM>.

Display screen <NUM> may be external to or incorporated in computing device <NUM>.

A method performed by an application executing on a computing device is described herein. The method comprises sending a request to an operating system executing on the computing device for information relating to one or more accessibility settings of the operating system; receiving a response from the operating system that includes the information relating to the one or more accessibility settings of the operating system; determining one or more application accessibility settings based on the information relating to the one or more accessibility settings of the operating system; and applying the one or more application accessibility settings to the application.

In one embodiment of the foregoing method, the applying the one or more application accessibility settings to the application comprises: prompting a user for an approval to apply the one or more application accessibility settings to the application; and applying the one or more application accessibility settings to the application responsive to receiving the approval from the user.

In another embodiment of the foregoing method, determining the one or more application accessibility settings based on the information relating to the one or more accessibility settings of the operating system comprises: identifying the one or more application accessibility settings based on a correspondence to the one or more accessibility settings of the operating system.

In another embodiment of the foregoing method, sending the request comprises sending the request via an application programming interface (API) of the operating system and wherein receiving the response comprises receiving the response via the API of the operating system.

In another embodiment of the foregoing method, the application is configured to perform the sending, receiving, determining and applying steps on a periodic basis.

In another embodiment of the foregoing method, the one or more application accessibility settings comprise a setting that facilitates interaction with the application by a user with a disability.

In another embodiment of the foregoing method, the one or more application accessibility settings include at least one of: a screen reader feature; a magnifier; closed captioning; or input device shortcuts.

In another embodiment of the foregoing method, the method further comprises exporting one or more of the information relating to the one or more accessibility settings of the operating system or information relating to the one or more application accessibility settings to a remote computing device for use in configuring at least one other application.

In another embodiment of the foregoing method, said applying the one or more application accessibility settings to the application comprises turning one of the one or more application accessibility settings on or off.

A computing device is described herein. The computing device comprises one or more processor circuits; and one or more memory devices communicatively connected to the one or more processor circuits, the one or more memory devices storing computer program logic that is executed by the one or more processor circuits, the computer program logic comprising: an operating system that provides one or more user-configurable accessibility settings; and an application comprising: a settings obtainer configured to send a request to the operating system for information relating to the one or more user-configurable accessibility settings of the operating system and to receive a response from the operating system that includes the information relating to the one or more user-configurable accessibility settings of the operating system; a settings determiner configured to determine one or more application accessibility settings based on the information relating to the one or more user-configurable accessibility settings of the operating system; and a settings applier configured to apply the one or more application accessibility settings to the application.

In one embodiment of the foregoing computing device, the settings applier is configured to: prompt the user for an approval to apply the one or more application accessibility settings to the application; and apply the one or more application accessibility settings to the application responsive to receiving the approval from the user.

In another embodiment of the foregoing computing device, the settings determiner is further configured to: identify the one or more application accessibility settings based on a correspondence to the one or more user-configurable accessibility settings of the operating system.

In another embodiment of the foregoing computing device, the settings obtainer is configured to send the request via an application programming interface (API) of the operating system and to receive the response via the API of the operating system.

In another embodiment of foregoing computing device, the one or more application accessibility settings comprise a setting that facilitates interaction with the application by a user with a disability.

In another embodiment of the foregoing computing device, the one or more application accessibility settings include at least one of: a screen reader feature; a magnifier; closed captioning; or input device shortcuts.

A computer-readable medium having computer program logic recorded thereon that when executed by at least one processor causes the at least one processor to perform a method is described herein. The method comprises: sending a request to a first application executing on a computing device for information relating to one or more accessibility settings of the first application; receiving a response from the first application that includes the information relating to the one or more accessibility settings of the first application; determining one or more application accessibility settings of a second application based on the information relating to the one or more accessibility settings of the first application; and applying the one or more application accessibility settings of the second application to the second application.

In one embodiment of the foregoing computer-readable medium, the applying the one or more application accessibility settings of the second application to the second application comprises: prompting a user for an approval to apply the one or more application accessibility settings of the second application to the second application; and applying the one or more application accessibility settings of the second application to the second application responsive to receiving the approval from the user.

In another embodiment of the foregoing computer-readable medium, the determining the one or more application accessibility settings of the second application based on the information relating to the one or more accessibility settings of the first application comprises: identifying the one or more application accessibility settings of the second application based on a correspondence to the one or more accessibility settings of the first application.

In another embodiment of the foregoing computer-readable medium, sending the request comprises sending the request via an application programming interface (API) and wherein receiving the response comprises receiving the response via the API.

In another embodiment of the foregoing computer-readable medium, the one or more application accessibility settings of the second application comprise a setting that facilitates interaction with the second application by a user with a disability.

Claim 1:
A method performed by an application (<NUM>) executing on a computing device, characterized in that the method comprises:
sending a request from the application to an operating system, OS, (<NUM>) executing on the computing device (<NUM>) for information relating to one or more OS accessibility settings defining one or more of OS-level accessibility features that facilitate a user's interaction with the computing device;
receiving a response at the application from the operating system (<NUM>) that includes the information relating to the one or more OS accessibility settings;
determining, based on the received response, a correspondence between one or more of OS-level accessibility features and one or more application-level accessibility features, wherein the one or more application-level accessibility features facilitate the user's interaction with the application;
determining at the application, based on the determined correspondence, one or more application (<NUM>) accessibility settings defining the one or more application-level accessibility features; and
applying the one or more application (<NUM>) accessibility settings to a user interface associated with the application (<NUM>).