From 2d3682341cf62a260125aae190c5a2b3df80fe10 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 31 May 1993 18:33:08 +0000 Subject: [PATCH] (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey. Include systty.h; don't mess with FIONREAD. Don't include termio.h dorectly. --- src/xterm.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 86b66f8fc84..77cc54021dd 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -58,24 +58,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #else /* ! defined (BSD) */ #ifndef VMS -#include #include #endif #endif /* ! defined (BSD) */ -/* Allow m- file to inhibit use of FIONREAD. */ -#ifdef BROKEN_FIONREAD -#undef FIONREAD -#endif /* ! defined (BROKEN_FIONREAD) */ - -/* We are unable to use interrupts if FIONREAD is not available, - so flush SIGIO so we won't try. */ -#ifndef FIONREAD -#ifdef SIGIO -#undef SIGIO -#endif /* ! defined (SIGIO) */ -#endif /* FIONREAD */ - +#include "systty.h" #include "systime.h" #include @@ -2855,7 +2842,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) if (f != 0) { - KeySym keysym; + KeySym keysym, orig_keysym; char copy_buffer[80]; int modifiers; @@ -2875,6 +2862,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) /* Strip off the vendor-specific keysym bit, and take a shot at recognizing the codes. HP servers have extra keysyms that fit into the MiscFunctionKey category. */ + orig_keysym = keysym; keysym &= ~(1<<28); if (numchars > 1) @@ -2882,11 +2870,14 @@ XTread_socket (sd, bufp, numchars, waitp, expected) if ((keysym >= XK_BackSpace && keysym <= XK_Escape) || keysym == XK_Delete || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ - || IsMiscFunctionKey (keysym) /* 0xff60 <= x < 0xff80 */ + || IsMiscFunctionKey (keysym) /* 0xff60 <= x < 0xff7e */ #ifdef HPUX /* This recognizes the "extended function keys". - It seems there's no cleaner way. */ - || ((unsigned) (keysym) >= XK_Select + It seems there's no cleaner way. + Test IsModifierKey to avoid handling mode_switch + incorrectly. */ + || (!IsModifierKey (orig_keysym) + && (unsigned) (keysym) >= XK_Select && (unsigned)(keysym) < XK_KP_Space) #endif || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ -- 2.11.4.GIT