Assistive technologies are software or hardware products that make software applications or operating systems accessible to individuals with a range of disabilities, such as impaired mobility, sight, hearing, etc. Examples of assistive technologies include magnifiers, screen readers, and Braille displays. These products use a variety of data interception techniques throughout the operating system in order to operate. Generally, assistive technologies intercept graphics primitive function calls at the display driver interface (DDI) level and use the operating system kernel state to build off-screen models. Such techniques often cause system instability and crashes.
Various technologies and techniques are disclosed that improve the operation of accessibility applications. A graphics pipe is provided that can be called in user mode from multiple accessibility programs simultaneously and/or separately. A request is received from an accessibility application to access the graphics pipe, and a connection is established. The accessibility application listens to the graphics pipe for particular content of interest and builds a model based on that content. The model is used to deliver content in an accessibility application to an end user appropriately. Screen captures can be performed on at least part of the content and then rendered onto another surface.
This Summary was provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
For the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiments illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope is thereby intended. Any alterations and further modifications in the described embodiments, and any further applications of the principles as described herein are contemplated as would normally occur to one skilled in the art.
The system may be described in the general context as an application that improves the operation of accessibility applications and their related assistive technologies, such as screen readers, screen magnifiers, and Braille displays. One or more of the techniques described herein can be implemented as features within a graphics pipe application, or from any other type of program or service that facilitates accessibility scenarios. As described in further detail herein, in one implementation of the system, a graphics pipe is provided that can be called in user mode from multiple accessibility programs simultaneously. In another implementation, the accessibility application listens to the graphics pipe for particular content of interest and builds a model based on that content. The model is used to deliver content in an accessibility application to an end user appropriately.
As shown in
In one implementation, accessibility application 22 is coupled to graphics pipe 21 in read-only user mode over communication pathway 28, and serves as screen reader 34. Accessibility application 24 is coupled to graphics pipe 21 in read and/or update user mode over communication pathway 30, and serves as a screen magnifier 36. Similarly, accessibility application 26 is coupled to graphics pipe 21 in read-only user mode over communication pathway 32, and serves as a Braille display. In one implementation, screen readers and Braille displays do not need to alter the content of graphics pipe 21, so their respective connections to graphics pipe 21 are read-only. Numerous other accessibility applications and assistive technologies could be used instead of or in addition to those shown in
As shown in
Additionally, device 100 may also have additional features/functionality. For example, device 100 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computing device 100 contains one or more communications interface (s) 114 that allow the device to communicate with other devices. For example, communications interface(s) 114 allows computing device 100 to communicate with one or more other computers and/or applications 115, where applicable. Examples of communications interfaces are serial ports, Universal Serial Bus (USB) ports, parallel ports, wireless communication adapters, network adapters, etc. Communications interface(s) 114 are used by computer 100 to exchange information such as communication media with external devices. Some examples of communication media are computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
Device 100 may also have input device(s) 112 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 111 such as a display, screen reader, Braille display, magnifier, speakers, printer, etc. may also be included. These devices are well known in the art and need not be discussed at length here.
Turning now to
Accessibility graphics pipe application 200 includes business logic 204, which is responsible for carrying out some or all of the techniques described herein. Business logic may include logic 206 for allowing read and/or updates to the graphics pipe by accessibility applications, logic 208 for supporting legacy content primitives, logic 210 for tagging content in the pipe with a handle to the control window, logic 212 for making off-screen content available as a bitmap, logic 214 for providing an indication that one or more assistive technologies are connected to the graphics pipe, logic 216 for allowing multiple clients to access the pipe concurrently and/or asynchronously, logic 218 for allowing owner drawn controls to be accessed through the graphics pipe, logic 220 for forcing applications to repaint upon new client connection to the graphics pipe, and other logic 222 for operating accessibility graphics pipe application 200.
In one implementation, accessibility graphics pipe application 200 resides on computing device 100. It will be understood that business logic 204 of graphics pipe application 200 can alternatively or additionally be embodied as computer-executable instructions on one or more computers and/or in different variations than shown on
Turning now to
The process begins at start point 240 with accessibility application opening a connection to graphics pipe in user mode (stage 242). In one implementation, when the accessibility application connects, the graphics pipe tells all applications to repaint (stage 244) so they will have the most current content. The graphics pipe provides content (stage 246), and the accessibility application listens to the pipe for that content (stage 248). The content can include a client status flag indicating whether or not assistive technology is connected (stage 246), and/or the content can include off-screen content rendered in bitmaps (stage 246). The accessibility application builds a model to use at least part of the pipe (stage 250). The accessibility application closes the connection to the graphics pipe when finished (stage 252). The stages are repeated for each accessibility application (one or more of 22, 24, and/or 26) that accesses the graphics pipe, which can be simultaneously and/or separately (stage 254). The process then ends at end point 256.
Turning now to
Turning now to
Turning now to
Alternatively or additionally, magnification application rescales content that it obtains from the graphics pipe, such as primitives and/or surfaces (stage 308). Any pre-composed filtering is also performed if applicable (stage 310). Magnification application composes visuals and renders the data that have been magnified (stage 312). Post-composition filtering is performed by magnification application, if applicable (stage 314). When finished, magnification application closes the connection to the graphics pipe (stage 316). The process then ends at end point 318.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. All equivalents, changes, and modifications that come within the spirit of the implementations as described herein and/or by the following claims are desired to be protected.
For example, a person of ordinary skill in the computer software art will recognize that the client and/or server arrangements, user interface screen content, and/or data layouts as described in the examples discussed herein could be organized differently on one or more computers to include fewer or additional options or features than as portrayed in the examples.
Number | Name | Date | Kind |
---|---|---|---|
5580251 | Gilkes et al. | Dec 1996 | A |
6225920 | Dayle | May 2001 | B1 |
6509911 | Shimotono | Jan 2003 | B1 |
6538660 | Celi et al. | Mar 2003 | B1 |
6546431 | Brown et al. | Apr 2003 | B1 |
6590583 | Soohoo | Jul 2003 | B2 |
6784905 | Brown et al. | Aug 2004 | B2 |
6802055 | Jade et al. | Oct 2004 | B2 |
6829746 | Schwerdtfeger et al. | Dec 2004 | B1 |
6876369 | Brown et al. | Apr 2005 | B2 |
6889337 | Yee | May 2005 | B1 |
6931151 | Weast | Aug 2005 | B2 |
6982682 | Kaulgud et al. | Jan 2006 | B1 |
7015916 | Sasaki et al. | Mar 2006 | B2 |
7119808 | Gonzalez et al. | Oct 2006 | B2 |
7119809 | McCabe | Oct 2006 | B1 |
7140024 | Kaulgud et al. | Nov 2006 | B2 |
7168049 | Day | Jan 2007 | B2 |
7287984 | Sweeney | Oct 2007 | B2 |
20010035862 | Nakamura et al. | Nov 2001 | A1 |
20010050686 | Allen | Dec 2001 | A1 |
20020085037 | Leavitt et al. | Jul 2002 | A1 |
20020091991 | Castro | Jul 2002 | A1 |
20020109725 | Suzuki et al. | Aug 2002 | A1 |
20020155419 | Banerjee et al. | Oct 2002 | A1 |
20030001854 | Jade et al. | Jan 2003 | A1 |
20030117371 | Roberts et al. | Jun 2003 | A1 |
20030117441 | Walls et al. | Jun 2003 | A1 |
20030128216 | Walls et al. | Jul 2003 | A1 |
20030137547 | Brown et al. | Jul 2003 | A1 |
20030160795 | Alcorn et al. | Aug 2003 | A1 |
20030210266 | Cragun et al. | Nov 2003 | A1 |
20040015862 | Dunn | Jan 2004 | A1 |
20040076312 | Sweeney | Apr 2004 | A1 |
20040104913 | Walls et al. | Jun 2004 | A1 |
20040117370 | Dutta et al. | Jun 2004 | A1 |
20040139370 | Bailey et al. | Jul 2004 | A1 |
20040148568 | Springer | Jul 2004 | A1 |
20040175036 | Graham | Sep 2004 | A1 |
20040218451 | Said et al. | Nov 2004 | A1 |
20050012749 | Gonzalez et al. | Jan 2005 | A1 |
20050015255 | Kaye et al. | Jan 2005 | A1 |
20050119622 | Temple | Jun 2005 | A1 |
20050166214 | Kaulgud et al. | Jul 2005 | A1 |
20050233287 | Bulatov et al. | Oct 2005 | A1 |
20050270302 | Weast | Dec 2005 | A1 |
20060290700 | Gonzalez et al. | Dec 2006 | A1 |
20070074167 | Cohrs et al. | Mar 2007 | A1 |
20070132753 | de Souza et al. | Jun 2007 | A1 |
Number | Date | Country |
---|---|---|
2342477 | Apr 2000 | GB |
2352313 | Jan 2001 | GB |
Number | Date | Country | |
---|---|---|---|
20070132753 A1 | Jun 2007 | US |