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

    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

    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

    How do I use RichEdit 4.1?

    • 0 Comments
    Another thing I didn't talk about in my article was how to make sure your rich text edit controls are based on RichEdit 4.1 (which has TSF support). You need to do two things: 1) change your window class name from RICHEDIT_CLASS to MSFTEDIT_CLASS, and...
  • 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

    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

    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

    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

    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

    Inline Dictation commands

    • 0 Comments
    I’ve heard from a number of sources that there isn’t any good documentation about the ‘inline’ dictation commands.  These commands can be uttered in the middle of a dictation stream (in other words, you don’t have to stop speaking to use these commands...
  • TSF Aware

    Generating Candidates from an Application

    • 0 Comments
    Kirby left a comment to my post on candidates asking when a text service should create an ITfCandidateList. The answer is that when the text service wants to show candidates (via a preserved key or other mechanism), it should show its modal UI, and...
  • 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

    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

    Transitory Extensions, or, how to get full text store support in TSF-unaware controls

    • 0 Comments
    As I mentioned earlier , TSF provides very basic services in applications that are not TSF-aware. In particular, TSF provides only transitory documents and contexts that represent short-lived text compositions. In Windows Vista, TSF adds full text store...
  • 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

    Categories

    • 0 Comments
    In an earlier post on keyboards , I talked briefly about text service categories.  I'd like to talk more about categories. TSF will make sure that at most one text service in any category is enabled at any given time. So, for example, you can enable...
  • 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

    What Isn’t TSF good for?

    • 0 Comments
    Well, for one thing, it’s not that great for grabbing the current selection in the foreground application. There are several problems here: 1) You have to get your text service loaded into the target application. This can be slow. 2) Once your...
  • TSF Aware

    Input Scopes

    • 0 Comments
    Another useful, but underutilized, group of functions in TSF are those relating to Input Scopes. Input Scopes allow an application to define the sorts of things that are expected in this document (edit control, etc.). For example, the Internet Explorer...
  • 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

    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

    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...
  • 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

    What to do when you push a key

    • 0 Comments
    I received an interesting email the other day asking about how to get the character code from the parameters passed to the ITfKeyEventSink::OnKeyDown method. The answer is that most keyboard related text services only work with a particular keyboard layout...
  • TSF Aware

    Compartment Values

    • 0 Comments
    I've been working with compartments recently, and I've run across a few 'features' that tripped me up. I figure if I've run across them, others have too. Although MSDN says that you can put integers, BSTRs, and interface pointers into a compartment, you...
  • 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...
Page 1 of 3 (63 items) 123