diff options
author | Jim Blandy <jimb@redhat.com> | 1993-05-04 02:39:39 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 1993-05-04 02:39:39 +0000 |
commit | d82222e114a8fdf1fbe0ca295497186189edd225 (patch) | |
tree | 43753de49f4e4a30ccfdae061d27ada84d1c1bd9 /src/termhooks.h | |
parent | c2e4f49a68cdfedaca2c2a785a80b64ca677b1fe (diff) | |
download | emacs-d82222e114a8fdf1fbe0ca295497186189edd225.tar.gz |
* lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
case we need them.
* termhooks.h (alt_modifier, super_modifier, hyper_modifier,
shift_modifier, ctrl_modifier, meta_modifier): Define these in
terms of the CHAR_mumble macros, to avoid having the same thing
defined in two places.
Make the modifier manipulation functions more robust. The old way
caused a bug once, and probably would again.
* termhooks.h (alt_modifier, super_modifier, hyper_modifier,
shift_modifier, ctrl_modifier, meta_modifier): Shift these all
down one bit in value, to avoid sign extension problems.
* lisp.h (CHAR_META, CHAR_CTL, CHAR_SHIFT): Fix these definitions too.
* keyboard.c (lispy_modifier_list): Ignore modifier bits beyond
what our table of modifier names can handle.
(apply_modifiers): Don't abort if you see extra modifier bits,
just remove them.
Diffstat (limited to 'src/termhooks.h')
-rw-r--r-- | src/termhooks.h | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/termhooks.h b/src/termhooks.h index 05340f074b5..a410038f5f6 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -294,20 +294,30 @@ enum { up_modifier = 1, /* Only used on mouse buttons - always turned into a click or a drag modifier before lisp code sees the event. */ - down_modifier = 128, /* Only used on mouse buttons. */ - drag_modifier = 256, /* This is never used in the event + down_modifier = 2, /* Only used on mouse buttons. */ + drag_modifier = 4, /* This is never used in the event queue; it's only used internally by the window-system-independent code. */ - click_modifier= 512, /* See drag_modifier. */ - - /* The next four modifier bits are used also - in keyboard events at the Lisp level. */ - alt_modifier = 0x040000, /* Under X, the XK_Alt_[LR] keysyms. */ - super_modifier= 0x080000, /* Under X, the XK_Super_[LR] keysyms. */ - hyper_modifier= 0x100000, /* Under X, the XK_Hyper_[LR] keysyms. */ - shift_modifier= 0x200000, - ctrl_modifier = 0x400000, - meta_modifier = 0x800000, /* Under X, the XK_Meta_[LR] keysyms. */ + click_modifier= 8, /* See drag_modifier. */ + + /* The next four modifier bits are used also in keyboard events at + the Lisp level. + + It's probably not the greatest idea to use the 2^23 bit for any + modifier. It may or may not be the sign bit, depending on + VALBITS, so using it to represent a modifier key means that + characters thus modified have different integer equivalents + depending on the architecture they're running on. Oh, and + applying XINT to a character whose 2^23 bit is set sign-extends + it, so you get a bunch of bits in the mask you didn't want. + + The CHAR_ macros are defined in lisp.h. */ + alt_modifier = CHAR_ALT, /* Under X, the XK_Alt_[LR] keysyms. */ + super_modifier= CHAR_SUPER, /* Under X, the XK_Super_[LR] keysyms. */ + hyper_modifier= CHAR_HYPER, /* Under X, the XK_Hyper_[LR] keysyms. */ + shift_modifier= CHAR_SHIFT, + ctrl_modifier = CHAR_CTL, + meta_modifier = CHAR_META, /* Under X, the XK_Meta_[LR] keysyms. */ }; #endif |