aboutsummaryrefslogtreecommitdiffstats
path: root/src/termhooks.h
diff options
context:
space:
mode:
authorJim Blandy <[email protected]>1993-05-04 02:39:39 +0000
committerJim Blandy <[email protected]>1993-05-04 02:39:39 +0000
commitd82222e114a8fdf1fbe0ca295497186189edd225 (patch)
tree43753de49f4e4a30ccfdae061d27ada84d1c1bd9 /src/termhooks.h
parentc2e4f49a68cdfedaca2c2a785a80b64ca677b1fe (diff)
* 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.h34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/termhooks.h b/src/termhooks.h
index 05340f074b..a410038f5f 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