diff options
author | gildea <empty> | 1994-05-14 15:53:34 +0000 |
---|---|---|
committer | gildea <empty> | 1994-05-14 15:53:34 +0000 |
commit | c91f413ad7778a29456aaea2fb5e70d21a3319dc (patch) | |
tree | eeaf8867ee2c9903cf43efb0cef6b8191ff7489e /xc/programs/xterm | |
parent | c322889bcfbefc450fdf1d187ab21b9e81e6f6b4 (diff) |
recognize keypad keysyms such as KP_Up and KP_Prior. XBUG #6742.
Diffstat (limited to 'xc/programs/xterm')
-rw-r--r-- | xc/programs/xterm/input.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/xc/programs/xterm/input.c b/xc/programs/xterm/input.c index 0af04f039..52038eb45 100644 --- a/xc/programs/xterm/input.c +++ b/xc/programs/xterm/input.c @@ -1,5 +1,5 @@ /* - * $XConsortium: input.c,v 1.16 91/05/10 16:57:16 gildea Exp $ + * $XConsortium: input.c,v 1.17 92/03/20 17:43:06 gildea Exp $ */ /* @@ -89,19 +89,15 @@ Input (keyboard, screen, event, eightbit) reply.a_nparam = 0; reply.a_inters = 0; + if (keysym >= XK_KP_Home && keysym <= XK_KP_Begin) { + keysym += XK_Home - XK_KP_Home; + } + if (IsPFKey(keysym)) { reply.a_type = SS3; unparseseq(&reply, pty); unparseputc((char)(keysym-XK_KP_F1+'P'), pty); key = TRUE; - } else if (IsKeypadKey(keysym)) { - if (keyboard->flags & KYPD_APL) { - reply.a_type = SS3; - unparseseq(&reply, pty); - unparseputc(kypd_apl[keysym-XK_KP_Space], pty); - } else - unparseputc(kypd_num[keysym-XK_KP_Space], pty); - key = TRUE; } else if (IsCursorKey(keysym) && keysym != XK_Prior && keysym != XK_Next) { if (keyboard->flags & CURSOR_APL) { @@ -116,7 +112,8 @@ Input (keyboard, screen, event, eightbit) key = TRUE; } else if (IsFunctionKey(keysym) || IsMiscFunctionKey(keysym) || keysym == XK_Prior || keysym == XK_Next || - keysym == DXK_Remove) { + keysym == DXK_Remove || keysym == XK_KP_Delete || + keysym == XK_KP_Insert) { reply.a_type = CSI; reply.a_nparam = 1; if (sunFunctionKeys) { @@ -129,6 +126,14 @@ Input (keyboard, screen, event, eightbit) if (reply.a_param[0] > 0) unparseseq(&reply, pty); key = TRUE; + } else if (IsKeypadKey(keysym)) { + if (keyboard->flags & KYPD_APL) { + reply.a_type = SS3; + unparseseq(&reply, pty); + unparseputc(kypd_apl[keysym-XK_KP_Space], pty); + } else + unparseputc(kypd_num[keysym-XK_KP_Space], pty); + key = TRUE; } else if (nbytes > 0) { if(screen->TekGIN) { TekEnqMouse(*string++); @@ -200,7 +205,9 @@ static int funcvalue (keycode) case XK_Find : return(1); case XK_Insert: return(2); + case XK_KP_Insert: return(2); case XK_Delete: return(3); + case XK_KP_Delete: return(3); case DXK_Remove: return(3); case XK_Select: return(4); case XK_Prior: return(5); @@ -255,7 +262,9 @@ static int sunfuncvalue (keycode) case XK_Find : return(1); case XK_Insert: return(2); + case XK_KP_Insert: return(2); case XK_Delete: return(3); + case XK_KP_Delete: return(3); case DXK_Remove: return(3); case XK_Select: return(4); case XK_Prior: return(5); |