Use native Windows API for converting keystrokes to characters

GTK on Windows currently uses its own incomplete emulation for converting keystrokes into characters. This leads to some problems of GTK applications not behaving as a Windows user would expect.

The correct way to handle keyboard input on Windows is to call TranslateMessage() and interpret the WM_CHAR messages sent by Windows. This way a GTK application will behave exactly like a native Windows application, including all the nasty edgecases like modifier combinations, dead keys and so forth. This is exactly what this merge request does.

I built my changes on top of the IME input module, since I would have to handle those messages anyway and there was no point in reinventing the wheel. Hence I made the IME module the default for all locales.

It works perfectly for me. I have tested my changes with

  • German keyboard layout
  • NEO 2 German keyboard layout (it has special modifier keys)
  • American layout
  • Japanese IME (I don't speak Japanese, but it seems to be working correctly as far as I can tell)

This merge request fixes the following issues:

Edited by Isopod

Merge request reports

Loading