Welcome!
Welcome to my new blog!
I'm Eric Brown, and I'm a developer in the Windows User Experience team. I'm responsible for making dictation work in Windows Speech Recognition.
Dictation relies on the Text Services Framework to make things work, so I know a lot about that, too.
Unfortunately, not a lot of other people know about the Text Services Framework; I hope to fix that.
Comments
Anonymous
April 18, 2007
How can one use TSF in .NET 3.0 to process keyboard input from other applications (similar to using an a system-wide or application-specific keyboard hook)? Could we do this with managed code? It seems unlikely according to some people: "Unfortunately, I do not know of any specific way to allow for a managed (.NET) TSF Text Input Processor. I will inquire further but I suspect that this is not possible given how it has to be integrated into essentially any thread using it for input, whether managed or not." http://blogs.msdn.com/michkap/archive/2006/08/18/706063.aspxAnonymous
April 19, 2007
Dan - what are you trying to do that requires inspecting the keyboard input from other applications?Anonymous
April 19, 2007
Thanks, Eric, for your reply. Since, as you say elsewhere, a managed solution would be more difficult if not impossible, I retract my first question :) For the record, my project is to provide system-wide abbreviation expansion (like AutoCorrect but more advanced and available in most Windows applications). This is easy enough using a system-wide keyboard hook. So I'm just going to build upon the popular, open-source solution AutoHotKey (maintained with Visual C++ 7.1), which provides system-wide abbreviation expansion. I was interested in TSF because it seems like the next-generation alternative to a system-wide keyboard hook. However, even with MSDN's TSF samples from 2001 to build on, that would be a lot more work. (Of course, I'm sure there would be some advantages, such as getting context, underlining and highlighting text, etc.)Anonymous
April 20, 2007
TSF is actually a very good solution for abbreviation expansion, and would definitely have the advantages you suggest. You just shouldn't do that in managed code. :)