Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

On my Debian Linux machine Ctrl+Alt+F1 is bound to a virtual terminal. I can see the corresponding entry by running xmodmap -pke

keycode 67 = F1 XF86_Switch_VT_1 F1 XF86_Switch_VT_1

Per this thread, which I might add is consistent with what I've read elsewhere, the columns on the right hand side of = correspond to key, Shift+key, AltGr+key and Shift+AltGr+key.

Given that, I don't understand how the keycode mapping for F1 (above) works for Ctrl+Alt+F1. It seems it should really be either Shift+F1 or Shift+AltGr+F1?

Here's the output of xmodmap -pm on my machine:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x25)
control     Control_L (0x42),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Can anybody explain it?

share|improve this question
    
Sorry about that <kbd/> mess, neither I don't really like it –  Alois Mahdal Mar 26 '12 at 23:29
    
(So, note the "rollback" link...) –  Arjan Mar 27 '12 at 6:14

1 Answer 1

It is a little bit more complicated, the Fn keys have typically 5 levels instead of your normal 4. The 5th level can be reached via ctrl+alt. This allows you to specify the appropriate keybinding in your ~/.Xmodmap file. Below are some excerpts from the xkb files. For more information about them have a look at http://www.charvolant.org/~doug/xkb/html/node5.html

type "CTRL+ALT" {
    modifiers = Control+Alt+Shift+LevelThree;
    map[None] = Level1;
    map[Shift] = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level4;
    map[Control+Alt] = Level5;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
    level_name[Level5] = "Ctrl+Alt";
};
xkb_symbols "fkey2vt" {
  key <FK01> {
    type="CTRL+ALT",
    symbols[Group1]= [ F1, F1, F1, F1, XF86_Switch_VT_1 ]
  };
  ...
};
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.