5

With lines such as

key <AD01> { [     q,          Q,        degree,        paragraph ] };

in /usr/share/X11/xkb/symbols/us, I am able to access the degree symbol with ISO_Level3_Shift+q. I thought that adding a fifth item would make it accessible with ISO_Level5_Shift+q, but that does nothing (outputs q). In fact, adding a fifth breaks level 3 too. How can I make use of the extra modifier? Running Arch.

Toothrot
  • 3,435

2 Answers2

3

You're almost there. You'd get with ISO_Lv3_Shift+Shift+q -- that's the fourth level.

// ISO level   1  2    3         4       5    6    7    8
key <AD01> { [ q, Q, degree, paragraph, foo, bar, baz, bat ] };

To access all those symbols you'll need Shift and 3 modifiers:

  • no mod gives you q; add Shift for Q
  • ISO_Lv3_Shift gives you °; add Shift for
  • ISO_Lv5_Shift gives you foo; add Shift for bar
  • ISO_Lv3_Shift+ISO_Lv5_Shift gives you baz; add Shift for bat

I believe in some contexts you may see the combination of ISO_Lv3_Shift+ISO_Lv5_Shift referred to as ISO_Lv8_Shift or level8.

quixotic
  • 1,140
  • I should have made it clearer that, if I add a fifth item, this is not accessible with lv5. In fact, adding a fifth item breaks lv3 as well. – Toothrot Apr 16 '17 at 12:01
  • 1
    @toothrot probably the layout you're modifying is defined as FOUR_LEVEL_* so it's ignoring the extra levels. try basing your variant on an existing layout that's already using higher levels (grep existing symbols files for EIGHT_LEVEL_). explicitly setting an XKB option like lv5:<whatever> may enable it. – quixotic Apr 16 '17 at 17:55
  • @Toothrot and i'm afraid that's as far as i can assist you; this level (ha!) of XKB stuff is largely theoretical for me. if you can clarify your post with exactly what you've tried (setxkbmap -query), exactly what modifications you've made to what files, and exactly what you're expecting, we might be better able to assist. – quixotic Apr 16 '17 at 18:00
2

Thanks to quixotic's comment I found it works after one has added

key.type[Group1] = "EIGHT_LEVEL";

under the name[Group1]= line.

Toothrot
  • 3,435