void StartListening()

in src/keyboard_win.cc [383:408]


  void StartListening() {
    HRESULT hr;

    ITfThreadMgr* pThreadMgr;
    hr = CoCreateInstance(CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, IID_ITfThreadMgr, (void**)&pThreadMgr);
    if (!SUCCEEDED(hr)) {
      printf("native-keymap: Could not create ITfThreadMgr.\n");
      return;
    }

    hr = pThreadMgr->QueryInterface(IID_ITfSource, (LPVOID*)&pSource);
    if (!SUCCEEDED(hr)) {
      printf("native-keymap: Could not obtain ITfSource.\n");
      pThreadMgr->Release();
      return;
    }

    hr = pSource->AdviseSink(IID_ITfInputProcessorProfileActivationSink,
      static_cast<ITfInputProcessorProfileActivationSink*>(this),
      &m_dwCookie);

    if (!SUCCEEDED(hr)) {
      printf("native-keymap: Could not register ITfInputProcessorProfileActivationSink.\n");
    }
    pThreadMgr->Release();
  }