Tips for power users/anyone that does more than read emails/light web browsing to be more productive on Mac OS with voiceover than windows with NVDA/JAWS.

macOS and Mac Apps

Hi all

I’m a Software developer that recently made a complete switch from Windows to mac. I have very low vision and use a combination of Voiceover, Zoom and inverted contrast.
I thought I’d write up a few tips/suggestions that made me just as much if not more productive in Mac OS using voiceover than on Windows using NVDA.
I decided to do this as I read of/hear of many blind/low vision users that switch to running windows on Bootcamp or a VM as they can’t get comfortable with voiceover or think that voiceover can’t perform some task/s NVDA can etc etc.
Initially when I got my first Macbook pro in 2011 I did the same (installed Windows using Bootcamp) as I couldn’t get comfortable with Voiceover having used JAWS at the time

Things have changed quite a bit since then (Especially in the last year) to the point where I am now able to do my work (Full Stack Web/mobile development) on a Macbook air using Voiceover.
I met a developer online a few weeks ago who was/is busy losing his vision and I had a call with him where I showed him how I go about performing certain tasks which made me think it might be a good idea to post this as I struggled a lot to get to this point and hopefully this might help someone at some point…

My voiceover settings: (personal preference however I’ll try justify my reasoning for every setting)
Please note: I only listed the settings I changed.
VO category: General:

Keys to use as the VoiceOver modifier: ⇪
- Not sure why anyone would want to use the alternative 2 keys (CTRL + option)

Allow VoiceOver to be controlled with AppleScript (ticked)
- This allows apple scripts to control voiceover e.g. (keyboard commander + t) will read the date and time.

Category Verbocity:

tab: speech

Default Speech Verbosity: low
- This is personal preference and maybe better for someone just starting out to set to a higher level.

tab: text

Punctuation: some
- again personal preference…

While typing speak: nothing
- I’m comfortable typing and don’t need voice feedback every time I type something.

When moving the cursor: Speak text that the cursor passes.
- I definitely need feedback while moving the cursor through a document.

When reading a capital letter: Play tone
- I find this easier to follow than the alternative pitch change.

Append phonetic pronunciation to single characters (ticked)
- Some characters sound very similar sometimes so this can be useful when navigating by character.

tab: anouncements:

Speak size and position in:milimeters
- Personal preference…

category: Speech:

voices tab:

I am using the Tessa compact voice with rate set to 100% (Again personal preference)

Pronunciation tab:

I have to read through a lot of code using Voiceover and I added a few Pronunciations which makes it sound similar to the synthesizer i’m used to (Eloquence).

My Pronunciations (symbol followed by Pronunciation text:

- dash
. dot
“ quote
( left paren
) right paren
{ left brace
} right brace

Category: Navigation

Grouping behaviour: Ignore groups
- Groups only waste time and make Mac OS with voiceover feel like more work than it should. With this setting when I enter a new finder window I can start navigating right away instead of first needing to interact with the main view…

Mouse pointer:: Ignores VoiceOver cursor
- This setting could/should probably be changed dependant on the specific scenario however having it set to ignore VO cursor is probably best for most scenarios…

Allow cursor wrapping (unticked)
- If cursor wrapping is allowed it sometimes causes issues with the ignore groups setting above.

Enable fast searching: (ticked)
- I have the key set to the default (right cmd key) this allows me to speed up interactions with dialogs e.g. If Safari asks me to allow downloading from a certain site I hold right CMD and press a for allow, Voiceover focus then jumps to the allow button and I can just hit space or VO perform action.

Category: Web

tab: Navigation

Navigate web pages by:: DOM
- Not sure why they even have another setting here as it doesn’t make sense to re-arrange a web page from the way it was created as it can get quite confusing…

Speak column and row numbers When navigating web tables: unticked
- Personal preference however I can count and rarely navigate tables with 100+ lines where it’s important for me to know the row/col number…

Enable Live Regions ticked
- I wish there was a way to toggle this setting as this can get quite verbose in some instances e.g. Microsoft teams.

Always allow keyboard commands to navigate websites ticked
- This allows me to navigate and select text in web pages on Safari, chrome and Firefox like I’m used to in Windows using the arrow keys where holding option key + left or right arrows would navigate/select by word, CMD + up/down arrows by line etc…

Category: Sound

Enable audio ducking unticked
- I unticked this as Audio ducking would happen at random when browsing the web.

Category: Visuals

tab: panels

Display spoken text in a caption panel: (Unticked)
- This only adds unnecessary clutter.

category: Commanders

tab: keyboard

Enable Keyboard Commander: (ticked)

I have the keyboard commander set to right option key and have the following commands set:

c: Command Open Application: Microsoft Teams

.: Command Go to Linked Item
- - This helps me to jump to the main content in Safari easier/with one hand as I often prefer to use one hand to browse the web.

/: Command Perform Action for Item
- This allows me to perform the VO + space bar command to activate/click the item in the voiceover cursor using one hand.

e: Command Open Application: TextEdit
- Very convenient to quickly open the text edit application.

g: Command Open Application: Google Chrome

i: Command Open Application: IntelliJ IDEA 2021.1 EAP

p: Command Open Application: ExpressVPN

r: Command Open Utility: Terminal

s: Open Application: Safari
v: Command Open Application: Visual Studio Code

tab: quickNav

Enable Quick Nav: (ticked)
- Very important for navigating in general (especially in a browser with single key navigation turned on)

Allow toggling of Quick Nav using left and right arrow keys: (ticked)
- Toggling quickNav is probably the most frequent action I perform, will explain/expand on this below.

Enable single-key web page navigation when using Quick Nav: (ticked)
- Extremely important for navigating any webpage…

in dialog Assign commands:

modifier key: Single keys

I added the following shortcuts/mappings:

/: Command Find Next Searched Text.
- This makes it easier to jump to next search text online, One example of where I use this is on reddit. With quickNav enabled I search for ago and then press / to jump to the next match which means I can then press the right arrow to hear/read the next comment.

?: Command Find Previous Searched Text
- Same as above only ? jumps to the previous search text match.

.: Command Find Next Auto Web Spot
- This makes it easy to jump to the next auto web spot using one hand, I use this very often especially on sites with articles to jump to the main article content (However it’s sometimes hit or miss with auto web spots)…

category: activities.

I added an activity called code which I use when reading/writing code, I changed the punctuation to all and set this activity to active whenever I open Visual Studio Code, IntelliJ Idea or Terminal

Some general tips/ways I go about things.

Browsing the web:
I’ll press right option + s to open safari.
Then I’ll enter my search text or the URL I want to navigate to.
When the page has loaded sometimes focus will be in the main HTML content sometimes not, if not I’ll press my keyboard commander shortcut (right option + .) to jump to linked content (In this instance the HTML page).
With quickNav and single key navigation turned on I’ll press h to jump to different headings or . which I mapped to jump to next auto web spots.
When I reach the section I want to read With quicknav turned on I’ll press the right arrow key to read the next section (seems like it reads by paragraph)…
If I want to read by line or copy text I’ll turn off quickNav and use the arrow keys to navigate or select text.

Work/Software development:

For all my frontend work I use Visual Studio code which as far as I can tell is fully accessible with Voiceover.
For all my Java/Kotlin/Backend work I use the latest EAP release of IntelliJ Idea. After years of complaints Jetbrains finally invested a good amount of effort to make IntelliJ idea accessible and the latest EAP version is almost completely accessible with the odd issue here and there (If anyone finds a issue please report it on their bug tracker.

Terminal work:

This is the one thing that Voiceover does much better than any Windows screen reader.
When I enter a command in Terminal I turn off quickNav type the command and press enter.
If I want to then read the output I turn on quicknav interact with the shell and use the up/down arrow keys to read through the output.
I can select the current line/word by pressing VO modifier + shift + c which copies the last spoken phrase to the clipboard.
I can also select by pressing VO modifier + enter which makes voiceover play the drag sound, I can then navigate around using quicknav to select precisely up to the point I need to.
I can then press VO modifier + enter again and voiceover will jump out of selection mode, then I press CMD + C to copy the selected text to the clipboard.
If I’m reading through a very long stack trace/log file I can turn on quickNav and search for a text string e.g. “Caused by” which is extremely helpful/saves a log of time.

I installed the TDSR screen reader and it seems promising however it’s pretty useless as it’s not possible to read more than one terminal screen/ it can’t scroll up and down the window so pretty pointless unless you want to only read a few lines at a time and I see a issue on github someone created years ago without any response from the creator so…

The only thing I sometimes still miss on Mac OS is the eloquence Synthesizer as there’s no Mac OS equivalent that comes close in terms of speed/clarity… I tried the version someone posted on their website that uses Wine but it didn’t work on Big Sir with a M1 macbook air at all unfortunately (If anyone has managed to get this working please leave a comment).

It took me 10 years on and off to get to the point where I feel like I can get work done on Mac OS and be more productive on windows, I think when it comes to Voiceover it’s an amazing screen reader however the tutorials/guides online doesn’t go into nearly enough detail and seem to be aimed at very casual users in general e.g. people that read emails/do some casual web browsing so I hope someone finds some use/value in this post…
I’ve read a few blogs where authors suggest that Voiceover is old/needs a rewrite but I think it again comes down to those authors being used to another OS/screen reader and not learning Voiceover end to end (Which does take some time/effort).

To Justify the title (Why I now feel more productive on Mac OS than on Windows):
- It’s way less rare for voiceover to crash/stop reading anything which happens way too often on Windows with those third party screen readers.
- If the above ever happens it’s as simple as VO + F5 twice to get voiceover back and I haven’t yet encountered a time when that didn’t work where often on Windows I have to sign out or restart my laptop to get NVDA back…
- The Zoom magnifier on mac is way better integrated and never in the way.
- Siri is amazing at finding what I want e.g. keyboard settings which spares me searching through System preferences to find some setting/category.
- All the shortcuts for applications etc makes things VERY fast.
- Something I haven’t mentioned is hotspots which helps a lot when there are several regions In an application I need to jump to on a regular basis.
- The macbook air M1 doesn’t have a fan and I haven’t managed to get it hot at all where my Dell XPS Windows laptop sometimes doubles as a room heater/the fans turn on when the laptop turns on…
- The fingerprint reader and password autocomplete using Keychain is amazing/saves a lot of time.
- Overall very good quality components/machine compared to most Windows counterparts.
- I can mention many more but this post is already VERY long…



Submitted by Bruce Harrell on Sunday, March 21, 2021

vvo from the right side of the keyboard is often useful. Capslock in place of right side vo commands slow and awkward, e.g., capslock-f or capslock-w. I only mention this because you indicated you didn't know why anyone would want to use the control-option vo combo.

Smile. thanks for all your tips. I love helpful posts like yours.



Submitted by Will on Sunday, March 21, 2021

Very useful post, but doesn't the "chrome has new window" anouncement irritate you? only asking as you mentioned chrome?

Submitted by Piotr Machacz on Sunday, March 21, 2021

I've been using the Mac for a while and do a few things differently but you gave me a few useful ideas (assigning slash to go the next search result in quicknav particularly stands out.

I'm a little surprised by your preference over VoiceOver as opposed to TDSR for terminal output though, but I guess you care more about having a scrollback instead of good autoreading. Personally, I found VoiceOver's terminal support "nearly useless" as you put it because it can't follow what gets output and half the time says just new line or the last few words of output. So if this helps anyone, my take on the terminal workflow is I have a "silent" activity which mutes speech in the terminal letting TDSR take over. If I need access to a scrollback buffer, then I run screen (which is coincidentally also what the main developer does himself hence scrollback isn't a priority for him), and if I want to select a big chunk of output for copying I'll switch activities and select with VoiceOver as you described.

Another activity I have set up is one that mutes all VoiceOver sound effects which I have set to launch in any apps made with catallist and iOS apps running on my M1 Mac. Reason for this being is that for whatever reason in those apps VoiceOver waits for the sound effects to finish playing before it starts speaking, so having them muted makes those apps feel a bit more responsive.

Submitted by Deon588 on Monday, March 22, 2021

@Piotr Machacz THanks for that comment, I tried TDSR in tmux and it worked perfectly with split panes which Voiceover can't handle at all. And yes the scroll buffer is very important to me. I'm not experiencing the Voiceover terminal issues you mentioned (I'm on Big sir using a M1 Macbook Air). The only two things I miss/need from TDSR now that I can scroll in tmux + have 4 panes in one window is the ability to make TDSR stop speaking when I press a button as well as search for text when dealing with large output...

Submitted by Deon588 on Monday, March 22, 2021

@Will. I don't have that issue with chrome at all? Also one thing I forgot to add related to Chrome and Firefox is that if you want to navigate with quickNav turned off you have to enable caret browsing by pressing F7 and selecting turn on caret browsing in the dialog that pops up...

Submitted by Cobbler on Wednesday, March 24, 2021

Thank you for these great tips; several of which I have now followed.

However, I have a question about the following:

Enable fast searching: (ticked)

I have done this, but there is no change of behaviour to the right Command key, which still behaves the same as the left Command key.

This is on the latest public release of macOS 11.

I have toggled the setting option many times; tried it set to another key; and restarted my Mac multiple times. Nothing makes a difference.

Does anybody know if this is a bug? Or is there simply something screwy with my installation?

Submitted by Omar Altahaineh on Wednesday, March 24, 2021

thank you for this useful post, I would like to add that you can enable the trackpad commander and navigate your websites with just one hand., just like you do on the iPhone.
enjoy your Mac journey, peace.

Submitted by Greg Wocher on Thursday, March 25, 2021

For me both Chrome and Edge have the same issue. They both keep saying has new window. In Edge it will say Microsoft Edge has new window and in Chrome it say Google Chrome has new window. It gets very annoying. I took a quick look thru there settings but I am not sure what would cause this. If it were not for this I would probably use Edge as my default browser over safari.

Submitted by Vsevolod Popov on Thursday, March 25, 2021

Thank you for such an amazing post!
One thing why I switched back from MacOS to windows is that I need to use language switching often to be able to use Russian and english at the same time. Unfortunately MacOS doesn't have this automatic language switching support like windows or iOS have.
Also, my main point why I switched back to windows is because VoiceOver for Mac cannot read indentations like you can set it in NVDA so it will read indentations like 4 spaces or 8 spaces plus it can play the sound when indentation is changed so it really speeds up the work.
How do you do that on Mac?
And again thank you for such an interesting post!
Now i'll stick with windows and linux but I will also try to track what happens in MacOS accessibility because I have my MacBook air 2017.
And last question, do I understand correctly that you don't use trackpad at all?
Do you use the visual studio code's terminal or you use the mac's terminal only?
Thank you!

Submitted by Kevin Shaw on Thursday, March 25, 2021

I set right option and the = key as a shortcut to open Calculator. useful if you need to calculate something quickly or convert to hex.

Submitted by Deon588 on Friday, March 26, 2021

@Cobbler.When I turn on fast searching I can hold the right CMD key and type a letter, Voiceover focus would then jump to the found match not sure why It's not working for you...

Submitted by Deon588 on Friday, March 26, 2021

@Greg Wocher I've never experienced this, might be worth trying Firefox as well as they put a lot of effort into Mac OS accessibility last year......

Submitted by Deon588 on Friday, March 26, 2021

@Seva I'm not sure how to get Voiceover to read indentation, I tried adding a pronounceation for a space but it doesn't seem to work consistently... I very rarely have to write python so not that important for me. I know someone else that's a low vision Python developer on Mac Os so will ask him as well...

Submitted by Brett Lewis on Saturday, March 27, 2021

Thanks for this tip. turning this on helps a lot.
I had some trouble to enable it. I had to use the F7 key from the touchbar.
Generaly really great post. For the people who need indentation, the add-in for visual studio code works pretty well.
I also use braille so that helps too.

Submitted by Alan on Sunday, March 28, 2021

Very useful, it's, more or less, my own setup. However, I cannot agree. Just for the record, I am a developer too and Mac OS is unable to be as productive as Windows and Nvda right now.
It's only my opinion after trying everything: generally speaking, working with a Mac would require more key presses, less available apps, less responsiveness and less updates for the latest web apps and technologies.
So, if you are planing to switch, first try a Mac by yourself and see if it works for you.
A Mac can be very useful, but it's not for everyone and definitely it will not make you more productive.

Submitted by Deon588 on Sunday, March 28, 2021


Please expand on this? I know many serious web/mobile developers that prefer Mac OS so not sure at all what you're referring to...
As for the responsiveness I would suggest trying a M1 mac and deciding for yourself after that.
I have a 15" Dell XPS 9550 (I7 16GB RAM) that can't keep up with my M1 macbook air with 8GB unified memory in any scenario.
Some examples:

- When I compile an Angular app on windows it takes me about 2 minutes, On my mac it takes around 20-30 seconds.
- When I Open IntelliJ idea on Windows it takes about 30-60 seconds for everything to be ready, on Mac it takes about 3-8 seconds...

In terms of Software development you have a proper terminal + zsh and every command line tool you'll ever need, on Windows you have to use WSL to get some sort of useable linux environment and not everything works as it should + the terminal on windows is terrible compared to the one on Mac OS. While we're on the topic of terminals I don't know at all how to copy output spanning thousands of lines from Windows command prompt, powershell or Windows terminal using NVDA, is this even possible? The only thing I really miss from Windows/NVDA is IBM TTS (Eloquence) as none of the vocalizer synthesizers on Mac OS comes close to the speed/clarity of Eloquence. I wish someone with the required knowledge could write a driver for IBM TTS for mac. Seeing as it already works in Linux and Windows it can't be that hard, if I knew where to start I would write a driver myself...

Submitted by Karina Velazquez on Sunday, March 28, 2021

First of all thank you very much for this post. You exactly described part of my issues with macOS versus windows, and I'm still in that starting period when you have bootcamp with windows installed.

Well for this last, I would be very thankful if you could help with managing Microsoft office and Teams (this last is a nightmare) in the same way as on windows. I have seen your main work is with coding, but mine is with briefs and laws, so the main apps I use on windows for my job are outlook office, open book and teams, and I haven't found a way to make me feel as efficient with them as in windows, besides I haven't bought Fine Reader for Mac to replace open book in windows.

Think about it and hope you could give us some tips and tricks for these apps I mentioned.

Submitted by Voracious P. Brain on Sunday, March 28, 2021

for those of you with m1 Max, his voiceover more responsive than it is on slower machines? Every time I get a new Windows machine, like going to a quad core processor, I keep thinking Jaws and NVDA will eliminatedelays when things get complicated, like loading accessibility buffers, but it never happens. On Mac, I get a physical headache after an hour or two of using voiceover in situations where the number of objects slows down processing. Microsoft word is the chief example of this. in a multi page document with several comment annotations, there can be a half second delay with navigating by word, and also a noticeable lag when you even navigating by character. This quickly mounts up and makes using a Mac really frustrating. Otherwise, I’m in one of my ”I hate windows” phases. I have been using my ancient Mac a lot lately. For one thing, try pulling out an eight-year-old Windows laptop and having it run as good as new: it has never happened.

Submitted by a king in the north on Sunday, March 28, 2021

In reply to by Voracious P. Brain

I've had the same problems on windows. NVDA and jaws seem to become unresponsive if I'm doing anything intensive. Any idea as to why that may be, if you don't mind me asking?

Submitted by Voracious P. Brain on Sunday, March 28, 2021

In reply to by a king in the north

well, I don’t want to hijack the thread, but I think it has more to do with memory leaks than processing power. It happens most often when there are complex processing tasks in accessibility buffers, like word tooltips or Microsoft outlook HTML email messages with lots of formatting.

Submitted by Brett Lewis on Sunday, March 28, 2021

In VSCode the "indent report" extension basically plays a tone when the indentation level changes.
No real options but isn't really complicated.

Submitted by Greg Wocher on Monday, March 29, 2021

When I turn this on in either edge or chrome, focus does not seem to work right. If I move to a heading by using Quick Nav, I will turn it off and then try to move with the arrow keys. When I do this I am always at the top of the page instead of where I moved to with Quick Nav. I even try moving keyboard focus to VoiceOver focus using VO plus command plus F4. Even doing this with caret browsing turned on I am always take back to the top of the page when sing just the arrow keys to move. Anyone else see this?

Submitted by Matthew Whitaker on Monday, March 29, 2021

Hi. Thanks so much for creating this post. I found things I didn't know about with Voiceover... hope to start using these tips.
Keep doing your thing and have fun.

Submitted by Deon588 on Tuesday, April 27, 2021

@Karina Velazquez
I use teams successfully wit voiceover however I don’t use office so can’t comment on that…
Some Microsoft teams tips with Voiceover:

Teams seems to work much better with quicknav turned off I.E. you have to press tab to navigate around the app.

- It’s not as bad as it sounds to tab around as Teams has a lot of shortcut keys that jump to different sections of the app so the tabbing around is minimal, I would suggest you get familiar with the Microsoft teams shortcut keys.

- When you have announce live regions turned on it can get annoying when you’re in a meeting as voiceover will announce anytime someone else performs an action i.e. adds a message to chat or if someone raises their hand. This is also problematic when you’re busy talking as the other people in the meeting will hear the voiceover announcements. Two ways to handle this I alternate between are: Mute voiceover before you go off mute on teams and then unmute Voiceover after you are muted again in teams or you can use headphones. You can also disable live region announvcements in voiceover =preferences. (you can probably create an activity for teams where live regions are disabled in teams) however I prefer to still have context of other people’s actions in the meeting…

@Voracious P. Brain
This sounds like some kind of memory leak. I've never experienced this with my M1 macbook air. Have you tried restarting Voiceover when this happens?

@Greg Wocher
Yes I will report this on the chromiam bug tracker. It seems like they haven't implemented a feature where the caret follows voiceover focus (Wonder if it's possible in a non Apple browser...)

Another user on here (sorry I'm not sure who it was) suggested a workaround for this that's a bit basic but works pretty well.

You can add pronunciations for different indentation levels. E.g. I've set it up so 4 spaces is "in 1", 8 spaces is "in 2" etc.

It's not perfect (e.g. when I switch to Typescript or YAML and find we're using 2 spaces not 4) but it's been good enough for me so far.

If using vs code the extensions mentioned elsewhere is probably a better bet.

Submitted by mr grieves on Monday, May 31, 2021

Thanks so much @Deon588 for this post. It took me a while to get round to reading it, and I'll be going back to it again, but very useful.

Hello, I am curious to hear what language switching options that you feel are missing? I am also a multi language user and I find it just as easy to use multiple languages on the mac as on the iPhone. For example:
- Auto-identify language and use the appropriate dictionary
- Use ’Activities’ to auto-change language based on App
- Auto-identify language on websites and speak with the correct languageetc

Submitted by Victor Tsaran on Saturday, June 5, 2021

Thanks @Deon588 for posting the article. Lots of really useful tips here! Just like any other screen reader, VoiceOver has quite a few gems that many users either don't know about or are not sure how to take the advantage of. Similarly, VoiceOver has the features that do not work as advertised or are in a long-standing need of fixing. Having said all of the above, this is my primary screen reader because the combination of good hardware and software, plus my particular workflows, make it a good fit for me.

Re Chrome "new window" announcements. It is quite possible, you do not hear these because your verbosity is set to "low" setting which mutes all of the hints and help alerts.. They are definitely there, and quite likely can be fixed within Chromium codebase. It is also likely that they are using a kind of a tooltip that is not very well supported by VoiceOver or accessibility APIs. I think Mac OS's own UI sometimes produces similar announcements, e.g. "system has new system alert", "Safari has new window", etc.

Re Terminal. Just like someone else said, VoiceOver's spoken support for Terminal is really really bad, and this is after years of bug reporting. After typing a command, sometimes you hear the results for the last operation, sometimes it's a random string from the buffer, sometimes nothing at all, sometimes just a command prompt -- so it's a roulette!

Re coding. I was using Android Studio up until now, which I believe integrates IDEA environment, so it's fairly accessible, as you said.
I am also a big fan of Emacs / Emacspeak combo, though it does require getting used to, not for everyone, really.
Xcode is also pretty good in many ways, though be prepared to use a lot of Vo-navigating around. Armed with a few built-in keystrokes though, you can master this environment as well. Like you, I also created a special activity for Xcode, especially to battle with Objective C and its "smileys and frowns" when reading function declarations, etc.

Re quick navigation. I don't know what it is, but on every MacBook I've used, VoiceOver tends to randomly toggle QuickNav in random places, usually inside rich-text edit fields, but not always. Apple claims they cannot reliably reproduce this behavior. I cannot either, and so the issue goes unaddressed for years now. <disappointed>

I could probably go on and on, about audio-ducking, a subpar automatic language switching, broken Voices rotor, etc, etc.

I'm sure though that every screen reader has its good and bad sides, and VoiceOver is no stranger to those as well!
I would not personally say it made me more productive as compared to Windows screen readers, but I got used to things and try to concentrate on the positive as much as I can!

Thanks for the post once more!

Submitted by mikołaj hołysz on Saturday, June 5, 2021

I have bought my first M1 Mac almost a month ago, and I feel like I've finally managed to assemble a workflow of my own. Here are some tips that complement (but do not replace) the first post:

1. Web Browsing.

I prefer Safari over Chrome (haven't played with Firefox yet). The ability to read text line-by-line is really useful, particularly when you need to deal with code samples. Quicknav seems a little bit less responsive to me, so I mostly use normal VO navigation, rarely with Control-Option lock on. I have Command two finger flick left/right set to move me by headings, as pressing ctrl+option+command+shift+h is a little bit unwieldy, same with enabling quicknav, finding the right heading and disabling it. I often prefer to read pages line-by-line, using the trackpad to navigate by heading, standard VO commands to navigate by links if needed, and quicknav for the occasional esoteric command.

Today, I've also set cmd+2 finger up and cmd+2 finger down to move me by text fields, as I got annoyed by how cumbersome Messenger was to use. This will come in handy on other sites too, though.

For reading articles and such, I mostly use Safari's reader mode. It gets rit of most of the clutter, completely elliminating the need to actually hunt for the article itself. It can even deal with some (but not all) cookie and GDPR consent popups, which are a big annoyance if your country is covered by EU law.

Webspots are a godsend. I don't have many of them, but they do make things much faster on some sites. The most similar thing on Windows is Jaws's place markers. They essentially let you mark a specific place on a webpage, to easily jump to it in the future. My use cases include i.e. the disconnect button on Discord, or a "sign in with SSO" link on a website that I need to interact with almost every day. Using that website on a Mac is much faster than on Windows, I just move to the webspot for "sign in", Vo click, move to the webspot for "SSO", Vo click, and let keychain auto fill my username and password. That's about five seconds, compared to ten, fifteen with NVDA. For sites where you click the same thing often, webspots are really useful.

2. General VO usage.

I'm bilingual, so I needed to find a way to switch between voices quickly. The easiest way I found was to set your speech rotor (VO+command+shift+left/right) to "voice", and then add trackpad commander gestures, shift two finger left/right in my case, to switch quickly between voices. The commands are called "Select Next Option Up In Speech Attribute Guide" and "Select Next Option Down In Speech Attribute Guide", respectively. If you need to change other voice parameters, use the built-in trackpad gestures, mostly the rotor with modifiers

If some voices appear twice, or if you have voices that you don't want, try removing them, adding them back and then removing them again, restarting voice over after each step.

I use the item chooser a lot, both on webpages and in normal Mac applications. Vo+f also comes in useful pretty often, particularly in places where item chooser takes a very long time to load. The application and window choosers come in useful sometimes, the latter for focusing system dialogs, which can't be located any other way.

I don't use keyboard commander, as I use both option keys for entering Polish diacritics. I'm working on a new tool in that space, though.

3. Coding and the terminal

I use TDSR for the terminal almost exclusively. I have an activity that mutes my Voice Over. My solution for scrolling back is just piping the command into "more", exactly as I did on Windows. Sometimes that doesn't work, usually because the output goes to standard error, not standard output. In that case, you need to type something like "command 2>&1 | more", and then it should work. In the rare cases where it doesn't, or where more can't be used (i.e. because you're in an interactive cli or a repl), you need to fall back to Voice Over, same for copying text.

While Visual studio Code is great, I also love TextMate. It's more like Notepad++, but better in a lot of respects. I was really impressed by what it could do when I saw it for the first time. For example, I had to deal with some college assignment that involved programming in MIPS assembly. TextMate instantly recognized which language it was dealing with (despite the generic .asm extension), and offered to install the appropriate language support files. It seems to support many more languages than NPP does, I still can't believe that Notepad++ doesn't natively support Go.

I use a custom punctuation scheme for coding. I based it on "some", to avoid pronouncing newlines and "right single quotation marks", for example. I just added all the characters I needed. I personally prefer replacing punctuation with much shorter equivalents, i.e. "par" and "rap" for parentheses, "lace" and "race" for braces, "brack" and "crab" for square brackets, "is" for equals etc. I did that on Windows, I do so on the Mac too. Even if you aren't a fan of that approach, making a custom punctuation scheme is a good idea, as Apple's character names are really long-winded. I use pronunciations to replace combinations of characters that commonly appear together with shorter mnemonics. In particular, I replace () with em par, [] with embrack and {} with embrace. This significantly aids in reading complicated code with nested function calls. When configuring my punctuation scheme, I also put a comma at the end of the replacement strings for some characters. For example, "," shouldn't be replaced by just "comma", but with "comma,". The extra comma in the replacement gets passed straight to the speech synthesizer, making it pause after every encountered comma. This makes code much less overwhelming. Whether you should do so, or after which characters, depends on your own preference, the speech synth, the language you're coding in, and the speed of your own brain. For example, If I was to code in LISP, I would probably want that extra comma after opening and closing parentheses, for learning Swift, I prefer to also have it after a colon, and so on.

There's an issue that if you have too many punctuation characters without an intervening space, the punctuation is going to be omitted entirely, regardless of your punctuation scheme. In particular, if you have a string like, you won't hear the dots. This is often an issue when you're traversing a nested object / module hierarchy, which often involves at least a couple dots.. Even something as innocent as System.out.println("Test"); is just too much and triggers this. This doesn't seem to be the case with every synth, though.

There's another bug where punctuation schemes won't switch. TO work around it, switch to the intended scheme and restart Voice Over, it should work. Both of those need to be reported to Apple.

If you edit code in anything other than Visual Studio Code, Peter's indentation extension for Hammerspoon is really useful, you can find a link at the end of this post.

4. General Mac usage.

If you're comfortable around the terminal, get homebrew. It lets you install almost any app with a single command, not just commandline tools. Most of the popular (and a lot of the less popular) Mac apps are there. It's much less of a pain to use than dealing with websites, hunting for download links and unmounting volumes.

Apple Mail is the best desktop email client I've ever used. Despite thousands of messages in my inbox, it works lightning fast. On a pretty powerful Windows computer, Thunderbird took about half a minute to launch, was generally unresponsive and made the laptop noticeably hotter, hotter than some less demanding mainstream video games. Apple Mail launches in a second, doesn't have any responsiveness problems whatsoever, and the Mac is as cold as it always was, despite Mail running constantly for the last couple hours. The ability to copy attachments between emails, no temporary downloads folder involved, is also really cool.

Launchbar is a really great app, it lets you quickly search for stuff (essentially a better spotlight), quickly take actions (i.e. call the contact you just found), act a s a pocket calculator, and much, much more.

If you can get your hands on Rogue Amoeba software, it's worth it. The ability to easily adjust the volume of specific applications, record specific apps or your system sound, possibly along with your microphone, or even quickly and easily stream an app to Discord without messing with repeaters and virtual audio cables is also pretty cool. You can achieve most things with just Audio Hijack and Blackhole, which is an open source Loopback equivalent. Of course, we do not recommend optaining software from pirate websites.

For reading ebooks, I use a python script (link at the end of the post). The script can convert epub to markdown. It should be executed like `epub2txt-all --no-metadata --ftfy in_file.epub`. It's probably the best conversion script out there, much better than i.e. Calibre's ebook-convert. I read the markdown files with textMate, using either jump to symbol or cmd+f to move between chapters. TextMate remembers your last position when you close a file, so there's no need for bookmarks. If you want custom bookmarks/annotations, just precede them with a particular string of your choosing, "@#@!$" would probably work great. The scrit requires Python, "ftfy", natsort and html2text. Python can be installed via Homebrew, the rest can be installed with pip3.


Hammerspoon extension for indentation tones

script for converting ebooks to epub
we're only interested in the file epub2txt-all from that repo.

Submitted by Florian on Saturday, June 5, 2021

What I tend to do with epubs, even on windows, is extract them :)
.epub files are renamed zip archives in almost all cases, so if you extract them to a folder, you get access to the files inside, which more often than not are just HTML files you can open in Safari.
You lose easy navigation between chapters, you can compensate by changing the final digit in the URL to get to the required chapter, or finding the table of contents file and click around from there. I've found this works better than most epub readers, particularly where line length, the honoring of line breaks and things like link detection are concerned.
Definitely seconding Launchbar and Rogue Amoeba's stuff. TDSR sounds useful, I hope it won't die by the wayside due to lack of maintenance given the piss poor performance of VO in a terminal currently, it sounds like one can get the best of both worlds using TDSR in combination with Screen or Tmux, take your pick :)

Submitted by mikołaj hołysz on Saturday, June 5, 2021

In reply to by Florian

For whatever reason, though, archive utility can't deal with some of those. I have an epub file here that it couldn't extract, so I assumed it must be something different.

Turns out that the unzip command could deal with it perfectly fine, so that's one thing to try when archive utility fails.

Submitted by Kelly Ford on Saturday, June 5, 2021

Some great info here. One handy feature as you learn VoiceOver is the command search. Press VO+h twice and you'll get lists of all the commands you have available. Like most other VoiceOver lists, you can linmit this by starting to type what you want and press enter at any time to execute the command.

The Item Chooser, which has been mention ed here too, is another frequently used feature for me. It can make getting to most items in an app quite rapid.

Submitted by Dan TeVelde on Thursday, June 10, 2021

This was a great article. I primarily use windows only because that is what I know. I use an iPhone and find it a real game changer. I may be going back to school and they use Apple in their education platform. they are willing to work with me. all I would need to do is get a mac and some training. I like the idea of learning something new. Windows is getting really boring. so many keystrokes to memorize and I think JAWS is getting too complex. Despite the complaints some people have made about Braille support on the mac I'm willing to give it a try. I really like the Apple podcasts and always learn something new. it's all a matter of money. I'm trying to get funding for school and for getting a mac. the school only supports Apple computers with the Intel chips. I'm not sure that this would be a disadvantage since I would be a first time mac user. I hear lots of negative comments about Apple which I generally ignore. I also like the fact that everything synchronizes when I get a new iOS device. i got an Apple watch and a new phone last year and everything synchronized automatically. I can't say the same for Microsoft. I have Outlook on my windows computer and iPhone and can't get my windows calendar to synchronize with iOS. I'll be interested in what others have to say.

Submitted by Ekaj on Thursday, June 10, 2021

Thanks for this excellent post. What you say is very true. I began using a Mac at the end of 2013, and since then I've learned a lot. I love VoiceOver and contrary to what some say, improvements are being made. Apple is a huge company with a lot on their plate, but they certainly have taken accessibility seriously and no doubt will continue to do so. Just yesterday morning I accessed a local nonprofit organization's learning portal using my iPhone just to see if it was any better than it is with VoiceOver on the Mac. Sadly it isn't, but then it dawned on me that there is an iOS VoiceOver gesture to label buttons. Now the task is to try and remember that gesture, so that I can try it out on their portal.

Submitted by Vsevolod Popov on Saturday, June 12, 2021

In reply to by Larry

Let me disagree with you.
The automatic language switching on mac doesn't work the same way as on iPhone.
The simplest example:
My native language is russian, but I prefer to use my mac and iPhone in English.
When I move between files in finder for mac and encounter a file with cyrilic letters, I will here cyrilic letter cyrilic letter from Alex or the way how usually nuance voices try to read russian with their english voices.
So I always have to press command shift VO plus arrows to switch voices and then switch back to Alex for example.
However, on iPhone while using English interface of the phone when encountering russian text it will automatically switch to russian voice and russian text will be read as needed.
But I will be glad to know what workaround you use.

Submitted by Florian on Saturday, June 12, 2021

Both seem to have their weird quirks, from my limited usage.
The mac will happily read , say, HTML in another language using that language's voice, but if that language is in another alphabet and, for example, you want to pick an option in a popup button, that all goes out the window and Alex takes over, with usually disastrous results :)
iOS is weird in language switching in another way, though, and I'm considering making a topic on this over at the iOS side of things but when I have iOS in a different language to English and set the VoiceOver voice to English for apps that are in that language, it will randomly keep switching to the standard voice in a somewhat unpredictable pattern. Sometimes it'll do it when switching apps, sometimes when just moving across the screen or looking at the status bar, it's actually quite annoying :)