diff options
author | Richard M. Stallman <rms@gnu.org> | 1996-12-27 02:11:22 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1996-12-27 02:11:22 +0000 |
commit | 695a5c4976de74c77793f71924dedb54175c4e5a (patch) | |
tree | c4047ddd8a858187394a8b1770cfc91e0fd9bfbe /src | |
parent | 441c2ae48373e06bb40ed98fe5057a94b43f5bdb (diff) | |
download | emacs-695a5c4976de74c77793f71924dedb54175c4e5a.tar.gz |
(dos_set_keyboard): Test whether KEYB.COM is installed
for international keyboard support.
(dos_get_modifiers): If international keyboard support is NOT
required, make both Right and Left Alt key behave like Meta key.
Diffstat (limited to 'src')
-rw-r--r-- | src/msdos.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/msdos.c b/src/msdos.c index 7629b9c7f81..0b4cc858e16 100644 --- a/src/msdos.c +++ b/src/msdos.c @@ -1137,6 +1137,7 @@ static struct keyboard_layout_list static struct dos_keyboard_map *keyboard; static int keyboard_map_all; +static int international_keyboard; int dos_set_keyboard (code, always) @@ -1144,6 +1145,13 @@ dos_set_keyboard (code, always) int always; { int i; + union REGS regs; + + /* See if Keyb.Com is installed (for international keyboard support). */ + regs.x.ax = 0xad80; + int86 (0x2f, ®s, ®s); + if (regs.h.al == 0xff) + international_keyboard = 1; /* Initialize to US settings, for countries that don't have their own. */ keyboard = keyboard_layout_list[0].keyboard_map; @@ -1451,6 +1459,13 @@ dos_get_modifiers (keymask) mask |= SUPER_P; modifiers |= super_modifier; } + else if (!international_keyboard) + { + /* If Keyb.Com is NOT installed, let Right Alt behave + like the Left Alt. */ + mask &= ~ALT_GR_P; + mask |= ALT_P; + } } if (regs.h.ah & 1) /* Left CTRL pressed ? */ |