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();
}