|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T i ┃
Length: 3100 (0xc1c) Types: TextFile Names: »input.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─ ⟦this⟧ »./X.V10R4/obsolete/xterm/input.c«
#include <X/mit-copyright.h> /* Copyright Massachusetts Institute of Technology 1984, 1985 */ /* input.c */ #ifndef lint static char *rcsid_input_c = "$Header: input.c,v 10.12 86/06/06 16:59:32 wesommer Exp $"; #endif lint #include <X/Xlib.h> #include <X/Xkeyboard.h> #include "ptyx.h" #include <stdio.h> #ifdef vms #define write( fd, buf, nbytes ) in_write( fd, buf, nbytes ) #endif vms static char *kypd_num = "0x.\r123456,789-"; static char *kypd_apl = "pxnMqrstuvlwxym"; static char *cur = "DCBA"; Input (keyboard, screen, event) register Keyboard *keyboard; register Screen *screen; register XKeyPressedEvent *event; { register int keycode = event->detail; register char *string; int tx8bit = screen->tx8bit; int pty = screen->respond; int nbytes; ANSI reply; unsigned flags; string = XLookupMapping (event, &nbytes); keycode &= ValueMask; /* no longer need shift bits for anything */ reply.a_pintro = 0; reply.a_final = 0; reply.a_nparam = 0; reply.a_inters = 0; if (nbytes > 0) { while (nbytes-- > 0) unparseputc(*string++, pty); } #ifdef notdef /* Tek clear-screen crock from Doug Mink */ else if (keycode == KC_E6) { CursorSet (screen, 0, 0, flags); ClearScreen (screen); CursorToggle (screen,1); } #endif notdef else if (IsKeypadKey(keycode)) { if (keyboard->flags & KYPD_APL) { reply.a_type = SS3; unparseseq(&reply, tx8bit, pty); unparseputc(kypd_apl[keycode-KC_KEYPAD_0], pty); } else unparseputc(kypd_num[keycode-KC_KEYPAD_0], pty); } else if (IsCursorKey(keycode)) { if (keyboard->flags & CURSOR_APL) { reply.a_type = SS3; unparseseq(&reply, tx8bit, pty); unparseputc(cur[keycode-KC_CURSOR_LEFT], pty); } else { reply.a_type = CSI; reply.a_final = cur[keycode-KC_CURSOR_LEFT]; unparseseq(&reply, tx8bit, pty); } } else if (IsPFKey(keycode)) { reply.a_type = SS3; unparseseq(&reply, tx8bit, pty); unparseputc((char)(keycode-KC_PF1+'P'), pty); } #ifdef ENABLE_PRINT else if (keycode == KC_F2) TekPrint (screen); #endif else if (IsFunctionKey(keycode)) { reply.a_type = CSI; reply.a_nparam = 1; reply.a_param[0] = funcvalue(keycode); reply.a_final = '~'; if (reply.a_param[0] > 0) unparseseq(&reply, tx8bit, pty); } return; } funcvalue(keycode) { switch (keycode) { case KC_F1: return(11); case KC_F2: return(12); case KC_F3: return(13); case KC_F4: return(14); case KC_F5: return(15); case KC_F6: return(17); case KC_F7: return(18); case KC_F8: return(19); case KC_F9: return(20); case KC_F10: return(21); case KC_F11: return(23); case KC_F12: return(24); case KC_F13: return(25); case KC_F14: return(26); case KC_F15: return(28); case KC_F16: return(29); case KC_F17: return(31); case KC_F18: return(32); case KC_F19: return(33); case KC_F20: return(34); case KC_E1 : return(1); case KC_E2: return(2); case KC_E3: return(3); case KC_E4: return(4); case KC_E5: return(5); case KC_E6: return(6); default: return(-1); } }