Here is a suggestion for a temporary workaround for the character transpositions (and omissions) that occur when running Dictate simultaneously with QuicKeys:
QuicKeys operates with three processes. The one that causes the problem has the name "QuicKeysUserEventHelper". Instead of quitting and restarting QuicKeys -- a time-consuming process if you have many commands -- it suffices to temporarily suspend QuicKeysUserEventHelper. This can be implemented as follows.
In Dictate, go to Tools > Commands and define two new commands of type "Applescript." I called mine "Quick Stop" and "Quick Go".
Here is the Applescript code for "Quick Stop":
------------------------------------------------------------
property procName : "QuicKeysUserEventHelper"
set cmd to "ps aux | grep '" & procName & "'"
set procNo to word 2 of (do shell script cmd) as integer
set cmd to "kill -STOP " & procNo
try
do shell script cmd
end try
------------------------------------------------------------
And here is the Applescript code for "Quick Go":
------------------------------------------------------------
property procName : "QuicKeysUserEventHelper"
set cmd to "ps aux | grep '" & procName & "'"
set procNo to word 2 of (do shell script cmd) as integer
set cmd to "kill -CONT " & procNo
try
do shell script cmd
end try
------------------------------------------------------------
To get visible feedback, I use Growl (http://growl.info/). If you have Growl installed, try the following scripts.
For "Quick Stop":
------------------------------------------------------------
property procName : "QuicKeysUserEventHelper"
tell application "GrowlHelperApp"
set allNotificationsList to {"QuicKeys suspended.", "Error suspending QuicKeys."}
set the enabledNotificationsList to allNotificationsList
register as application ¬
"QuicKeys-STOP" all notifications allNotificationsList ¬
default notifications enabledNotificationsList ¬
icon of application "QuicKeys"
end tell
set cmd to "ps aux | grep '" & procName & "'"
set procNo to word 2 of (do shell script cmd) as integer
set cmd to "kill -STOP " & procNo
try
do shell script cmd
tell application "GrowlHelperApp"
notify with name ¬
"QuicKeys suspended." title ¬
"QuicKeys suspended." description ¬
"Process QuicKeysUserEventHelper is stopped." application name "QuicKeys-STOP"
end tell
on error
tell application "GrowlHelperApp"
notify with name ¬
"Error suspending QuicKeys." title ¬
"Error suspending QuicKeys." description ¬
"Error encountered when trying to stop process QuicKeysUserEventHelper." application name "QuicKeys-STOP"
end tell
end try
For "Quick Go":
------------------------------------------------------------
property procName : "QuicKeysUserEventHelper"
tell application "GrowlHelperApp"
set allNotificationsList to {"QuicKeys re-activated.", "Error re-activating QuicKeys."}
set the enabledNotificationsList to allNotificationsList
register as application ¬
"QuicKeys-CONT" all notifications allNotificationsList ¬
default notifications enabledNotificationsList ¬
icon of application "QuicKeys"
end tell
set cmd to "ps aux | grep '" & procName & "'"
set procNo to word 2 of (do shell script cmd) as integer
set cmd to "kill -CONT " & procNo
try
do shell script cmd
tell application "GrowlHelperApp"
notify with name ¬
"QuicKeys re-activated." title ¬
"QuicKeys re-activated." description ¬
"QuicKeysUserEventHelper is running." application name "QuicKeys-CONT"
end tell
on error
tell application "GrowlHelperApp"
notify with name ¬
"Error re-activating QuicKeys." title ¬
"Error re-activating QuicKeys." description ¬
"Error encountered when trying to continue process QuicKeysUserEventHelper." application name "QuicKeys-STOP"
end tell
end try
------------------------------------------------------------
Now, all you need to do is this:
When you start dictating, suspend QuicKeys by saying "Quick Stop". To re-activate QuicKeys, say "Quick Go".
Happy Dictating!