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

    The usual path

    • 0 Comments
    Text Services Framework assumes that your text service follows a particular processing path. If your text service doesn't conform to these assumptions, then your programming job will be more complicated. (Not impossible, just more complex.) The text service...
  • 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

    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

    Fun with Contexts

    • 0 Comments
    One interface that I hadn't paid much attention to in TSF is ITfContextKeyEventSink . What does this let you do? Why, it lets you inspect keyboard input for a particular context (or document). This lets you do some really fun things, like redirect keyboard...
  • TSF Aware

    Debugging a Text Service (and Visual Studio problems)

    • 0 Comments
    I've received a few emails asking about debugging Text Services. I figured if two people actually went to the trouble of sending an email, that there's enough demand for a post. But first, a little diversion: It turns out that Visual Studio 2005 SP1 ships...
  • TSF Aware

    Steam Trek: The Moving Picture

    • 0 Comments
    I don't have anything better to blog about right now (I'm in the middle of reviews and designs), so I thought I would share a bit of whimsy - notably, this steampunk version of Star Trek. If you're familiar with A Trip to the Moon , you will find this...
  • 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

    Easy Dictation support for Windowless RichEdit controls

    • 0 Comments
    In my article in MSDN, I mention that there are some easy ways to enable dictation support in controls that don't normally support dictation. All the methods I described assume that the control has a window. There is a way to enable dictation support...
  • TSF Aware

    Published!

    • 0 Comments
    You might have noticed that I haven't really talked about text stores on this blog. That's because I've been working on an article for MSDN Magazine on just that very subject. It's in the July 2007 issue, and I just got my copy in the mail, so if you...
  • TSF Aware

    LOLCode

    • 0 Comments
    I suppose while I'm sending out the random link propagation, I should also mention LOLCODE - the programming language for really leet coders. I think it's related to the (deservedly) esoteric language valgol , from the 80's. Update: on second thought...
  • 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

    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

    Generating Candidates from a Text Service

    • 0 Comments
    So how do you create the candidates from within the text service? Well, the first thing you need is the original input, and you need to know what text was created from the original input. Almost all text services (there might be a few that don't do this...
  • 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

    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

    Text Service Variations

    • 0 Comments
    Probably the most annoying thing about writing a text service is dealing with all the variations in text stores. They all have quirks that need to be worked around, and any significant change has to be tested against all the text stores to make sure that...
  • 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

    Text services: Vista Extensions (UI Elements)

    • 0 Comments
    The TSF tour ends here, with a brief discussion of UI Elements in Vista If your text service wishes to be available in full-screen applications like games, it must implement ITfUIElement , and call the ITfUIElementMgr whenever the text service wants...
  • 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

    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

    Text Services: Function Providers

    • 0 Comments
    TSF allows text services to offer optional extension points through the ITfFunctionProvider interface. Indirection through the function provider allows text services to minimize memory usage and startup time by instantiating services when requested, rather...
  • TSF Aware

    Text Services: Language Bar

    • 0 Comments
    If your text service wishes to display some UI on the language bar, then your service will need to create objects that implement one (or more) of the following interfaces: Interface How Obtained ITfLangBarItem Pass...
  • TSF Aware

    Text Service: Display Attributes

    • 0 Comments
    If your text service wishes to display text in different colors (e.g., displaying the current composition in red), then your text service needs to implement these interfaces: Interface How Obtained ITfDisplayAttributeProvider...
  • TSF Aware

    Text Service Properties

    • 0 Comments
    The next thing that I'd like to talk about are properties. While the TSF manager implements basic property handling (via ITfProperty), a text service has the ability to customize the way TSF handles properties. If your text service wishes to attach...
  • 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...
Page 2 of 3 (63 items) 123