I'm author of a Traditional Chinese Input Method.
My IME works very well before Windows 10 Version 1703, but the screen keyboard always shows English layout instead of Chinese Phonetic (Bopomofo) layout after Windows 10 Version 1709.
The steps to reproduce this problem:
Download SampleIME project from link: SampleIME, open it in Visual Studio Community 2015.
Open Define.h, modify this:
#define TEXTSERVICE_LANGID MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
#define TEXTSERVICE_LANGID MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
Open SampleIME.cpp, modify this:
*pwPreferredLayoutId = TKBL_OPT_SIMPLIFIED_CHINESE_PINYIN;
*pwPreferredLayoutId = TKBL_OPT_TRADITIONAL_CHINESE_PHONETIC;
Build this project.
Register COM by: regsvr32.exe Debug/SampleIME.dll
Run Notepad.exe, switch keyboard to "Sample IME", and click to show up the touch/screen keyboard.
Then it is only able to show English keyboard, but not Chinese Phonetic keyboard.
After doing some traces and debugs, it seems that system didn't use ITfFunctionProvider::GetFunction to query IID_ITfFnGetPreferredTouchKeyboardLayout and then have a chance to call its GetLayout method to change the touch-screen keyboard layout.
Thanks for your help in advance.