Handle XKB groups properly in x0vncserver
diff --git a/unix/x0vncserver/x0vncserver.cxx b/unix/x0vncserver/x0vncserver.cxx
index a60a727..f4dd6f9 100644
--- a/unix/x0vncserver/x0vncserver.cxx
+++ b/unix/x0vncserver/x0vncserver.cxx
@@ -373,8 +373,11 @@
keycode <= xkb->max_key_code;
keycode++) {
KeySym cursym;
- unsigned int mods;
- XkbTranslateKeyCode(xkb, keycode, state.compat_state, &mods, &cursym);
+ unsigned int mods, out_mods;
+ // XkbStateFieldFromRec() doesn't work properly because
+ // state.lookup_mods isn't properly updated, so we do this manually
+ mods = XkbBuildCoreState(XkbStateMods(&state), state.group);
+ XkbTranslateKeyCode(xkb, keycode, mods, &out_mods, &cursym);
if (cursym == keysym)
break;
}