]> source.dussan.org Git - tigervnc.git/commitdiff
Handle dead keys more properly (through some fixing in FLTK).
authorPierre Ossman <ossman@cendio.se>
Mon, 11 Apr 2011 11:59:31 +0000 (11:59 +0000)
committerPierre Ossman <ossman@cendio.se>
Mon, 11 Apr 2011 11:59:31 +0000 (11:59 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4365 3789f03b-4d11-0410-bbf8-ca57d06f2519

CMakeLists.txt
vncviewer/DesktopWindow.cxx
vncviewer/keysym2ucs.c

index b8507ab0d0b41c9d2d366ebeb30f6a915388e728..498c6148002e421592c475f7d28f46b70bbb074a 100644 (file)
@@ -8,6 +8,7 @@ include(CheckIncludeFiles)
 include(CheckFunctionExists)
 include(CheckTypeSize)
 include(CheckCSourceCompiles)
+include(CheckCXXSourceCompiles)
 
 project(TigerVNC)
 set(VERSION 1.0.90)
@@ -136,6 +137,13 @@ if(BUILD_NEW_VNCVIEWER)
   set(FLTK_SKIP_FLUID TRUE)
   set(FLTK_SKIP_OPENGL TRUE)
   find_package(FLTK COMPONENTS REQUIRED)
+
+  # FLTK STR #2599
+  set(CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR})
+  set(CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES})
+  check_cxx_source_compiles("#include <FL/Fl.H>\nint main(int c, char** v) { Fl::event_compose_symbol(); return 0; }" HAVE_FLTK_DEAD_KEYS)
+  set(CMAKE_REQUIRED_INCLUDES)
+  set(CMAKE_REQUIRED_LIBRARIES)
 endif()
 
 # Check for GNUTLS library
index a621e405fb53dfda71cda8314d4cf1899641a94f..113b88010165c154e7b31ce861456d6724db531c 100644 (file)
 #include "parameters.h"
 #include "keysym2ucs.h"
 
+// FLTK STR #2599 must be fixed for proper dead keys support
+#ifndef HAVE_FLTK_DEAD_KEYS
+#define event_compose_symbol event_text
+#endif
+
 using namespace rfb;
 
 extern void exit_vncviewer();
@@ -210,11 +215,11 @@ int DesktopWindow::handle(int event)
     return 1;
 
   case FL_KEYDOWN:
-    handleKeyEvent(Fl::event_key(), Fl::event_text(), true);
+    handleKeyEvent(Fl::event_key(), Fl::event_compose_symbol(), true);
     return 1;
 
   case FL_KEYUP:
-    handleKeyEvent(Fl::event_key(), Fl::event_text(), false);
+    handleKeyEvent(Fl::event_key(), Fl::event_compose_symbol(), false);
     return 1;
   }
 
index 2e6711fb9af7a36b3da444416efc5b2b8bf23984..d12eb491162434981341516422f4183ed8a5c92d 100644 (file)
@@ -810,6 +810,23 @@ struct codepair {
   { 0x13bd, 0x0153 }, /*                          oe œ LATIN SMALL LIGATURE OE */
   { 0x13be, 0x0178 }, /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
   { 0x20ac, 0x20ac }, /*                    EuroSign € EURO SIGN */
+  { 0xfe50, 0x0300 }, /*                               COMBINING GRAVE ACCENT */
+  { 0xfe51, 0x0301 }, /*                               COMBINING ACUTE ACCENT */
+  { 0xfe52, 0x0302 }, /*                               COMBINING CIRCUMFLEX ACCENT */
+  { 0xfe53, 0x0303 }, /*                               COMBINING TILDE */
+  { 0xfe54, 0x0304 }, /*                               COMBINING MACRON */
+  { 0xfe55, 0x0306 }, /*                               COMBINING BREVE */
+  { 0xfe56, 0x0307 }, /*                               COMBINING DOT ABOVE */
+  { 0xfe57, 0x0308 }, /*                               COMBINING DIAERESIS */
+  { 0xfe58, 0x030a }, /*                               COMBINING RING ABOVE */
+  { 0xfe59, 0x030b }, /*                               COMBINING DOUBLE ACUTE ACCENT */
+  { 0xfe5a, 0x030c }, /*                               COMBINING CARON */
+  { 0xfe5b, 0x0327 }, /*                               COMBINING CEDILLA */
+  { 0xfe5c, 0x0328 }, /*                               COMBINING OGONEK */
+  { 0xfe5d, 0x1da5 }, /*                               MODIFIER LETTER SMALL IOTA */
+  { 0xfe5e, 0x3099 }, /*                               COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK */
+  { 0xfe5f, 0x309a }, /*                               COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+  { 0xfe60, 0x0323 }, /*                               COMBINING DOT BELOW */
 };
 
 unsigned keysym2ucs(unsigned keysym)