From 7002734ca5d159728c518e5c9c576746ae7e5bf7 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Wed, 13 Apr 2011 01:48:13 +0000 Subject: [PATCH] vms Meta key hack (trunk only) I can't figure out how to make PuTTY use the Alt key to function as a Meta key and set a character's high bit, so I used this hack to test the M-5 fix just committed. This lets me specify a character to be used to force the next character to have its high bit set, so I can fake the Meta key with a two character sequence. (I used the back-tick/accent, since nethack doesn't do anything special with it.) Conceivably something like this should be promoted to the core; this just affects VMS, and only when vmstty.c is compiled with DEBUG defined. --- sys/vms/vmstty.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/sys/vms/vmstty.c b/sys/vms/vmstty.c index e8f80a7c2..29d72bae5 100644 --- a/sys/vms/vmstty.c +++ b/sys/vms/vmstty.c @@ -1,5 +1,4 @@ /* NetHack 3.5 vmstty.c $Date$ $Revision$ */ -/* SCCS Id: @(#)vmstty.c 3.5 2007/01/31 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ /* tty.c - (VMS) version */ @@ -103,6 +102,36 @@ static unsigned long tt_char_restore = 0, tt_char_active = 0, tt2_char_restore = 0, tt2_char_active = 0; static unsigned long ctrl_mask = 0; +#ifdef DEBUG +extern int NDECL(nh_vms_getchar); + +/* rename the real vms_getchar and interpose this one in front of it */ +int +vms_getchar() +{ + static int althack = 0, altprefix; + char *nhalthack; + int res; + + if (!althack) { + /* one-time init */ + nhalthack = nh_getenv("NH_ALTHACK"); + althack = nhalthack ? 1 : -1; + if (althack > 0) + altprefix = *nhalthack; + } + +# define vms_getchar nh_vms_getchar + + res = vms_getchar(); + if (althack > 0 && res == altprefix) { + res = vms_getchar(); + if (res != ESC) res = META(res); + } + return res; +} +#endif /*DEBUG*/ + int vms_getchar() { -- 2.40.0