-
-
Notifications
You must be signed in to change notification settings - Fork 196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Accessibility Shortcuts Portal Proposal (org.freedesktop.portal.AT.Shortcuts
)
#1046
Comments
As an aside, I expect many more accessibility features will want a portal implementation at some point. For example, if an application already has the permission to be an assistive technology, it may want to zoom in, or move a user's mouse around (not read the position, I'm aware of the mouse position idea). Both things that are traditionally at least able to be triggered by the screen reader, even if the screen reader itself does not provide the functionality. |
And, when talking about a screen reader portal, we might allow the screen reader to request a mouse event for a window at a particular window coordinates of that window, you unfortunately need that operation for some broken websites. |
Mouse events at particular coordinates are best handled by AT-SPI, not portals. |
A counter proposal for this, that makes it harder for applications to "sneakily" make themself accessibility technology by applying bad design: instead of "requesting accessibility", have the accessibility utility via the desktop file advertise that they implement a certain aspect of accessibility. With that, require Settings (or the equivalent in e.g. KDE) to make these discoverable and possible to explicitly enable. A accessibility application would instead of nagging the user with "please let me eaves drop on you" instead issue some request via the portal to open the accessibility setting, instructing the user to actively select $APP as the "screen reader" for example. This is not new, it is how some permissions are dealt with in Android. |
Zooming in can only practically be implemented by the compositor itself. In GNOME there is possible via the a11y menu, but could perhaps be something that can be triggered via a potential accessibility portal API. |
This shouldn't need to make a screen reader your default to have it usable. I don't mind a combination of these features where:
|
Fair. And I brought it up, but let's leave this for another portal. |
Correct me if I'm wrong, but I assume one would only have one screen reader active at any point in time, as otherwise I imagine it'd be quite a noisy experience. So if you have a default bundled screen reader, it'd already be selected, thus wouldn't need to do anything to work. The only time you need to change that setting is if you have another screen reader you want to change to. If you have non-screen-reader like assistive technology that needs to have the same level of "eaves-dropping-ness", then that would need to go into that Settings panel, but installing such a thing would mean it would be discoverable, and possible to enable. There is a general problem with "nag" like permissions, which is that the user sooner or later "gives up" or doesn't care if there is a yes/no permission. In other words, they don't really help. Portals are, when possible, designed to avoid this issue. For access to files, a file selector is always presented, for sharing the screen, one have to select the screen to share, and so on. For something as problematic as getting an introspected view of everything going on on the computer we should try hard to avoid ending up with a Yes/No like dialog, and taking inspiration from Android, making it explicit configuration one is asked to do seems like a good way to mitigate things. |
Agreed..... but this makes my situation (where I switch back and forth between two screen readers for testing) an absolute nightmare. I agree from a normal users' perspective this makes sense, though. EDIT: As long as it is possible for a distribution to ship with a default screen reader, then automatically run that without user interaction, that's fine by me. I'm sure as a dev, I can find a script that'll just swap this setting for me. |
A rather peculiar use case :) but I imagine this could be scriptable in one way or the other, in most DE:s, e.g. a gsetting in gnome. |
This is critical yes, but doable with the solution I'm suggesting, I believe. |
org.freedesktop.portal.Accessibility
)
I think this is really important. Android's accessibility portal-equivalent literally does get used by malware (for example), precisely because the interface is so powerful. |
The first question is: Are being aware of input events and emitting input events (shortcuts) valid actions to say for sure that an application has accessibility features? If not (which is the case here), then an app certainly can't request accessibility access (whether through a dialog or by opening the accessibility settings). This would be a lie. (if relevant) The second question is: Is it okay to let an app potentially control the system or other apps, even if asked? Example: accessibility can send auto-generated shortcuts within apps. I don't think so. |
This is an attempt to summarize a rough proposal that was discussed on the GNOME a11y Matrix room yesterday: Assistive TechnologyAssistive Technology (AT) are rather special when it comes to the type and breadth of access they need to users system. They need to be able to read out loud what widget is focused in what window is focused, and what letter is entered in what text field. From a privacy and sandbox perspective, the needs of AT are very problematic, as they for all practical purposes need to perform total surveillance of everything user "sees" and does. It would be disastrous if a rogue application would get the same level of access that an AT gets, but at the same time, people may want to install additional or replace existing AT to help them with using the computer. So, in one way or the other, if we want AT to be distributable in a safe and relatively sandbox friendly way (e.g. Flatpak), we need a portal that can handle access to the resources the system has to make available for the AT to work. At the same time, we need to be very careful in exactly how a user can use install and use AT, without accidentally enabling malware to get the same level of access to resources regular applications shouldn't have access to. At the same time, it needs to be easy enough and discoverable how to e.g. switch to another screen reader or adding additional AT. Access typesInitially, two types of access types have high priority, and are critical to AT, that are focused upon first. Priority keyboard shortcutsPreviously, in X11, this has been implemented by grabbing key events from the X server, but doing so is problematic, and seen as something very undesirable in Wayland compositors, as having to round trip for key events to one or more ATs is very problematic. Instead, a solution to this is to provide something similar to As with the global shortcuts portal, the display server would translate a stream of key events into triggered shortcuts, that the AT would then be signalled about. For this the shortcuts xdg-spec might need to be expanded to handle the use cases needed by ATs. This would avoid any display server AT round trips, but still allow shortcuts for ATs to have priority over other shortcuts on the system. Access to the accessibility busThe accessibility bus is a dedicated D-Bus bus where applications describe what the user is currently interacting with. Access to this is the most problematic, as it allows the application to fully introspect what is going on on the computer, including reading any text, reading everything the user types, etc. I'll leave the details of how to practically open such a bus, but in one way or the other, e.g. by opening file descriptors, it could be done with API on an accessibility portal. Handling access granting requirementsAs mentioned, we must try hard avoid rouge application that want to trick users into letting them spy on them, but we also need to make it possible to let distributions pre-install a screen reader that should have access without needing to query the user, as without said screen reader, the user wouldn't be able to interact with the computer at all. What this means in practice are these things:
Access handling proposalMake giving access to an AT an explicit operation similar to other system configuration, and not something directly requested by the AT application itself. The way this would work is making it possible to discover, switch and add AT via the accessibility panel of the settings application used in the desktop environment. DiscoveryDiscovery would be handled by AT applications adding a field to their The desktop file and the new field would have no use other than helping with discovery. The primary way after having installed a new AT would be to go to the accessibility panel of the settings app, and switch to or enable the newly installed AT. Assisted discoveryThere might be desirable to allow a window used for e.g. configuring an AT to assist the user with making it easy to find the Accessibility panel in the Settings app. This could work by for example having a Note that, in theory it would be possible for portal backends to implement "give me permission"-dialogs with such method call, but the advice would be not to, given the reasons listed earlier. GranularityHaving granular access control might be desirable, and doing so is not necessarily more complicated. A DE might want to simplify things and e.g. give access to both unrestricted keyboard shortcuts and the accessibility bus with a single option, while others might want to give more granular control up front. Manipulating the permission store via third party applications (e.g. Flatseal) would be possible if the permission store is used in a portable manner. Sane defaultsDistributions should be able to pre-install a screen reader, and make it possible to use without any user interaction. With this model, this would be achievable by making sure distributions can pre-populate e.g. the permission store with any installed screen reader application, while ensuring it is launched in a way that makes the portal correctly identify the app ID it has. With the permission store setup for each new user, it should not matter if the screen reader is pre-installed as a flatpak, via a traditional package, or part of an immutable OS image, as long as it is launched correctly. Development & testing experienceA concern raised with a method like this was the development experience for developing e.g. a screen reader, or testing different ones often; having to interact with Settings in a very manual way can be quite annoying if one has to do it very often. This can be mitigated by making sure changing permissions possible via scripts. If permission handling is done using the permission store, this should be relatively simple. Improved xdg-desktop-portal documentation about how to run executable from the command line allowing portals to correctly identify the app ID correctly would also make things easy as well, and developers would not need to do much more than just running the executable. Edit: added part about distribution default. |
Thanks you, @jadahl ! This is a great encapsulation of what we discussed. I'm going to create a simple set of calls for the portal here, and see if there are further comments: Methods
Signals
And finally, the standard properties: Should this be a PR at this poiint? Continue the discussion there? |
Questions:
As for accessing the accessibility bus, if that means accessing private information, then the user should be aware of that. |
Yes. The user would be aware of that by virtue of adding the application to the list of accessibility applications (which will be opened by the AccessibilitySettings method). And yes, the accessibility bus is what would allow an AT to read the contents of things of the screen.
An application that sets up realtime macro shortcuts could use this. They could set F8 to "bind new macro", then trap all keys, get a combination, followed by a set of keys to reproduce later. Then, set up an action with this protocol that would replay the sequence of keys via some other method. Niche, but not unheard of on other operating systems (Windows).
I may be misunderstanding the question, so feel free to correct me. Shortcuts are redefined based on context. So for example, the simple fact that a user is inside a document (web or libreoffice) would set different shortcuts than being in a simple GUI application. Being in a text box changes the shortcuts, your focus on certain types of items changes the shortcuts. It is extremely dependent on the current context, and would not generally change because a user "pressed a button".
The AT should not generate an input event, or something which would become a shortcut, no. |
Indeed, I was not clear. Here's an example scenario: The "accessibility" app has access to all content, so knows when you type text, what actions you trigger, and may possibly misread things on purpose. Since it can reassign shortcuts at will, can we imagine that the app can assign the action "delete" or "press the button" (like a delete button) to a shortcut that you use frequently (but which is not the shortcut you defined)? |
I suppose that would technically be possible, @Mikenux |
I think this is likely the only method needed regarding shortcuts, if the intention is for a11y shortcuts to always take precedence without any user interaction. It also means Might be useful to let the backend communicate what shortcuts it managed to set though, it cannot really be 100% unconditional. It'll depend on implementation abilities and a limited set of combinations (e.g. escape hatch) the compositor might want to have. Changing between "modes" would just set new shortcuts. |
Yes, it'd be a tricky design task to some how educate the user while they are configuring things.
I imagine A-Z, delete, backspace and enter could perhaps be "shortcuts" that the portal backend can disallow even for an AT, but fundamentally, the possibility that an app disguising itself as an AT can use an a11y portal to do really terrible things is a real problem and hard to solve. |
This will not be possible. I can't say for sure on Backdpace and enter, but individual characters and Shift+a singular character are very common shortcuts used by a screen reader. EDIT: I've just confirmed the backspace and enter are also used in some modes of operation. |
Right now. Any binary can just read and interact with the accessibility layer with no permissions at all. So this will still be massive progress. |
It would be better to warn the user when shortcuts are assigned to delete/destructive actions. However, even if it would be possible to detect such actions, these shortcuts must be stable across contexts, and the system screen reader must read them instead of the app's screen reader (or at least give a hint). The same may be true for the "push the button" action, although it could be limited to destructive actions. The main thing is to avoid any destructive actions. Any other bad but non-destructive behavior (e.g. misreading) is something the user should notice. Therefore, a way to easily disable the problematic app is needed. |
What exactly do you mean by destructive actions? |
Ah I see. Thanks for the clarification.
Yes, this is probably a good idea. This would be sent by the
The only reason I suggested otherwise is that changing the events would be a fairly large request, potentially in the 1-2KB+ range, since every possible shortcut, with namespaced actions attached could be quite a large list, and it needs to be updated nearly instantaneously for a good experience—I was worried about the round-trip time for such a large piece of data. Perhaps I'm thinking a bit too low-level for a portal? I'd need input from others on what latencies would be considered acceptable for this. I'm trying to avoid a situation where a user presses two shortcuts close together, and the first one changes what shortcuts are available. Ideally this would never happen, since under the current "the AT grabs all input events" system, this is not possible, which at least has the advantage of always being correct, even if it is an order-of-magnitude less secure. |
What is your meaning here? I'm not sure I understand what you mean in terms of the distinction between a system screen reader and "an app's screen reader". The vast, vast majority of applications rely an external screen readers to provide accessibility, and those that do not generally just require that a user disable their current screen reader to use it. |
I used the "destructive" action just to be general, referring to the term used in GNOME. Another destructive action other than "Delete" is "Discard", for example. If it's already communicated, that's fine. Thank you for the precision on the difference between a screen reader and a "self-voicing" application. |
Yes, so in this case focusing a button labeled "delete", or "remove", would speak the label of the button. So the user would be aware of what they are doing. |
This feature is actually okay, e. g. it uses focus and selection events, but the mouse review functionality will need events send somehow as well. |
Not sure how I missed some of the comments here. As for mouse emulation: Is a portal the correct place for this feature, and is specifically an accessibility portal the best place for it? As of right now, the accessibility portal will simply allow keybindings to be bound arbitrarily, and with priority above any other system keybindss. This portal, at this time, does not offer any functionality for key emulation, and I'm not sure that it should. Likewise with mouse I/O; are we sure that emulation should be a part of this portal? Could this be on the backburner for version 2 or 3 of a portal? Adding bindings for keyboard, mice, etc. and emulation of those events makes for a much more complex portal that will be harder to get merged anywhere. Are we sure we want to go down that road? EDIT: The advantage is that obviously this would open the door to "autohotkey-style" programs across Wayland and X11 boundaries without reading events directly from And is that an accessibility portal, or a completely different beast? That's basically an "active event manager" moreso than any accessibility feature; although, of course it could still be used by assistive technologies. |
Note that there already is a "mouse emulation" portal - Either way, I think it makes sense to start with an a11y portal that starts somewhere, e.g. shortcuts. Whether it should be |
I think this makes more sense. |
org.freedesktop.portal.Accessibility
)org.freedesktop.portal.AT.Shortcuts
)
fwiw I think it makes sense to work on this in bits and pieces at a time, like @jadahl said, but keep it under one name - Another path would be to make another dbus name owner, specifically for |
IMO anything with intercepting keybinds this way needs a hard limit that only one AT can use it at a time. Probably the behavior there is to just auto "disconnect" the first AT and then use the newest one. If there is anything more complicated than that, it will very quickly run back into the status quo of X11 grabs fighting over priority which we all know is not desirable, and would be even worse to try to present to a typical AT user... |
If we'll use the method in #1046 (comment) than I think this can be handled by the DE actively selecting the active AT / screen reader, properly handling transitioning from one reader to another, while allowing to revert back to the first if the new one fails to work (a bit like gnome-shell / gnome-control-center handles applying monitor configs). |
Finally, what type of information does a screen reader want to access?
And still: Can the screen reader use its own text-to-speech engine and braille system or do we assume it will use the system's? |
@Mikenux all of the above. Screen readers need access to a lot in order to be useful. |
Pretty much all of that information is already provided by AT-SPI (and is already able to negotiate between multiple ATs for the info) so is not relevant to this issue. The issue here is only about how a third party AT handles keybindings. |
Yeah, most of these things are already handled though AT-SPI. Shortcuts are the main thing that needs a seperate protocol to handle effectively on Wayland. Some other things may be needed, but I'm somewhat unsure on that (see my earlier comment). I think we'll need clarification from AT-SPI/Orca/etc. maintainers before considering adding anything else. But if it's established that a portal like this is the best solution for handling shortcuts, that can be done before adding anything else. This is, as I understand, the largest accessibility issue (at least as far as screen-readers go) on Wayland at the moment. |
@TTWNO is working on it |
I am no longer working on this. If somebody else would like to take over, they are welcome to. Always willing to help, and answer questions. |
Thanks @TTWNO for paving the way GNOME Foundation is planning on picking this up after we implement global shortcuts. In the meantime, it would be very helpful for someone else to go ahead and get a prototype of this in another compositor / portal backend. |
This comment from a sibling discussion clarifies that:
and
Now, how representative is Orca among screen readers? Should the accessibility portal have xkb-like modifiers (hold-and-press) as well as Orca-like latching modifiers (press and press)? Or is one enough? Normal shortcuts can be triggered with multiple modifiers, is that still a thing for Orca's latching modifiers? Does it even make sense? On the technical side: If latches are desired, what should be their syntax? Normal modifiers have the following syntax according to XDG shortcuts: "Shift+Alt+J". Is latching a property of a key that can be composed? That would result in syntax like "Ins-Shift-J". |
@dcz-self: The Orca key is meant to function like a real modifier key. For instance in an app with a Help menu, I would expect Alt+H to open that menu. Similarly in Orca, Orca+H puts you in Orca's "learn mode." In both cases, one holds down the modifier (Alt or Orca) and then presses the H. The Orca modifier can be used with other, official modifiers. For instance, Orca+Ctrl+Space puts you in Orca's preference's dialog for the active application (e.g. Orca preferences for Gedit). Most screen readers work in this same fashion, including NVDA and JAWS on Windows and VoiceOver on macOS. They all have a screen reader key (NVDA and JAWS also use CapsLock and KP Insert last time I checked). I'm afraid I do not understand what you mean by "latches". Please clarify. Thanks! |
Thanks. Meanwhile someone else explained to me that latching is what Caps Lock does (even though the name indicates "locking" ;)). |
at least in XKB it can be either, latching or locking. Locking generally means "until the next key press of the same key" and latching means "until a key press of any other key". The sequence Caps, A, A, A, will thus produce "AAA" when locking and "Aaa" when latching. |
46.2 - 25 June 2024 Updates: * Web: Eliminate chattiness from page-load events from embedded ads. * Web: Fix bug causing Orca to not present certain ARIA dialog titles. * Map xfce4-notifyd to notification-daemon script so that notifications are presented. * Table Navigator: Ensure we set the caret in Writer tables. * LibreOffice: Fix presentation of editable combobox value changes. * General: Fix bug that could cause Orca to not present the new caret location. New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas i Hernandez eu Basque Asier Sarasua Garmendia he Hebrew Yaron Shahrabani id Indonesian Andika Triwidada kab Kabyle Athmane MOKRAOUI kab Kabyle Rachida SACI ne Nepali Pawan Chitrakar pt_BR Brazilian Portuguese Leônidas Araújo pt Portuguese Hugo Carvalho ru Russian Artur S0 ========= 46.1 - 1 April 2024 Bug fixes: * Fix issue causing flat review clicking to fail in some Gtk apps. * Fix regression in SayAll upon page load. * Fix presentation of new radio button groups. * Avoid triggering crash in Pidgin. * Fix issue in which Orca appeared to hang when where am I was used immediately after page load of a large document. New and updated translations (THANKS EVERYONE!!!): da Danish Ask Hjorth Larsen de German Jürgen Benvenuti es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia fr French Alexandre Franke kab Kabyle Athmane MOKRAOUI ka Georgian Ekaterine Papava lt Lithuanian Aurimas Černius lv Latvian Rūdolfs Mazurs pl Polish Piotr Drąg pt_BR Brazilian Portuguese Juliano de Souza Camargo sv Swedish Anders Jonsson zh_CN Chinese (China) Boyuan Yang ========= 46.0 - 13 March 2024 Meson: * Allow building without git executable. Spiel: * Fix language and dialect fallback. * Catch all of Spiel's initialization errors. * Respect both speech system override, and user preference. * Avoid shutting Spiel down if still in use. Key handling: * Eliminate unnecessary keygrab refreshes in the web script. * Fix new-keyhandling regression in bypass mode. Thunderbird: * Adjust to Thunderbird's new way of doing things when a message is deleted. General: * Fix false positive identifying redundant name-change events. * Fix regressions introduced by the accessible-text code rewrite. New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas en_GB British English Andi Chandler gl Galician Fran Dieguez he Hebrew Yaron Shahrabani hu Hungarian Attila Hammer kk Kazakh Baurzhan Muftakhidinov tr Turkish Sabri Ünal ========= 46.beta - 21 February 2024 Of Interest to Distros: * Orca now uses meson instead of autotools. * Orca no longer depends on the python3-pyatspi package; it accesses AT-SPI2 directly through gobject introspection. * Orca now has an optional dependency on the Spiel library. Please see "Experimental Features" in README.md for details. New and Updated Features: * Spiel support has been added to Orca. Spiel is a new speech synthesis API that works with eSpeak and Piper, with other synthesizers planned. Web: * Handled several issues causing Orca to jump unexpectedly to the top of the page. * Interrupt speech before presenting new line/location with caret nav. This should improve behavior when arrowing rapidly within content. * Fix bug causing "\ufffc" to be shown in braille instead of the link. * Eliminate (nearly all of) our text sanity-checks and hacks that had been in place for Firefox/Gecko bugs. Mozilla fixed those bugs as part of their Cache The World work. This should improve performance. General: * Fix bug causing focus to be incorrectly changed when selection is automatically updated in a related tree. This can happen with email applications (e.g. incoming messages). * Fix bug causing us to skip certain named elements in StackExchange and StackOverflow. * Fix several terminal-related flat review issues. * Fix notifications in KDE not being fully presented by Notification Presenter. * Don't say "Window" when a MATE switcher window first appears. * Echo sentence after whitespace typed rather than punctuation so the presentation does not get cut off. * Fix bug causing Orca to speak an object from the wrong window in Mouse Review. * Listen for and present document:page-changed events. * Remove logic from the Event Manager that was obsoleted by the ability to obsolete queued events. Make remaining logic more performant. * Convert Orca from using pyatspi to using AT-SPI2 directly. Much code clean-up was also done in the process. * Miscellaneous code changes related to becoming more ready for Wayland. New and updated translations (THANKS EVERYONE!!!): cs Czech Daniel Rusek eu Basque Asier Sarasua Garmendia fa Persian Danial Behzadi he Hebrew Yaron Shahrabani hu Hungarian Attila Hammer ka Georgian Ekaterine Papava pt_BR Brazilian Portuguese Juliano de Souza Camargo ru Russian Artur S0 sl Slovenian Matej Urbančič sv Swedish Anders Jonsson tr Turkish Sabri Ünal uk Ukrainian Yuri Chornoivan ========= 46.alpha - 18 January 2024 New and Updated Features: * The much-requested "sleep mode" has arrived! You can cause Orca to act as if it were not running on an as-needed, per-app basis with Ctrl+Alt+Shift+Q. This makes it much easier to use VMs in which another screen reader is being used as well as self-voicing apps. Orca should remember what apps are currently in sleep mode so it is only necessary to enable it once per app in a given session. Note that Orca does not currently store the setting permanently. This is intentional, and is the same behavior as NVDA, but an option may be created in the future to permanently store the setting. * Orca now has commands to present information about the system without having to navigate to the bar or widget that displays them: * Present CPU and memory usage (unbound, requires psutil) * Present battery status (unbound, requires psutil) * Table navigation commands now work everywhere; not just in web browsers and LibreOffice. In addition to the existing commands, the following commands have been added: * Orca+Shift+T: toggle table navigation (it's enabled by default) * Orca+Alt+Shift+Left/Right/Up/Down: move to the final cell in the specified direction. In addition, Orca's dynamic header commands from LO should now work everywhere, including Google Docs and other web-based editors. These bindings have changed. The new bindings are: * Orca+Shift+R: Set the cells to be treated as column headers to this row. * Orca+Shift+R double-click: Unset the dynamic column headers row. * Orca+Shift+C: Set the cells to be treated as row headers to this column. * Orca+Shift+C double-click: Unset the dynamic row headers row. * Orca's outdated tutorial message feature has been removed. In its place is support for customized help messages which application and toolkit developers can provide via ATK/AT-SPI2's new "help text" API. At the present time, we are unaware of any implementations and thus have not enabled these new tutorial messages by default. Developers seeking to test their implementation can enable Orca's presentation of tutorial messages in the Orca Preferences dialog. * We now always use Atspi's device API for Orca commands. This was initially in place only for Gtk 4 apps, which do not report keystrokes to us for optional construction. Having addressed the majority of issues with this new API, we believe it is ready to be used for all applications and toolkits. Web and Electron Apps Improvements: * Include DLs in list navigation and DTs in list item navigation. Also improve presentation of nested lists. * Improve presentation of VSCode's selection containers. * Web: Improve performance of navigation to end of document LibreOffice Bug Fix: * Ensure the entire word count dialog is presented when the dialog is shown. General Improvements and Fixes: * Improve performance by identifying and quickly dismissing obsolete accessible events. * Improve performance by using AT-SPI2's cache for everything. * Fix bug causing utterances to be split up unexpectedly * Announce the has popup state even in non-web contexts. * Lots of code clean-up and more work to eliminate our dependency on pyatspi. New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas i Hernandez cs Czech Daniel Rusek de German Jürgen Benvenuti de German Philipp Kiemle en_GB British English Bruce Cowan eo Esperanto Kristjan SCHMIDT es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia fa Persian Danial Behzadi fa Persian Sina Aghighi fi Finnish Jiri Grönroos fr French Guillaume Bernard gl Galician Fran Dieguez he Hebrew Yaron Shahrabani hu Hungarian Attila Hammer id Indonesian Andika Triwidada ka Georgian Ekaterine Papava lt Lithuanian Aurimas Černius pl Polish Piotr Drąg pt_BR Brazilian Portuguese Alex Jr pt Portuguese Hugo Carvalho ro Romanian Daniel Șerbănescu ro Romanian Florentina Mușat ru Russian Artur S0 ru Russian Artur So ru Russian Sergej A sl Slovenian Matej Urbančič sv Swedish Anders Jonsson tr Turkish Sabri Ünal uk Ukrainian Yuri Chornoivan zh_CN Chinese (China) Luming Zh ========= 45.2 - 6 January 2024 Web: * Fix bug causing us to get stuck in menu bar during caret navigation. General: * Dump our cached information in response to children-changed events so that we do not present stale information. New and updated translations (THANKS EVERYONE!!!): en_GB British English Bruce Cowan fa Persian Sina Aghighi fr French Guillaume Bernard he Hebrew Yaron Shahrabani ka Georgian Ekaterine Papava pt_BR Brazilian Portuguese Alex Jr ro Romanian Daniel Șerbănescu tr Turkish Sabri Ünal ========= 45.1 - 6 October 2023 Web: * Fix regression in bookmark support. * Fix bug causing Orca to present some custom widgets as an image. General: * Fix bug causing Orca to ignore objects that are valid because they had been defunct/invalid before. * Fix bug causing rewind and fast-forward in SayAll to fail. * Fix chattiness issue in mate-panel. * Only examine descriptions by default in isSameObject for Gtk apps for performance reasons. * Use AXObject.is_dead instead of the script utility for performance reasons. * Revert "Don't let brlapi crash us". This change was a workaround put in place to give distros enough time to get the fixed brltty, but it had a slight performance impact if braille was enabled but not being used. * Stop using deprecated Gtk API in the accessible actions menu. New and updated translations (THANKS EVERYONE!!!): eo Esperanto Kristjan SCHMIDT ========= 45.0 - 15 September 2023 New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas i Hernandez cs Czech Daniel Rusek da Danish Alan Mortensen id Indonesian Andika Triwidada ka Georgian Ekaterine Papava sl Slovenian Matej Urbančič sv Swedish Anders Jonsson zh_CN Chinese (China) Boyuan Yang ========= 45.rc - 5 September 2023 Bug Fixes: * Fix several performance issues * Fix bug causing utterances to be split up unexpectedly * Filter out redundant descriptions to reduce chattiness * Fix tracebacks resulting from hand-editing user-settings.conf * Fix speech getting cut off when focus changes away from checkable item * Fix Orca failing to say "command not found" label in gnome-shell's run dialog * Fix presentation of Qt tree cells with toggle action * Improve logic when suspending events New and updated translations (THANKS EVERYONE!!!): be Belarusian Vasil Pupkin da Danish Alan Mortensen de German Jürgen Benvenuti de German Philipp Kiemle es Spanish Daniel Mustieles fa Persian Danial Behzadi fi Finnish Jiri Grönroos gl Galician Fran Dieguez id Indonesian Andika Triwidada kk Kazakh Baurzhan Muftakhidinov lt Lithuanian Aurimas Černius pa Punjabi Amn Alam pl Polish Piotr Drąg ru Russian Artur S0 ru Russian Sergej A sv Swedish Anders Jonsson tr Turkish Sabri Ünal ========= 45.beta - 14 August 2023 Bug Fixes: * Use importlib instead of imp. This is needed for Orca to work in Python 3.12 * Fix regression in flat review braille panning * Fix presentation of Calc selected cells * Fix the "screen reader on" message getting cut off * Treat LibreOffice as not supporting AtspiCollection (otherwise it can become non-responsive) Feature Changes: * Change the default button in the list-of dialogs from "jump to" to "activate" New and updated translations (THANKS EVERYONE!!!): eu Basque Asier Sarasua Garmendia gl Galician Fran Dieguez hu Hungarian Attila Hammer ka Georgian Ekaterine Papava uk Ukrainian Yuri Chornoivan ========= 45.alpha - 5 August 2023 NOTE: A beta release will follow in a few days, hopefully including all of the translations that are in master but never made it to the gnome-45 branch. New and Modified Features: * Object Navigator: This allows the user to navigate through a hierarchy of UI objects. Bindings: - Ctrl+Orca+Up/Down for navigating between parent/child - Ctrl+Orca+Left/Right for navigating among siblings - Ctrl+Orca+Return for performing a click - Ctrl+Orca+S to toggle the simplification of the object hierarchy * Flat Review can now by restricted to the current object of interest to eliminate "noise" from irrelevant objects. Binding: Currently unbound * Flat Review now has a command that displays the entire contents being reviewed in an editable text view, making it easier to copy and paste the contents of terminals, dialogs, etc. Binding: Currently unbound * Action Presenter: A popup menu for performing accessible actions on an object, such as click, expand/collapse, press. This should make it easier to interact with applications with poor keyboard navigability. Binding: Orca+Shift+A * The Notification List feature was re-written. It now uses an actual Gtk list rather than an off-screen one. The review announcements now include a timestamp and the dialog allows you to clear the history. * Preferences Dialog and Shortcuts List are now grouped based on feature, making it far easier to discover and bind/rebind commands of interest. * The Structural Navigation command to navigate among form fields was remapped from Orca+Tab/Orca+Shift+Tab to F/Shift+F. A new command was also added to navigate among iframes, which is currently unbound. * Added a command to present the default button. Binding: Orca+E. * Modify Orca's left-click functionality to prefer actions which are associated with performing a left click (e.g. click, press, jump, open) and only attempt to synthesize a click as a last resort. Bug Fixes and Other Improvements: * Added the ability to temporarily suspend registration for accessibility events which can greatly improve performance at times event floods are likely, such as window creation/destruction and activation/deactivation. * Started preferring AtspiCollection over child iteration to locate descendants in the accessibility tree. The performance improvement can be up to 10 times faster. We will continue making changes in this area between now and the stable release. * Started relying on speech-dispatcher for character presentation rather than our own character names dictionary, which we were not always using. This should cause Orca to always speak the character name in the same way. * Interrupt speech conditionally on focus changes. This is needed for Gtk 4 on Wayland because we currently do not get notifications for input events, which had been our most reliable hint to interrupt speech. The heuristics to identify when we should not interrupt speech are still being refined, but hopefully this will make the user experience a bit more tolerable until a solution is agreed upon and implemented. See https://github.com/flatpak/xdg-desktop-portal/issues/1046 for more information. * A number of improvements to reduce some lagginess and chattiness in certain web apps. * Added logic to filter out windows which claim to be active but really aren't, including descendants of mutter-x11-frames, the desktop frame of some window environments, and certain Electron apps. New and updated translations (THANKS EVERYONE!!!): en_GB British English Bruce Cowan hu Hungarian Attila Hammer it Italian Gianvito Cavasoli ka Georgian Ekaterine Papava ========= 44.1 - 25 May 2023 Web: * Support aria-disabled on application, tab, group, and focusable separator/splitter * Fix bug in identification of inline iframes General: * Improve performance by checking for duplicate object events * Filter duplicate events when checking for double presses of the orca modifier New and updated translations (THANKS EVERYONE!!!): it Italian Gianvito Cavasoli 44.0 - 24 March 2023 New and updated translations (THANKS EVERYONE!!!): da Danish Alan Mortensen fr French Guillaume Bernard ========= 44.rc - 8 March 2023 General: * Fix double-presentation of indentation information * Interrupt speech immediately prior to speaking "screen reader off" * Add command-line Orca modifier documentation * Fix issue when using the new AT-SPI device API Web: * Fix jumping in sites caused by ARIA selection-changed events * Fix incorrect browsing in Firefox when popup has focus * Fix double-presentation of content in ARIA's tab role * Fix structural navigation commands sometimes failing to work after script reactivation New and updated translations (THANKS EVERYONE!!!): ab Abkhazian Nart Tlisha de German Jürgen Benvenuti hu Hungarian Attila Hammer id Indonesian Kukuh Syafaat ka Georgian Ekaterine Papava sv Swedish Anders Jonsson uk Ukrainian Yuri Chornoivan ========= 43.1 - 3 January 2023 General: * Clean up and fix bugs in flat review find * Treat KP_Delete as Delete for the purpose of identifying text deletions * Fix several issues related to prefering the TableCell interface * Fix presentation of name-changed events for Qt push buttons Web: * Fix repetition of text elements during SayAll in web content * Fix structural navigation bug impacting columns spanning multiple cells * Fix chattiness issue with browser page tabs * Fix bug causing Orca to present a non-active page in Chrome Mouse Review: * Do not re-present the whole paragraph when leaving a link New and updated translations (THANKS EVERYONE!!!): ab Abkhazian Nart Tlisha ka Georgian Ekaterine Papava nl Dutch Nathan Follens ========= 43.0 - 23 September 2022 General: * Prevent double-presentation of notifications * Fix presentation of Nautilus items for Gtk 4 * Fix bug causing the wrong voice to be used New and updated translations (THANKS EVERYONE!!!): bg Bulgarian Alexander Shopov ca Catalan Jordi Mas da Danish Alan Mortensen fr French Charles Monzat kk Kazakh Baurzhan Muftakhidinov lv Latvian Rūdolfs Mazurs ne Nepali Pawan Chitrakar pt_BR Brazilian Portuguese Leônidas Araújo sl Slovenian Matej Urbančič sv Swedish Anders Jonsson tr Turkish Sabri Ünal zh_CN Chinese (China) Boyuan Yang ========= 43.beta - 29 August 2022 Web: * Fix issue causing Orca to remain silent with autofocused inputs * Prevent structural navigation exiting current modal dialog * Make cell ancestor presentation optional General: * Fix issue causing the description to not be presented * Fix several popup menu-related issues * Fix issue causing certain static text in dialogs to not be presented New and updated translations (THANKS EVERYONE!!!): ab Abkhazian Nart Tlisha ca Catalan Jordi Mas cs Czech Marek Černocký de German Jürgen Benvenuti eu Basque Asier Sarasua Garmendia fr French Claude Paroz gl Galician Fran Dieguez hu Hungarian Attila Hammer lt Lithuanian Aurimas Černius pl Polish Piotr Drąg sr Serbian Марко Костић tr Turkish Emin Tufan Çetin zh_CN Chinese (China) Luming Zh ========= 43.alpha - 1 July 2022 Web: * Fix several issues relating to presentation of navigation among focusable descendants within ARIA grids and tables * Improve support for description lists * Improve presentation of articles in feeds * Improve presentation of unknown setsize and row/column count * Fix several "chattiness" issues related to ARIA widgets * Fix SayAll presentation of time element inside link * Fix presentation of the FluentUI react dialog (and any other dialog which has an ARIA document-role descendant * Improve performance in large rich-text editors * Include focusable elements with clickancestor action in the list of "clickables" WebKitGtk: * Fix issue causing WebKitGtk 2.36 content to not be handled by Orca's webkit support * Fail gracefully when structural navigation commands are used in WebKitGtk 2.36.x (the collection interface won't be supported until 2.26.4) General: * Add more event-flood handling to improve performance in general, but especially for gnome-shell * Fix bug related to which script responded to a mouse-button event New and updated translations (THANKS EVERYONE!!!): bg Bulgarian Alexander Shopov ca Catalan Jordi Mas ca Catalan Jordi Mas i Hernandez cs Czech Marek Černocký da Danish Alan Mortensen da Danish Ask Hjorth Larsen de German Mario Blättermann de German Philipp Kiemle de German Tim Sabsch es Spanish Daniel Mustieles es Spanish Francisco Javier Dorado eu Basque Asier Sarasua Garmendia fa Persian Danial Behzadi fi Finnish Jiri Grönroos fr French Charles Monzat fr French Claude Paroz gl Galician Fran Dieguez he Hebrew Yaron Shahrabani hu Hungarian Attila Hammer id Indonesian Kukuh Syafaat it Italian Milo Casagrande kk Kazakh Baurzhan Muftakhidinov lt Lithuanian Aurimas Černius lv Latvian Rūdolfs Mazurs nb Norwegian Bokmål Kjartan Maraas ne Nepali Pawan Chitrakar nl Dutch Nathan Follens oc Occitan Quentin PAGÈS pl Polish Piotr Drąg pt_BR Brazilian Portuguese Leônidas Araújo pt_BR Brazilian Portuguese Matheus Barbosa pt_BR Brazilian Portuguese Tiago Casal pt Portuguese Hugo Carvalho ro Romanian Daniel Șerbănescu ru Russian Aleksandr Melman sl Slovenian Matej Urbančič sr Serbian Марко Костић sv Swedish Anders Jonsson sv Swedish Luna Jernberg tr Turkish Emin Tufan Çetin uk Ukrainian Yuri Chornoivan zh_CN Chinese (China) Boyuan Yang zh_CN Chinese (China) Luming Zh ========= 42.0 - 22 March 2022 New and updated translations (THANKS EVERYONE!!!): de German Philipp Kiemle it Italian Milo Casagrande kk Kazakh Baurzhan Muftakhidinov nb Norwegian Bokmål Kjartan Maraas ========= 42.rc - 11 March 2022 Web: * Improve behavior during event flood of table-related events from web apps * Fix bug causing us to ignore a newly-loaded document due to it having a bogus index in parent LibreOffice: * Fix bug causing lines with embedded objects to not be spoken New and updated translations (THANKS EVERYONE!!!): bg Bulgarian Alexander Shopov ca Catalan Jordi Mas cs Czech Marek Černocký da Danish Alan Mortensen es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia fr French Claude Paroz gl Galician Fran Dieguez hu Hungarian Attila Hammer id Indonesian Kukuh Syafaat lt Lithuanian Aurimas Černius pl Polish Piotr Drąg pt_BR Brazilian Portuguese Matheus Barbosa pt Portuguese Hugo Carvalho ro Romanian Daniel Șerbănescu ru Russian Aleksandr Melman sl Slovenian Matej Urbančič sr Serbian Марко Костић sv Swedish Luna Jernberg tr Turkish Emin Tufan Çetin uk Ukrainian Yuri Chornoivan zh_CN Chinese (China) Luming Zh ========= 42.beta - 15 February 2022 Web: * Fix several bugs in which we update our location silently when we should instead announce it * Improve behavior during event flood of text-related events from web apps * Attempt to work around object destruction during structural nav * Improve behavior of label ancestors of widgets General: * Fix bug causing accessing preferences to fail for esperanto * Handle apps going defunct during cleanup; more debugging * Handle exception when object is destroyed while getting text attributes * Try to handle error from mate-notification-daemon during window:create * Improve performance in gnome-shell * Improve presentation of all text becoming unselected during caret navigation New and updated translations (THANKS EVERYONE!!!): bg Bulgarian Alexander Shopov ca Catalan Jordi Mas i Hernandez cs Czech Marek Černocký da Danish Alan Mortensen da Danish Ask Hjorth Larsen de German Mario Blättermann de German Tim Sabsch es Spanish Daniel Mustieles es Spanish Francisco Javier Dorado eu Basque Asier Sarasua Garmendia fi Finnish Jiri Grönroos fr French Charles Monzat gl Galician Fran Dieguez he Hebrew Yaron Shahrabani hu Hungarian Attila Hammer id Indonesian Kukuh Syafaat it Italian Milo Casagrande kk Kazakh Baurzhan Muftakhidinov lv Latvian Rūdolfs Mazurs ne Nepali Pawan Chitrakar nl Dutch Nathan Follens oc Occitan Quentin PAGÈS pl Polish Piotr Drąg pt_BR Brazilian Portuguese Leônidas Araújo pt_BR Brazilian Portuguese Tiago Casal pt Portuguese Hugo Carvalho ru Russian Aleksandr Melman sl Slovenian Matej Urbančič sv Swedish Anders Jonsson uk Ukrainian Yuri Chornoivan zh_CN Chinese (China) Boyuan Yang ========= 41.1 - 1 December 2021 Web: * Fix presentation of selected items in datalist * Fix issue causing non-rendered headings being combined with other, rendered elements when presenting line contents * Improve behavior when focused back/forward button is pressed * Improve presentation of subscript and superscript elements (requires implementations exposing the associated AT-SPI2 roles) * Attempt to identify and present custom-element images * Fix SayAll for rich-text editors * Treat all list items inside listboxes as focus mode widgets regardless of authoring * Clear cached objects when not dumping full cache for child change to prevent skipping over newly-added content * Fix speech generator for browser alerts * Fix issues causing certain spin buttons to not be presented correctly General: * Modify collections module import for Python3.10 compatibility * Event Manager: Handle name/description change floods * Adjust string for repeats when presenting text changes * Clear flat review context when page tab lists emit selection-changed to eliminate stale context (e.g. in a wizard) * Improve presentation of indeterminate progress bars (busy indicators) New and updated translations (THANKS EVERYONE!!!): es Spanish Daniel Mustieles he Hebrew Yaron Shahrabani lv Latvian Rūdolfs Mazurs ru Russian Aleksandr Melman ========= 41.0 - 16 September 2021 General: * Fix compatibility with Python 3.10 New and updated translations (THANKS EVERYONE!!!): da Danish Alan Mortensen de German Tim Sabsch es Spanish (markup fix) Andre Klapper ========= 41.rc - 4 September 2021 Web: * Fix several issues related to empty but "focusable" ARIA tooltips * Identify and work around (when possible) mismatched text and hypertext implementations that can lead to looping inside content New and updated translations (THANKS EVERYONE!!!): cs Czech Marek Černocký es Spanish Francisco Javier Dorado hu Hungarian Attila Hammer kk Kazakh Baurzhan Muftakhidinov sv Swedish Anders Jonsson uk Ukrainian Yuri Chornoivan ========= 41.beta - 24 August 2021 General: * Use new AT-SPI device API for keyboard monitoring when available LibreOffice: * Fix bug causing Orca to become silent due to setting locusOfFocus to a defunct object * Work around missing focus event for Calc spreadsheet which causes Orca to ignore subsequent events Speech: * Do not set voice name when it is the default ========= 41.alpha - 12 July 2021 General: * Improve handling of accessible-event floods from apps * Fix bug in announcing selected items in icon views Web: * Improve recovery from destruction of current object * Improve performance in response to caret-moved events * Fix crash resulting from subtree becoming hidden * Fix bug in toolbar browse-mode navigation * Fix bug causing a live region event to be ignored * Fix bug causing us to incorrectly switch to browse mode in VSCode * Ensure we present caret-moved events after Alt+Tabbing into web app * Don't repeat posinset and setsize for multi-line list items * Don't announce unselected state of grid cells/rows in browse mode * Don't announce row and column count when they are both 0 * Fix braille presentation of grid cell in browse mode * Improve browse-mode navigation of trees and tree tables * Eliminate some chattiness entering elements with a caption * Prevent double-presentation of description for alerts Email: * Fix regression presenting plain-text messages in Thunderbird * Work around missing events from Evolution Add Accounts LibreOffice: * Work around missing state-changed:focused event that caused caret-moved events in documents to be ignored Speech: * Ensure we enable/disable speech based on app-specific settings * punctuation: Spell left/right_double_angle at level "most" * Do not add mark within numbers (some synthesizers present numbers incorrectly otherwise) * Do not set language if it is empty (breaks output in older versions of speech-dispatcher) Mouse Review: * Check if we have Wnck in activate() so we don't spew errors * Gracefully handle lack of pointer New and updated translations (THANKS EVERYONE!!!): es Spanish Daniel Mustieles es Spanish Francisco Javier Dorado fi Finnish Jiri Grönroos fr French Charles Monzat he Hebrew Yaron Shahrabani ne Nepali Pawan Chitrakar nl Dutch Nathan Follens oc Occitan Quentin PAGÈS pt_BR Brazilian Portuguese Tiago Casal sv Swedish Anders Jonsson ========= 40.0 - 19 March 2021 New and updated translations (THANKS EVERYONE!!!): cs Czech Marek Černocký da Danish Ask Hjorth Larsen it Italian Milo Casagrande sv Swedish Anders Jonsson zh_CN Chinese (China) Boyuan Yang ========= 40.rc - 11 March 2021 Web: * Improve handling of, and recovery from, element destruction, e.g. to find the new location and contents more accurately and quickly * Don't generate line contents when tabbing into editable with descendants (chattiness) General: * Prevent hang generating statusbar content * Prevent hang resulting from accessible objects which claim to be their own parent * Try to detect and avoid selection-changed event flood from apps like Caja which can make Orca not responsive * Work around lack of children-changed accessibility events from fillers which report 0 children New and updated translations (THANKS EVERYONE!!!): de German Mario Blättermann eu Basque Asier Sarasua Garmendia fi Finnish Jiri Grönroos gl Galician Fran Dieguez id Indonesian Kukuh Syafaat pl Polish Piotr Drąg pt Portuguese Hugo Carvalho ========= 40.beta - 22 February 2021 Web: * Add initial support for aria-braillelabel and aria-brailleroledescription * Add option to control automatic focus mode during native navigation * Improve presentation of, and fix bugs related to, offscreen text which is exposed to us as one or two characters per line * Make more roles descendable in browse mode to improve content in which use ARIA widget roles are applied without any associated keyboard navigation * Fix bugs in which we get stuck or skip an element due to stale cache * Prevent getting stuck when up arrowing with multiple newline chars * Don't collapse newlines from a single text object into one line * Respect speakBlankLines setting * Ensure figcaptions and descendants are presented only once * Fix issue in which caret-moved events preceding focus events cause Orca to not present a newly-focused entry * Use posinset and setsize attributes for menus, even in browser gui * Eliminate double-presentation of caption children in SayAll * Work harder to turn inaccessible links into something presentable * Prevent focus mode from being entered if we're in SayAll * Fix presentation of table row when caret moves due to mouse click * Ensure we say something when using caret nav to interrupt SayAll * Skip useless empty elements when seeking first context in document * Fall back on gridcell name when generating name for nameless checkboxes * Miscellaneous chattiness fixes Chromium: * Work around bogus/misleading selected state in browser menus * Fix chattiness issue arrowing up/down in Omnibox popup * Fix bogus presentation of posinset and setsize in popup menus Braille: * Attempt to be smarter about the default contraction table, prefering the current locale and literary braille tables * Fix bug in presentation of tree items General: * Fix Orca not launching due to braille-related timeout * Use AT-SPI2's cache for children (improves performance) * Improve presentation of native-app navigation by word * Fix issue preventing us from recognizing a Tab input event * Announce "non selected" when focus does not follow selected in a listbox * Only speak newline during word nav if spoken indentation is enabled * Handle exception initializing mouse review with null display New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas ca Catalan Jordi Mas i Hernandez cs Czech Marek Černocký de German Christian Kirbach de German Tim Sabsch en_GB British English Stephan Woidowski es Spanish Daniel Mustieles fi Finnish Timo Jyrinki fr French Charles Monzat fr French Claude Paroz gl Galician Fran Dieguez hr Croatian Goran Vidović hu Hungarian Attila Hammer it Italian Milo Casagrande lt Lithuanian Aurimas Černius nb Norwegian Bokmål Kjartan Maraas pl Polish Piotr Drąg pt_BR Brazilian Portuguese Henrique Machado Campos pt_BR Brazilian Portuguese Rafael Fontenelle pt Portuguese Juliano Camargo ro Romanian Florentina Mușat sl Slovenian Matej Urbančič sr Serbian Марко Костић sr Serbian Мирослав Николић sv Swedish Anders Jonsson tr Turkish Emin Tufan Çetin uk Ukrainian Yuri Chornoivan zh_CN Chinese (China) Boyuan Yang ========= 3.38.2 - 22 December 2020 General: * Don't treat unknown coordinates as definitely off-screen. Should fix the problem seen with flat review resulting from a change in Gtk+ 3.24.24 ========= 3.38.1 - 3 December 2020 Web: * Fix crash when generating speech for childless math element General: * Fix bug causing the new radio button group to not be presented when the group was first entered New and updated translations (THANKS EVERYONE!!!): pt Portuguese Juliano de Souza Camargo pt_BR Brazilian Portuguese Henrique Machado Campos ========= 3.38.0 - 11 September 2020 Web: * Don't present aria-placeholder value when it's identical to aria-label * Fall back on object attributes for absent text attributes General: * Add some sanity checks to prevent crashing due to GStreamer failure * Announce read-only state for checkboxes New and updated translations (THANKS EVERYONE!!!): cs Czech Marek Černocký de German Tim Sabsch es Spanish Daniel Mustieles fr French Charles Monzat, Claude Paroz hu Hungarian Attila Hammer id Indonesian Kukuh Syafaat it Italian Milo Casagrande pl Polish Piotr Drąg sl Slovenian Matej Urbančič sr Serbian Марко Костић sv Swedish Anders Jonsson tr Turkish Emin Tufan Çetin zh_CN Chinese (China) Boyuan Yang ========= 3.37.90 - 10 August 2020 Web: * Announce when rows, columns get reordered due to aria-sort changing * Fix bug causing some web content to not be presented in flat review * Fall back on "placeholder" when "placeholder-text" is not used by browsers * Fix bug causing presentation of stale content when navigating by word * Skip over clickable images during line nav if the author has set alt to "" * Fix bug causing events from Google Docs to be ignored when a dialog appears but lacks focus * Fix false positive causing us to not present self-referential labels * Fix crash caused by author using aria-labelledby pointing to itself * Always speak the current line when caret moves due to mouse click so that presentation is consistent regardless of the element General: * Fix bug causing learn mode to not work in (at least) gnome-shell controls * Emit mode-changed notifications to inform other tools (magnifiers, highlighting tools) what mode Orca is in when presenting content * Miscellaneous tweaks to GUI labels and documentation * Attempt to reconnect to speech-dispatcher when setting capitalization style fails due to SSIPCommunicationError New and updated translations (THANKS EVERYONE!!!): ca Catalan Gil Forcada, Jordi Mas de German Tim Sabsch el Greek Efstathios Iosifidis es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia fr French Charles Monzat gb British English Zander Brown gl Galician Fran Diéguez kk Kazakh Baurzhan Muftakhidinov lt Lithuanian Aurimas Černius ro Romanian Daniel Șerbănescu, Florentina Mușat sl Slovenian Matej Urbančič sv Swedish Anders Jonsson uk Ukrainian Yuri Chornoivan ========= 3.37.2 - 1 June 2020 Web: * Present aria-sort value when focus moves to sorted row/col header * Ensure we present functionally-empty entries from web apps * Make ARIA gridcell cells caret-navigable if browse mode is sticky * Fix bug causing us to skip over objects in certain grids in browse mode * Handle links whose sole content is an image with alt="" * Force browse mode switch in web apps when child document claims focus * Don't repeat label, name, or role when in the same object in SayAll * Improve performance of presenting status bar items for web/Electron apps (e.g. VSCode) * Check for "keyshortcuts" attribute also for browser UI * Eliminate chattiness from Chromium omnibox * Ensure we present the correct row when navigating to table with missing rows * Improve structural navigation in HTML tables with conflicting ARIA semantics * Ensure we announce role and content of elements with ARIA's separator role * Ensure we verbalize punctuation for named items inside code elements * Improve heuristic to identify elements serving as fake placeholder for text * Use caret-moved event to recover from object destruction * Prevent Orca from wandering into hidden objects and improve recovery when the currently-focused object is removed/destroyed * Improve overall performance processing caret-moved, children-changed, and text-changed events * Expand embedded objects for live region text insertions Mouse Review: * Fix several chattiness issues * Fix presentation of nested cells Braille: * Ensure blockquote and section text is always displayed * Ensure focused region starts the display when panToCursor * Fix bug in word wrap causing us to not display the relevant info * Fix error using braille with JavaAtkWrapper * Ensure we update our position when an anchor is clicked on via braille display * Hand off Braille output on NoFocus so other screen readers can provide information * Correctly display long strings of non-space characters that exceed the width of the braille line * Fix several panning issues * Remove fallback on VT 7 Speech: * Use punct level 'most' when available in speech-dispatcher * Insert pause breaks when generating status bar items so they don't all run together when spoken General: * Emit region-changed events to inform other tools (e.g. magnifiers, highlighting tools) the object and optional text range Orca is presenting * Present description change events for the current object * Fix crash related to non-standard tables * Work around Qt not exposing STATE_CHECKABLE and/or using ROLE_CHECK_MENU_ITEM on checkable menu items * Fix presentation of Qt widgets labelled by their parent container * Gracefully handle AT-SPI2 timeout when checking validity of app * Add support for the Orca key being "sticky" * Fall back on name for labels which lack displayed text * Present message when the status bar cannot be found * Respect user's punctuation settings in app switchers New and updated translations (THANKS EVERYONE!!!): ckb Kurdish Sorani Jwtiyar Nariman de German Tim Sabsch es Spanish Daniel Mustieles hu Hungarian Attila Hammer ro Romanian Daniel Șerbănescu, Florentina Mușat sv Swedish Anders Jonsson tr Turkish Emin Tufan Çetin uk Ukrainian Yuri Chornoivan ========= 3.37.1 - 23 April 2020 VSCode: As a consequence of feature implementation and bug fixes described below under "Chromium" and "Web," Orca support for VSCode has been improved significantly. Users are encouraged to test Orca with VSCode Insiders build, where Microsoft has many accessibility fixes to work with Orca. Chromium: * Improve label inference for form fields without author-provided names * Fix issue causing us to present the previous line in contenteditable * Fix chattiness issue resulting from failing to consider the prior object when generating labelOrName * Fix false positive on identifying list item marker * Prevent double-speaking of ARIA combobox value * Don't speak child position for popup menus (it's always 1 of 1) * Attempt to identify and work around possible missing window events * Improve responsiveness of text selection in large objects Web: * Support navigation within focusable tooltips in web applications * Update Orca to handle new mappings for ARIA alert and alertdialog * Add support for new ARIA code role * Multiple performance improvements to event handling * Ensure we always present ARIA groups with author-provided names * Improve behavior navigating in tables in web-based rich-text editors * Ensure we adjust text for repeated characters even in browse mode * Fix bug causing us to present stale value information for ARIA range widgets * Don't announce returning to browse mode when page is loading * Don't present load completed or page summary information if we are in focus mode for a valid object * Don't present loading message from pages which have no URI (fixes some chattiness when launching Firefox) * Ensure more objects with info get presented in flat review * General improvements for presentation of ARIA comboboxes * Don't iterate through all children of very complex SVGs (improves performance) * Ignore caret-moved events from outside the active grid in focus mode (fixes chattiness and also incorrectly updating our location) * Don't infer labels for any web app descendant (names must come from authors in ARIA apps) * Ensure we handle selection-change events from web app descendants * Ensure we present the name of focused web documents * Update focus when web app descendant claims focus, unless browse mode is sticky * Only present comment role when first entering the comment (chattiness) * Fix bug causing us to not present text which is directly inside a scroll pane * Treat treeitems as a whole for the purpose of caret navigation * Prevent Orca from combining words into a single word in web content when navigating by word * Fix several issues related to rich-text editors in web apps Thunderbird: * Fix bug causing us to incorrectly update the focused location when navigating in Settings Mouse Review: * Do not announce redundant information when enabling mouse review * Fix window list the second time mouse review gets enabled * Fix window detection with more than one workspace * Ensure we compare the top level document with the active one * Fix mouse review on some web elements after scrolling Chat apps: * Fix false positive with autocompleted text event (causing us to present membership count changes, e.g. in Pidgin) General: * Reduce chattiness from page tab selection events following focus * Reduce chattiness from text insertions resulting from page tab switch * Don't re-present the description if the locusOfFocus hasn't changed * Don't present position in list for comboboxes which lack children * Fix bug causing us to not present changes in already-focused terminal when Orca is launched * Only present the status bar if it is showing and visible (increases likelihood of Orca finding the right status bar when command to speak the status bar is given) * Prevent double-speaking of static text in alerts and other containers * Speak "alert" role before its name rather than after New and updated translations (THANKS EVERYONE!!!): nl Dutch Justin van Steijn sl Slovenian Matej Urbančič zh_CN Chinese (China) Dz Chen ========= 3.36.1 - 11 March 2020 Web: * Flush live region messages when interrupting presentation * Support checkable list items and present unchecked state when item has checkable state and menu item role * Handle extraneous elements inside containers which support selection * Improve handling of live region messages with embedded object chars and filter out some duplicate messages ========= 3.36.0 - 11 March 2020 New and updated translations (THANKS EVERYONE!!!): nl Dutch Nathan Follens ro Romanian Daniel Șerbănescu uk Ukrainian Daniel Korostil ========= 3.35.92 - 4 March 2020 Chromium: * Fix presentation of child position for files in Google Drive * Handle list item markers which lack "::marker" tag Web: * Fix presentation of list items in GMail composition window * Eliminate chattiness from redundant SVG images which lack accessible information. * Present SVG documents using the image role * Several improvements to presentation of contenteditable content * Several improvements to presentation of aria-details information * Present aria-invalid info for non-widget elements * Present aria-roledescription value before mark/highlight start message * Ensure ARIA links are not treated like anchors LibreOffice: * Calc: Eliminate chattiness from spreadsheet reclaiming focus after editing cell General: * Ensure we use the right voice when presenting autocomplete role * Improve handling for window switchers which fail to emit needed accessibility events New and updated translations (THANKS EVERYONE!!!): da Danish Alan Mortensen fr French Julien Humbert id Indonesian Kukuh Syafaat it Italian Milo Casagrande pt_BR Brazilian Portuguese Tiago Casal sl Slovenian Matej Urbančič ========= 3.35.91 - 20 February 2020 Chromium: * Remove some unwanted noise from frame name when there is no URL * Ensure we present alert-style dialog name and static text * Fix issue with live region presentation in embedded web apps * Improve accuracy getting the accessible object under the pointer * Work around issue causing us to get stuck when the focused object gets reparented by the author * Present alerts on application window activation Web: * Improve handling and presentation of dynamic skip links * Fix bug causing certain code/preformatted text being treated as if it were on a single line * Improve handling of the focused object being replaced while focused * Fix bug causing us to re-announce context inappropriately * Treat block lists on the same line as other block elements (e.g. headings) as if they are on a separate line * Skip over empty paragraphs during caret navigation in web content * Fix bug causing certain blockquotes to not be announced * Fix chattiness and performance issue related to line navigation amongst table rows * Improve performance by caching object attributes * Improve performance by skipping pointless ancestor generation during line navigation * Improve presentation when caret moves to same-page link * Fall back on description so we present font-icon-based sharing links * Add support for suggestion, insertion, deletion, and mark roles and elements * Fix braille presentation of certain browser/app UI elements * Attempt to identify elements serving as placeholders for entries * Fix chattiness issue presenting column/row headers with author- provided names * Eliminate double-presentation of Table details during structural navigation * Improve navigation and presentation in grids in browse mode * Eliminate double-presentation of caret-moved events from mouse clicks * Only treat expandable elements as focus mode widgets if focusable * Prevent repetition of lines during SayAll for web content * Announce when an object has aria-details on it, and when entering or exiting a details container via caret navigation Terminal: * Fix double-echoing of key when character echo is enabled General: * Don't speak number of children when verbosity is set to brief * Fix bug causing the Orca modifier to get unbound when a keyboard is plugged in or removed * Fix pauses being spoken as period/dot when punctuation is set to all * Handle setting focused region when accessible objects get recreated on us during braille generation * Fix bug causing us to not present certain Qt tables as tables * Fix bug causing us to not always use the system voice * Improve filtering out of redundant names when there is a similar label * Prefer the name over the displayed text for interactive objects * Fix bug prevening rebinding of commands with Orca+Shift * Remove newline char from copied/appended flat review content New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas cs Czech Marek Černocký es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia fr French Claude Paroz gb British English Bruce Cowan gl Galician Fran Dieguez hu Hungarian Balázs Úr id Indonesian Sucipto lt Lithuanian Aurimas Černius ms Malay Umarzuki Bin Mochlis Moktar pl Polish Piotr Drąg pt_BR Brazilian Portuguese Rafael Fontenelle sr Serbian Марко Костић sv Swedish Anders Jonsson tr Turkish Sabri Ünal ========= 3.35.3 - 3 Janauary 2020 Web: * Explicitly announce the popup type when aria-haspopup is used * Improve presentation of childless editable comboboxes * Ignore a bogus object from the Gecko accessibility tree which was interfering with presentation * Improve scrolling to text objects * Don't treat nameless, textless links/static text elements as clickables * Continued improvement of Orca's support for Chromium * Improve accuracy of synthesized clicks on web pages * Be sure we don't override sticky browse mode for top-level web apps * Fix bug causing Orca to not present button name during Say All * Improve presentation of selection of links which span multiple lines * Add support for detecting and adjusting scrolling for banner overlays (Note: This support requires adjustments in the user agents.) General: * Fix key echo for accented letters for apps which don't give us the event string * Filter out mouse-abs event spam to make mouse review more performant * Improve reliability of mouse review * Improve identification and presentation of autocompleted text in entries * Work around missing object:state-changed:focused event from GtkTable which caused Orca to be silent when a table initially gained focus * Ensure Orca starts even when there are missing gstreamer components * Add support for word-based speech progress * Don't treat text insertions from non-focused widgets as echoable * Ensure we speak selected switcher item even when the user has set onlySpeakDisplayedText * Improve reliability of unfocusedAlertAndDialogCount() * Correct the position and size reported for selectable table rows * Don't present GtkComboBox selection changes if we're not on/in that widget * Present position in list for tables * Filter out duplicate clipboard contents changed notifications * Filter out bogus window focus claims from gnome-shell * Add handling for accessible app names which start with "org." or "com." New and updated translations (THANKS EVERYONE!!!): ca Catalan Jordi Mas da Danish Ask Hjorth Larsen el Greek Dimitris Maroulidis es Spanish Daniel Mustieles eu Basque Asier Sarasua Garmendia gl Galician Fran Dieguez nl Dutch Nathan Follens pt_BR Brazilian Portuguese Rafael Fontenelle sv Swedish Anders Jonsson
The Problem
Accessibility is broken in a big way on Wayland. This is because intercepting and re-transmitting global keybindings is no longer permitted, and fair enough! What a security nightmare!
In order to bring security to "normal" applications, the Global Shortcuts portal was proposed, adopted, and even implemented by KDE (so I hear).
Assistive technology, however, is traditionally considered a component with "exceptions" to the rules: "yeah sure, just snoop the keyboard", "it's inherently insecure so who cares". This is because in the most obvious case (a screen reader), it actually has access to what is on your screen anyway (any text, of any document, webpage, terminal output, etc.) and therefore often seems insecure be definition.
In an effort to integrate accessibility into Linux in a way that does not inherently require insecurity, just permission, we've turned to portals.
The Solution
The most viable path for permissions-based accessibility in Linux is to model it after other systems which have already done the hard work of finding the (mostly) right abstractions.
In this case, I'm going to recommend we emulate the behaviour of Android, since it's: a) already Linux-based, b) has an accessibility permissions system, and c) sandboxes most applications from the operating system—which seems to be the direction of Linux as well; the only difference for Linux is that we'll have both native applications and sandboxed applications to deal with.
After reaching out for advice over in the GNOME accessibility Matrix room, and some chats over on a wayland-protocols issue, there seems to be quite the consensus on implementing the global shortcuts portal for assistive technologies to be able to do their job.
However, the existing global shortcuts portal does not have quite all the features/permission granularity requirements to use an assistive technology at this point.
The Requirements
There are a few requirements for an accessibility portal:
Insert + a
,Capslock + x
, orh
all on its own).{sa(sa{sv}}
), then allow the set of bound shortcuts to be added to or removed in bulk by using the string key of that map. These changes often happen multiple times per second, and are somewhat time sensitive, since if a user presses a key combination likeCapslock + a
(toggle browse mode), immediately followed byh
(a key used in browse mode), a screen reader user would expect thath
is already bound, even if it was not before theCapslock + a
.I'm looking for comments, implementation concerns, links to related issues, requirements and edge cases I have not yet covered, and to gauge general interest in this proposal.
Once I've chatted with a few of you here on the issue page, or by email ([email protected]) if you don't have a GH account, I'll begin a portal draft, go through RFC, and see if we can get this hammered into a standard.
I will help with the implementation of the portal.
(I am being payed to work on this process, including implementation; responses will be fast during
UTC-6
working hours.)The text was updated successfully, but these errors were encountered: