TSF Aware

Dictation, Windows Speech Recognition, and Text Services Framework.

Blog - About

About TSF Aware

Eric Brown has been working with the Text Services Framework for the past 6 years - just about as long as he has been working on Windows Speech Recognition.

  • TSF Aware

    Text Services: Candidates

    • 6 Comments
    If your text service supports multiple interpretations of the same input, and you wish to allow users to correct the initial interpretation (for dictation, we call this 'correction'; IMEs tend to call it 'reconversion'), your text service will need to...
  • TSF Aware

    Visual Studio 2008 issues

    • 5 Comments
    If you're building a text service DLL, you almost certainly don't want to use Visual Studio 2008's compiler.  The problem is that Visual Studio 2008 uses a new C Runtime Library, and if you build your text service with Visual Studio, your text service...
  • TSF Aware

    How to train the SAPI recognizer

    • 4 Comments
    Implementing SAPI training is relatively hard, and the documentation doesn’t really tell you what you need to know. ISpRecognizer2::SetTrainingState switches the recognizer into or out of training mode. When you go into training mode, all that really...
  • TSF Aware

    Welcome!

    • 4 Comments
    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...
  • TSF Aware

    Desktop Tower Defense

    • 3 Comments
    Enough about TSF for a while. :) I found this amazingly addictive game the other day called Desktop Tower Defense . It's sort of the reverse of Lemmings - instead of saving all the lemmings, you need to squash them all. There's an insane number of...
  • TSF Aware

    Rules of Text Services

    • 2 Comments
    One of the harder parts of writing a text service is learning how to 'think' text services. Here are a couple of rules that I've developed (the hard way) after writing a text service: The first rule of writing a text service is: Keep the edit sessions...
  • TSF Aware

    More ways to fix problems with dictation

    • 2 Comments
    One common cause of dictation not working is that CTFMon is not running.  This is a helper process used by the Text Services Framework to implement things like global compartments and the like. If dictation is not working, try running this command...
  • TSF Aware

    Where are the TSF Samples?

    • 1 Comments
    Many people have emailed me asking about the TSF samples on MSDN.  They’re supposed to be on MSDN code gallery, although they don’t appear to be there. They are, however, part of the Windows SDK . After installation, you'll find them in %programfiles...
  • TSF Aware

    The TSF Samples are Here!

    • 1 Comments
    The TSF samples (long missing from MSDN) have finally been uploaded to the MSDN Code Gallery .  The documentation is also available (in plain-text form) in each sample.  MSDN’s web page should be updated soon to point to the code gallery.
  • TSF Aware

    What’s new in Windows Speech Recognition?

    • 1 Comments
    Now that the Beta of Windows 7 is out, it’s time to talk about the improvements and new features in Windows Speech Recognition. For Windows 7, we focused primarily on improving the user experience and removing the “rough spots” that we did not have...
  • TSF Aware

    Why you need to actually test instead of just looking at the source code

    • 1 Comments
    In a previous post , I mentioned that you need to set the GUID_PROP_COMPOSING property across text in a composition, or else Windows XP will terminate the composition. That’s true. I then provided a code snippet to set that property. That snippet is wrong...
  • TSF Aware

    What's a Keyboard?

    • 1 Comments
    The Text Services Framework makes a number of assumptions when you register your text service as a keyboard text service (i.e., your text service calls RegisterCategory(<clsid of your text service>, GUID_TFCAT_TIP_KEYBOARD, <clsid of your text...
  • TSF Aware

    Things the Documentation left out, part N

    • 1 Comments
    I recently had two people ask me the same question: "Why can't I insert more than one character into a composition on Notepad?" It's actually a bit more complicated than that, since this behavior only appears to happen on Windows XP with a US English...
  • TSF Aware

    Suggestions?

    • 1 Comments
    There is so much to write about TSF that I'm not really sure where to start. Some possibilities are: A guided tour through TSF, grouping the interfaces into categories, and explaining who implements them, and where they're typically implemented...
  • TSF Aware

    Transitory Contexts

    • 1 Comments
    What are Transitory Contexts? Transitory contexts are contexts managed by the TSF manager for applications that aren't TSF-Aware. They allow text services to operate in any application. However, there are substantial differences between Transitory contexts...
  • TSF Aware

    TSF Application interfaces

    • 1 Comments
    The first stop on the TSF tour is the application interfaces. These are implemented by applications or text controls. An application (or text control) must implement ITextStoreACP to be considered ‘TSF-aware'. It may choose to implement any of the...
  • TSF Aware

    A Tour through TSF

    • 0 Comments
    The Text Services Framework consists of over 100 interfaces. MSDN does a pretty good job describing what each interface implements, and who should implement it, but it doesn’t do a great job of showing how all the interfaces fit together. I've composed...
  • TSF Aware

    A Tour through TSF: TSF Managers

    • 0 Comments
    The next stop on the tour is an extended visit through the TSF manager interfaces. Since TSF implements a lot of interfaces, I decided to break them up into separate posts. I've also included a (very brief) description of how a text service (or application...
  • TSF Aware

    A Tour through TSF: Contexts and Ranges

    • 0 Comments
    Our next stop on our tour through TSF brings us to the two most heavily used interfaces in text services: Contexts and Ranges. But first, a quick diversion to discuss the relationship between threads, documents, and contexts. The ITfThreadMgr object...
  • TSF Aware

    A Tour through TSF: Event sinks

    • 0 Comments
    The interfaces in this category allow you to be called back when certain events happen on another interface. These callbacks are generally referred to as 'event sinks'. Interface How to Obtain ITfSource QI on...
  • TSF Aware

    A Tour through TSF: Enumerators

    • 0 Comments
    The next set of TSF manager interfaces are the enumerators. These are rather boring interfaces; they just enumerate things. Generally speaking, the enumerators enumerate things owned by the item that provides the enumerator. For example, IEnumTfContexts...
  • TSF Aware

    A Tour through TSF: Language Bar

    • 0 Comments
    These interfaces manage the language bar and the items that display on the language bar. These interfaces are used exclusively by text services, and will be discussed further in a future post. Interface How to Obtain ITfLangBarMgr...
  • TSF Aware

    A Tour through TSF: Miscellaneous Functions

    • 0 Comments
    The last set of interfaces implemented by the TSF manager are the 'odd-ball' interfaces that don't really fall into any other logical groups. Helpers The interfaces in this category provide auxiliary services for applications or text services. ...
  • TSF Aware

    Text Service Basics

    • 0 Comments
    We have finally finished looking at the interfaces that TSF implements for you. Now we start looking at the interfaces that text services must implement. The first step are the essential interfaces. Every text service must implement these two interfaces...
  • TSF Aware

    Text Services: Vista Extensions

    • 0 Comments
    In Windows Vista, TSF added the ability to run in locations where it had previously been disabled. For example, TSF is now available on secure desktops, in full screen (DirectX) applications, and in MTA threads. However, text services have to be aware...
Page 1 of 3 (63 items) 123