summaryrefslogtreecommitdiff
path: root/src/input.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2004-04-24 06:10:33 +0000
committersabetts <sabetts>2004-04-24 06:10:33 +0000
commitc9303ecfb30db08b3cc12137831ab352ac9b0812 (patch)
treecbb6a01bd9c409d83300205871955edf24474830 /src/input.c
parenta0b9448f94bf5c97730f13f7e6d5cb4d435d605b (diff)
downloadratpoison-c9303ecfb30db08b3cc12137831ab352ac9b0812.zip
* src/data.h (struct rp_defaults): new members, font_string,
fgcolor_string, bgcolor_string. * src/actions.c (set_font): return defaults.font_string when data is NULL (set_fgcolor): likewise for fgcolor_string (set_bgcolor): likewise for bgcolor_string * src/manage.c (ungrab_top_level_keys): properly grab capital letters. * src/main.c (init_defaults): init fgcolor_string, bgcolor_string, and font_string * src/input.c (grab_key): change keysym type to KeySym. convert keysym to keycode. All callers updated.
Diffstat (limited to 'src/input.c')
-rw-r--r--src/input.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/input.c b/src/input.c
index 5b94c78..3b8a954 100644
--- a/src/input.c
+++ b/src/input.c
@@ -164,14 +164,26 @@ update_modifier_map ()
/* Grab the key while ignoring annoying modifier keys including
caps lock, num lock, and scroll lock. */
void
-grab_key (int keycode, unsigned int modifiers, Window grab_window)
+grab_key (KeySym keysym, unsigned int modifiers, Window grab_window)
{
+ int keycode;
unsigned int mod_list[8];
int i;
-
+ KeySym upper, lower;
+
/* Convert to a modifier mask that X Windows will understand. */
modifiers = rp_mask_to_x11_mask (modifiers);
+ /* Make sure we grab the right sym. */
+ XConvertCase (keysym, &lower, &upper);
+ PRINT_DEBUG(("%ld %ld %ld", keysym, lower, upper));
+ if (keysym != upper || keysym != lower)
+ {
+ if (keysym == upper)
+ modifiers |= ShiftMask;
+ keysym = lower;
+ }
+
/* Create a list of all possible combinations of ignored
modifiers. Assumes there are only 3 ignored modifiers. */
mod_list[0] = 0;
@@ -183,6 +195,8 @@ grab_key (int keycode, unsigned int modifiers, Window grab_window)
mod_list[6] = mod_list[2] | mod_list[4];
mod_list[7] = mod_list[1] | mod_list[2] | mod_list[4];
+ keycode = XKeysymToKeycode (dpy, keysym);
+
/* Grab every combination of ignored modifiers. */
for (i=0; i<8; i++)
{