In my customized keyboard layout, I have these lines already:
// row 1 (E) key <TLDE> { [ question, exclam, masculine, ordfeminine ] }; key <AE01> { [ braceleft, 1 ] }; key <AE02> { [ bracketleft, 2, periodcentered ] }; key <AE03> { [ parenleft, 3, EuroSign ] }; key <AE04> { [ less, 4 ] }; key <AE05> { [ slash, 5 ] }; key <AE06> { [ apostrophe, quotedbl, dead_diaeresis ] }; key <AE07> { [ equal, plus ] }; key <AE08> { [ backslash, 6, notsign ] }; key <AE09> { [ greater, 7 ] }; key <AE10> { [ parenright, 8 ] }; key <AE11> { [ bracketright, 9, exclamdown ] }; key <AE12> { [ braceright, 0, questiondown ] }; This is the row 1 (the row below Function keys, beyond the letters).
So, for example, now if I press number 1, it will enter {, and when I press shift+1, it will enter 1. It's good. But, when I press Capslock, it enters {, too, but I want 1. Capslock works for letters.
So now, I want to make capslock work for letters AND for this row, but not for the other keys on keyboard like shiftlock, how can I do it?
(Shiftlock: press some keys and release, and you press every key on the keyboard as if Shift is pressed. Not only alphabetical keys, but Insert, Home and arrow keys output will change, which is not what I want)
This is possible in Windows, with Microsoft Keyboard Layout Manager, as there, the key definition contains state of all the 4 levels for one key, and another level for Capslock. But I don't know if xkb allows it.
(cap 1: cap enable on this key, cap 0: not enable)
//SC VK_ Cap 0 1 2 6 7 //-- ---- ---- ---- ---- ---- ---- ---- 02 1 1 1 007b -1 -1 -1 // DIGIT ONE, LEFT CURLY BRACKET, <none>, <none>, <none> 