My name's Jason Bratcher from Valrico (just east of Tampa), Florida, U.S.A.
(some of you others know me by my Mastodon id @BlindHedgehogStew@C.Im -
that's where I toot with the best of the ancient Mastodonian tuskies
(granted I tend to share more content).
So the namesake for this add-on is both a play on the caterpillar and a Sonic the Hedgehog badnik robot character called CatterKiller.
Hence ChatterKiller is born!
My job here is to quietly keep NVDA from saying phrases like
'left', 'right',
'top', 'bottom',
'no previous', 'no next',
'no containing object', 'no objects inside',
'no previous review mode', 'no next review mode'.
I was put here to replace NVDA's spoken object review boundary messages with tones.
The tone statements go as follows:
(For All Statements the '0' indicates a silent channel
(Meaning you can't go back any further)).
(First 4 statements still announce the character/word/line at the boundary point).
- TONE_LEFT = (330, 65, 45, 0)
- TONE_RIGHT = (330, 65, 0, 45)
- TONE_AT_TOP = (880, 65, 45, 45)
- TONE_AT_BOTTOM = (440, 65, 45, 45)
- TONE_NO_PREVIOUS = (330, 65, 45, 0)
- TONE_NO_NEXT = (330, 65, 0, 45)
- TONE_NO_PARENT = (262, 60, 45, 45)
- TONE_NO_CHILD = (131, 60, 45, 45)
The following messages also use the same tones:
- 'No previous review mode' uses TONE_NO_PARENT
(NVDA+NumPad1
- 'No next review mode' uses TONE_NO_CHILD
NVDA+NumPad7
Two new scripts are available for custom assignment: - NVDA+NumPad1: Play the "No Parent" tone (TONE_NO_PARENT) - NVDA+NumPad7: Play the "No Child" tone (TONE_NO_CHILD)
To assign these: 1. Go to NVDA Input Gestures. 2. Under the ChatterKiller branch, assign NVDA+NumPad1 to "Play 'no parent' tone" and NVDA+NumPad7 to "Play 'no child' tone".
ChatterKiller hooks into NVDA's boundary message system. If the review mode boundary (for example, when pressing NumPad8, NumPad4/6, etc.) triggers a standard NVDA boundary message such as "No containing object" or "No objects inside", and those are already mapped in BOUNDARY_MESSAGES, the correct tone is played automatically.
For keys like NumPad1 and NumPad7, if NVDA emits a unique message (not in your BOUNDARY_MESSAGES), you need to map it, or add a script handler for custom tones.
GettingStarted:
1. Download+install as any other addon (this is an external install Not a Store submission
hence you'll see 'external' showing as the source).
2. Go to the NVDA Input gestures and locate the ChatterKiller branch
(one unassigned keystroke is here - to toggle the addon on or off;
Assign a keystroke to this (like NVDA+Shift+c).
3. OK the dialog.
4. Tap the assigned keystroke so the addon is enabled.
Now start object navigating/review cursor with the extended NumPad (Desktop) or the alternate (laptop) commands.
If working right, tones play to indicate the boundaries of the dimensions of navigation via object navigation/review cursor.
My work is done here;
You can edit the __init__.py file to change the numeric values for the pitch, duration, left channel volume and right channel volume so you don't have to use hard panning;
Some people process partial panning possibly better than a true hard pan (which is what I initially planned on for proof of concept).
AnyWho, happy ChatterKilling!