3383 |
Alt keysyms are on. */ |
Alt keysyms are on. */ |
3384 |
{ |
{ |
3385 |
int row, col; /* The row and column in the modifier table. */ |
int row, col; /* The row and column in the modifier table. */ |
3386 |
|
int found_alt_or_meta; |
3387 |
|
|
3388 |
for (row = 3; row < 8; row++) |
for (row = 3; row < 8; row++) |
3389 |
|
{ |
3390 |
|
found_alt_or_meta = 0; |
3391 |
for (col = 0; col < mods->max_keypermod; col++) |
for (col = 0; col < mods->max_keypermod; col++) |
3392 |
{ |
{ |
3393 |
KeyCode code |
KeyCode code = mods->modifiermap[(row * mods->max_keypermod) + col]; |
|
= mods->modifiermap[(row * mods->max_keypermod) + col]; |
|
3394 |
|
|
3395 |
/* Zeroes are used for filler. Skip them. */ |
/* Zeroes are used for filler. Skip them. */ |
3396 |
if (code == 0) |
if (code == 0) |
3408 |
{ |
{ |
3409 |
case XK_Meta_L: |
case XK_Meta_L: |
3410 |
case XK_Meta_R: |
case XK_Meta_R: |
3411 |
|
found_alt_or_meta = 1; |
3412 |
dpyinfo->meta_mod_mask |= (1 << row); |
dpyinfo->meta_mod_mask |= (1 << row); |
3413 |
break; |
break; |
3414 |
|
|
3415 |
case XK_Alt_L: |
case XK_Alt_L: |
3416 |
case XK_Alt_R: |
case XK_Alt_R: |
3417 |
|
found_alt_or_meta = 1; |
3418 |
dpyinfo->alt_mod_mask |= (1 << row); |
dpyinfo->alt_mod_mask |= (1 << row); |
3419 |
break; |
break; |
3420 |
|
|
3421 |
case XK_Hyper_L: |
case XK_Hyper_L: |
3422 |
case XK_Hyper_R: |
case XK_Hyper_R: |
3423 |
dpyinfo->hyper_mod_mask |= (1 << row); |
if (!found_alt_or_meta) |
3424 |
|
dpyinfo->hyper_mod_mask |= (1 << row); |
3425 |
|
code_col = syms_per_code; |
3426 |
|
col = mods->max_keypermod; |
3427 |
break; |
break; |
3428 |
|
|
3429 |
case XK_Super_L: |
case XK_Super_L: |
3430 |
case XK_Super_R: |
case XK_Super_R: |
3431 |
dpyinfo->super_mod_mask |= (1 << row); |
if (!found_alt_or_meta) |
3432 |
|
dpyinfo->super_mod_mask |= (1 << row); |
3433 |
|
code_col = syms_per_code; |
3434 |
|
col = mods->max_keypermod; |
3435 |
break; |
break; |
3436 |
|
|
3437 |
case XK_Shift_Lock: |
case XK_Shift_Lock: |
3438 |
/* Ignore this if it's not on the lock modifier. */ |
/* Ignore this if it's not on the lock modifier. */ |
3439 |
if ((1 << row) == LockMask) |
if (!found_alt_or_meta && ((1 << row) == LockMask)) |
3440 |
dpyinfo->shift_lock_mask = LockMask; |
dpyinfo->shift_lock_mask = LockMask; |
3441 |
|
code_col = syms_per_code; |
3442 |
|
col = mods->max_keypermod; |
3443 |
break; |
break; |
3444 |
} |
} |
3445 |
} |
} |
3446 |
} |
} |
3447 |
} |
} |
3448 |
|
} |
3449 |
} |
} |
3450 |
|
|
3451 |
/* If we couldn't find any meta keys, accept any alt keys as meta keys. */ |
/* If we couldn't find any meta keys, accept any alt keys as meta keys. */ |