diff options
author | sabetts <sabetts> | 2004-04-24 06:10:33 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2004-04-24 06:10:33 +0000 |
commit | c9303ecfb30db08b3cc12137831ab352ac9b0812 (patch) | |
tree | cbb6a01bd9c409d83300205871955edf24474830 /src/input.c | |
parent | a0b9448f94bf5c97730f13f7e6d5cb4d435d605b (diff) | |
download | ratpoison-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.c | 18 |
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++) { |