Posted: Tue Apr 21, 2009 2:33 pm Post subject: Macspeech Dictate and NO3
I've noticed an interesting behavior when dictating into Neooffice using Dictate. Neooffice does not seem to remember cursor positions when making corrections. In other words, when I tell Dictate to "scratch that" (which effectively backspaces to the most recent pause in the dictation) the cursor does not go back exactly to that spot but tends to be one or two spaces short (to the right). This does not happen in Openoffice so I'm curious why it would in Neo.
As a side note, and as many of you probably know, Neooffice is much faster then Openoffice, and the speed difference is plainly visible when backspacing using Dicate, and when dictating contractions. In Openoffice, "it is" becomes 'its--for some reason, the apostrophe appears before the letters, whereas in Neooffice that doesn't happen. It seems to happen with all contractions in Openoffice. Strange...
Since this is a commercial product that runs only on Intel Macs that have a microphone, neither I nor narf can setup your environment. So, we can only guess as to what key events that product actually sends to NeoOffice when you say "scratch that".
What I do know is that NeoOffice's underlying OpenOffice.org code has several autoreplace and autocorrect features that may be kicking in. To see which of these features are turned on, select the Tools :: AutoCorrect menu and in the dialog that appears, click on the Options tab. If you uncheck all checked options and press the OK button, do you see any change?
Wait. Before you fuss with all of the autocorrection settings, can you do the following steps and tell us if this disables your dictation software in NeoOffice and OpenOffice.org?:
1. Launch the System Preferences applictions
2. Click on the Universal Access icon
3. Uncheck the "Enable access for assistive devices" checkbox
If this disables your dictation software, then I know why you are seeing different results in NeoOffice compared to OpenOffice.org: NeoOffice 3.0 does not include OpenOffice.org 3.0.1's native Universal Access code.
Unfortunately, while NeoOffice 3.0 includes nearly all of the features in OpenOffice.org 3.0.1, we have not been able integrate OpenOffice.org's Universal Access code into NeoOffice.
Without OpenOffice.org's Universal Access code, you will get see this same behavior which was originally discovered in older versions of OpenOffice.org in bug 1553: the dictation software cannot predict where the cursor is in document.
If our dictation software fits requires OpenOffice.org 3.0.1's new Universal Access support and you cannot workaround the cursor mismatch bug that exists in all versions of NeoOffice, we recommend that you use OpenOffice.org 3.01, Microsoft Office, or Apple iWork.
Thanks for your responses. Deselecting the formatting options did not work. And deselecting universal access does not disable dictation in either of the two programs.
Thank you for your suggestions regarding alternatives that work with my dictation software. I have all three, but prefer to work with and support open source software whenever possible, so I will stick with Openoffice for the majority of my work when dictation is needed.
Thanks for your responses. Deselecting the formatting options did not work. And deselecting universal access does not disable dictation in either of the two programs.
Hmm. Then I assume that your dictation software does not query NeoOffice or OpenOffice.org through Mac OS X's Universal Access functions and erases by sending NeoOffice and OpenOffice.org a series of fake key events.
If my theory is correct, then there is probably something unique about those fake key events that NeoOffice is stumbling on. Since NeoOffice uses Java to process native key events, let me write a simple Java application that you can use to log the fake key events that your dictation software is sending.
I'll post a sample Java application in a few minutes.
OK. Attached is a simple Java test application. This application will display a 500 x 500 pixel empty window. When that window is the active window, all key events that the application receives will be printed.
Can you do following steps to run the application?:
1. Download the attached Test.class file and put it on your Desktop
2. Launch the /Applications/Terminal application, copy the following commands into the Terminal window, and press the Return key:
Code:
cd ~/Desktop
java -classpath . Test
3. Click on the empty window that appears, dictate a couple of words, and then tell your dictation software to "scratch that"
4. Press the Command-Q keys to quit the application
5. Paste the output in the Terminal window into this forum topic
Text pasted below. I hope this is what you are looking for.
Joe
Code:
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=79,keyText=O,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=79,keyText=O,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=?,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=75,keyText=K,keyChar='k',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='k',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=75,keyText=K,keyChar='k',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='a',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=89,keyText=Y,keyChar='y',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='y',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=89,keyText=Y,keyChar='y',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=',',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='h',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='a',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='a',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=70,keyText=F,keyChar='f',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='f',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=70,keyText=F,keyChar='f',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='w',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='w',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=79,keyText=O,keyChar='o',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='o',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=79,keyText=O,keyChar='o',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=68,keyText=D,keyChar='d',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='d',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=68,keyText=D,keyChar='d',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=83,keyText=S,keyChar='s',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='s',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=83,keyText=S,keyChar='s',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=46,keyText=.,keyChar='.',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='.',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=46,keyText=.,keyChar='.',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=37,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=37,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=?,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=8,keyText=?,keyChar=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=?,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=8,keyText=?,keyChar=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
Not sure, but I know I didn't press the any keys--all dictation. I said "scratch that" and then copied the term window output. I'll check again and keep better track of what I said.
Not sure, but I know I didn't press the any keys--all dictation. I said "scratch that" and then copied the term window output. I'll check again and keep better track of what I said.
Can you speak the following into the test program and post the output?:
Code:
OKAY, here are words,
Then say "scratch that".
Also, when you do the same in Apple's TextEdit application, what gets deleted? Does only the "," get deleted or does "words," get deleted?
Okay, first, Textedit doesn't seem to have the same problem--the cursor returns to the correct position after saying "scratch that."
Here's the output from the java program:
Code:
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=79,keyText=O,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=79,keyText=O,keyChar='O',modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=?,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=75,keyText=K,keyChar='k',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='k',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=75,keyText=K,keyChar='k',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='a',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=89,keyText=Y,keyChar='y',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='y',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=89,keyText=Y,keyChar='y',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=',',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='h',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='a',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyText=A,keyChar='a',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=84,keyText=T,keyChar='t',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='t',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=84,keyText=T,keyChar='t',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='h',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=72,keyText=H,keyChar='h',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='e',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=69,keyText=E,keyChar='e',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='w',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=87,keyText=W,keyChar='w',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=79,keyText=O,keyChar='o',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='o',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=79,keyText=O,keyChar='o',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='r',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=82,keyText=R,keyChar='r',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=68,keyText=D,keyChar='d',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='d',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=68,keyText=D,keyChar='d',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=83,keyText=S,keyChar='s',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='s',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=83,keyText=S,keyChar='s',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=',',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=44,keyText=,,keyChar=',',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=37,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=37,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=?,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=32,keyText=?,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=8,keyText=?,keyChar=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=?,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=8,keyText=?,keyChar=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=157,keyText=?,keyChar=Undefined keyChar,modifiers=?,extModifiers=?,keyLocation=KEY_LOCATION_LEFT,rawCode=0] on panel0
Thanks again. Please don't waste too much time with this!
Depends, actually. The first one should delete the last comma, the second one up to, but not the last comma, and so on. MacSpeech has funny behavior because if one pauses before punctuation, then punctuation is not treated as part of the preceding text. If no pause, then it deletes the punctuation and the preceding text, up to the previous pause.
OK. I now understand how MacSpeech deletes text. It uses the following steps:
1. It highlights the text to delete by sending Shift-< keystrokes to the applications. The number of those keystrokes sent to the application is equal to the number of characters that MacSpeech wants to delete.
2. It sends a spacebar keystroke to overwrite the selected text with a space.
3. It sends a Delete keystroke to delete the space sent in step 2.
My guess is that the NeoOffice problem is in step 1. My theory is that Java is collapsing some of the keystrokes in step 1 into a reduced number of keystrokes. Unfortunately, I would need to have MacSpeech installed to test this theory.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You cannot download files in this forum