diff options
| author | Jan Djärv | 2004-10-05 10:52:53 +0000 |
|---|---|---|
| committer | Jan Djärv | 2004-10-05 10:52:53 +0000 |
| commit | b90ee8b5fe3247c345212614877551d41bcbdd98 (patch) | |
| tree | 91226312befbf4c0dec84b99b2aaefc5afd0fbb2 /src | |
| parent | 35ab48578a02c740b9208a5a8848d7a30f7e6592 (diff) | |
| download | emacs-b90ee8b5fe3247c345212614877551d41bcbdd98.tar.gz emacs-b90ee8b5fe3247c345212614877551d41bcbdd98.zip | |
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
a row if Alt or Meta has been found for that row. Also stop scanning
for Keysyms for that row.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xterm.c | 23 |
2 files changed, 24 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8f6b2297692..b823dbe6f30 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2004-10-05 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for | ||
| 4 | a row if Alt or Meta has been found for that row. Also stop scanning | ||
| 5 | for Keysyms for that row. | ||
| 6 | |||
| 1 | 2004-10-04 Kim F. Storm <storm@cua.dk> | 7 | 2004-10-04 Kim F. Storm <storm@cua.dk> |
| 2 | 8 | ||
| 3 | * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons | 9 | * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons |
diff --git a/src/xterm.c b/src/xterm.c index 97e21d1f255..4fc9ed71abd 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -3383,12 +3383,14 @@ x_find_modifier_meanings (dpyinfo) | |||
| 3383 | Alt keysyms are on. */ | 3383 | Alt keysyms are on. */ |
| 3384 | { | 3384 | { |
| 3385 | int row, col; /* The row and column in the modifier table. */ | 3385 | int row, col; /* The row and column in the modifier table. */ |
| 3386 | int found_alt_or_meta; | ||
| 3386 | 3387 | ||
| 3387 | for (row = 3; row < 8; row++) | 3388 | for (row = 3; row < 8; row++) |
| 3389 | { | ||
| 3390 | found_alt_or_meta = 0; | ||
| 3388 | for (col = 0; col < mods->max_keypermod; col++) | 3391 | for (col = 0; col < mods->max_keypermod; col++) |
| 3389 | { | 3392 | { |
| 3390 | KeyCode code | 3393 | KeyCode code = mods->modifiermap[(row * mods->max_keypermod) + col]; |
| 3391 | = mods->modifiermap[(row * mods->max_keypermod) + col]; | ||
| 3392 | 3394 | ||
| 3393 | /* Zeroes are used for filler. Skip them. */ | 3395 | /* Zeroes are used for filler. Skip them. */ |
| 3394 | if (code == 0) | 3396 | if (code == 0) |
| @@ -3406,33 +3408,44 @@ x_find_modifier_meanings (dpyinfo) | |||
| 3406 | { | 3408 | { |
| 3407 | case XK_Meta_L: | 3409 | case XK_Meta_L: |
| 3408 | case XK_Meta_R: | 3410 | case XK_Meta_R: |
| 3411 | found_alt_or_meta = 1; | ||
| 3409 | dpyinfo->meta_mod_mask |= (1 << row); | 3412 | dpyinfo->meta_mod_mask |= (1 << row); |
| 3410 | break; | 3413 | break; |
| 3411 | 3414 | ||
| 3412 | case XK_Alt_L: | 3415 | case XK_Alt_L: |
| 3413 | case XK_Alt_R: | 3416 | case XK_Alt_R: |
| 3417 | found_alt_or_meta = 1; | ||
| 3414 | dpyinfo->alt_mod_mask |= (1 << row); | 3418 | dpyinfo->alt_mod_mask |= (1 << row); |
| 3415 | break; | 3419 | break; |
| 3416 | 3420 | ||
| 3417 | case XK_Hyper_L: | 3421 | case XK_Hyper_L: |
| 3418 | case XK_Hyper_R: | 3422 | case XK_Hyper_R: |
| 3419 | dpyinfo->hyper_mod_mask |= (1 << row); | 3423 | if (!found_alt_or_meta) |
| 3424 | dpyinfo->hyper_mod_mask |= (1 << row); | ||
| 3425 | code_col = syms_per_code; | ||
| 3426 | col = mods->max_keypermod; | ||
| 3420 | break; | 3427 | break; |
| 3421 | 3428 | ||
| 3422 | case XK_Super_L: | 3429 | case XK_Super_L: |
| 3423 | case XK_Super_R: | 3430 | case XK_Super_R: |
| 3424 | dpyinfo->super_mod_mask |= (1 << row); | 3431 | if (!found_alt_or_meta) |
| 3432 | dpyinfo->super_mod_mask |= (1 << row); | ||
| 3433 | code_col = syms_per_code; | ||
| 3434 | col = mods->max_keypermod; | ||
| 3425 | break; | 3435 | break; |
| 3426 | 3436 | ||
| 3427 | case XK_Shift_Lock: | 3437 | case XK_Shift_Lock: |
| 3428 | /* Ignore this if it's not on the lock modifier. */ | 3438 | /* Ignore this if it's not on the lock modifier. */ |
| 3429 | if ((1 << row) == LockMask) | 3439 | if (!found_alt_or_meta && ((1 << row) == LockMask)) |
| 3430 | dpyinfo->shift_lock_mask = LockMask; | 3440 | dpyinfo->shift_lock_mask = LockMask; |
| 3441 | code_col = syms_per_code; | ||
| 3442 | col = mods->max_keypermod; | ||
| 3431 | break; | 3443 | break; |
| 3432 | } | 3444 | } |
| 3433 | } | 3445 | } |
| 3434 | } | 3446 | } |
| 3435 | } | 3447 | } |
| 3448 | } | ||
| 3436 | } | 3449 | } |
| 3437 | 3450 | ||
| 3438 | /* If we couldn't find any meta keys, accept any alt keys as meta keys. */ | 3451 | /* If we couldn't find any meta keys, accept any alt keys as meta keys. */ |