Upon a little more research, I deduced the fault to unity-mir's surface placement logic - not qtubuntu's internal geometry.
OSK surface needs to be positioned underneath the panel (0, 67). But ApplicationManager::placeSession was positioning it at (0,0), since it didn't recognize it as an application surface.
If unity-mir places a surface in a position where the app doesn't expect it to be, input events get confused, causing these key mis-hit issues.
Upon a little more research, I deduced the fault to unity-mir's surface placement logic - not qtubuntu's internal geometry.
OSK surface needs to be positioned underneath the panel (0, 67). But ApplicationMana ger::placeSessi on was positioning it at (0,0), since it didn't recognize it as an application surface.
If unity-mir places a surface in a position where the app doesn't expect it to be, input events get confused, causing these key mis-hit issues.