General considerations:
- Only applies/tested with Windows 10 Enterprise 20H2 (10.0.19042) and higher. Not tested on W11
- No hardware keyboard should be present (or GPIO should indicate that the keyboard is disabled - ex: Lenovo Yoga in tablet mode)
- System must be configured to use touch keyboard in desktop mode (unclear on requirement)
- Behavior varies based on touch input device and system state when the app is started
- Behavior varies based on
BorderStyle
- Triggering gesture must originate be touch - cannot use mouse to test
disable-usb-keyboard-detect
does not by itself produce reliable SIP activationCefSharp.Wpf.HwndHost
by itself does not produce reliable SIP activation, but does sometimes work and does produce correct SIP type for numeric et al.CefSharp.Wpf
does not produce any SIP activation (in box), and produces GPU artifacts and performance issues on many machinesCefSharp.Wpf
+ Touch keyboard sample does produce reliable SIP activation, but does not control SIP keyboard type (e.g.: numeric pad not shown on<input type="number"
) and still suffers from GPU and performance issues- This solution without debouncing/200ms delay does not produce reliable activation
- Listen to focus changes (
FocusedNodeChangedEnabled
+OnFocusedNodeChanged
) - Based on the focused element, decide whether the SIP should be shown. Example considers only
<input>
elements to be applicable, which is likely oversimplified. - Reactive
.Throttle
which is poorly named and actually represents a debouncing is used to discard transitory states - Call
TryShow
orTryHide
as appropriate, lazy creatingIInputPane2
for the top-level window