Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .