]> source.dussan.org Git - tigervnc.git/commitdiff
Work around Windows poor handling of the numpad decimal key.
authorPierre Ossman <ossman@cendio.se>
Tue, 16 Apr 2013 11:56:29 +0000 (11:56 +0000)
committerPierre Ossman <ossman@cendio.se>
Tue, 16 Apr 2013 11:56:29 +0000 (11:56 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5083 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/Viewport.cxx

index 43b39d4f29ee88ebd90576d439943f27910e0048..25c411035aa1c341528cf213bd3f9b73e4bf4100 100644 (file)
@@ -594,6 +594,26 @@ rdr::U32 Viewport::translateKeyEvent(int keyCode, int origKeyCode, const char *k
   }
 #endif
 
+#ifdef WIN32
+  // X11 fairly consistently uses XK_KP_Separator for comma and
+  // XK_KP_Decimal for period. Windows unfortunately is terribly
+  // inconcistent, and is not something that's likely to change:
+  // http://blogs.msdn.com/michkap/archive/2006/09/13/752377.aspx
+  // To work around this we look at what character the key generates
+  // and try to follow X11 behaviour.
+  if ((keyCode == (FL_KP + ',')) || (keyCode == (FL_KP + '.'))) {
+    switch (keyText[0]) {
+    case ',':
+      return XK_KP_Separator;
+    case '.':
+      return XK_KP_Decimal;
+    default:
+      vlog.error(_("Unknown decimal separator: '%s'"), keyText);
+      return XK_KP_Decimal;
+    }
+  }
+#endif
+
   // Then other special keys
   switch (keyCode) {
   case FL_BackSpace: