Mercurial > emacs
changeset 2690:5275561e6b0a
(read_avail_input): If meta_key is 2, let 8 bits thru.
(Fset_input_mode): Set meta_key to 2 if META arg isn't t or nil.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 08 May 1993 14:55:39 +0000 |
parents | dcbc46826515 |
children | be85636d8b6e |
files | src/keyboard.c |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Sat May 08 09:25:11 1993 +0000 +++ b/src/keyboard.c Sat May 08 14:55:39 1993 +0000 @@ -271,7 +271,9 @@ /* Nonzero if input is available. */ int input_pending; -/* Nonzero if should obey 0200 bit in input chars as "Meta". */ +/* 1 if should obey 0200 bit in input chars as "Meta", 2 if should + keep 0200 bit in input chars. 0 to ignore the 0200 bit. */ + int meta_key; extern char *pending_malloc_warning; @@ -2846,9 +2848,10 @@ { buf[i].kind = ascii_keystroke; buf[i].modifiers = 0; - if (meta_key && (cbuf[i] & 0x80)) + if (meta_key == 1 && (cbuf[i] & 0x80)) buf[i].modifiers = meta_modifier; - cbuf[i] &= ~0x80; + if (meta_key != 2) + cbuf[i] &= ~0x80; XSET (buf[i].code, Lisp_Int, cbuf[i]); #ifdef MULTI_FRAME @@ -4441,8 +4444,9 @@ nil means use CBREAK mode.\n\ Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal\n\ (no effect except in CBREAK mode).\n\ -Third arg META non-nil means accept 8-bit input (for a Meta key).\n\ - Otherwise, the top bit is ignored, on the assumption it is parity.\n\ +Third arg META t means accept 8-bit input (for a Meta key).\n\ + META nil means ignore the top bit, on the assumption it is parity.\n\ + Otherwise, accept 8-bit input and don't use the top bit for Meta.\n\ Optional fourth arg QUIT if non-nil specifies character to use for quitting.") (interrupt, flow, meta, quit) Lisp_Object interrupt, flow, meta, quit; @@ -4469,7 +4473,12 @@ interrupt_input = 1; #endif flow_control = !NILP (flow); - meta_key = !NILP (meta); + if (NILP (meta)) + meta_key = 0; + else if (EQ (meta, Qt)) + meta_key = 1; + else + meta_key = 2; if (!NILP (quit)) /* Don't let this value be out of range. */ quit_char = XINT (quit) & (meta_key ? 0377 : 0177);