On Tue, Mar 12, 2024 at 09:11:32AM +0000, Chris Green wrote: > On Tue, Mar 12, 2024 at 02:25:59PM +1100, Brendan O'Dea wrote: > > On Tue, 12 Mar 2024 at 02:28, Chris Green <c...@isbd.net> wrote: > > > > > > If I comment out the line:- > > > > > > keysym period = period rightcaret U25B6 NoSymbol > > > > > > then the > key works again in xvile. However I really don't see why > > > the above line breaks xvile, no other programs (or none I can find > > > anyway) are affected in the same way. The U25B6 character works in > > > xvile as does 'period' (I'd really miss that one!). > > > > Maybe try : > > > > keysym period = period greater U25B6 NoSymbol > > > > On my machine, where I haven't remapped that key I get this: > > > > % xmodmap -pk | fgrep period > > 60 0x002e (period) 0x003e (greater) 0x002e (period) 0x003e > > (greater) > > > Yes, brilliant! Thank you. It now works. > > I don't know where I got rightcaret from. It's always the most > difficult bit when playing with character mapping, finding the right > names.
xmodmap uses the names defined in the X keyboard map files. Those start with a grid location, i.e., the "AB09" in this chunk: key <AB08> { [ comma, less, ccedilla, Ccedilla ] }; key <AB09> { [ period, greater, dead_abovedot, dead_caron ] }; key <AB10> { [ slash, question, questiondown, dead_hook ] }; key <BKSL> { [ backslash, bar, notsign, brokenbar ] }; The symbols match up with /usr/include/X11/keysymdef.h, which has a bunch of non-character codes, plus ISO-8859-1 and its friends. There's a nice comment in the file which explains how it relates to Unicode. Locations that didn't right nicely into a uniform grid have special names such as "BKSL". The names can differ according to the keyboard map. You can get some insight by seeing how they're used, e.g., in /usr/share/X11/xkb (Debian): Looking for rightcaret, I see only a few references: symbols/my:98: key <AB08> { [ Arabic_comma, rightcaret ] }; symbols/in:1581: key <AB09> { [ U002E, U0C19, rightcaret ] }; // . ఙ > symbols/us:83: key <TLDE> { [ leftcaret, rightcaret ] }; The last is plausible, but see its definition: partial alphanumeric_keys xkb_symbols "ibm238l" { include "us(basic)" name[Group1]= "English (US, IBM Arabic 238_L)"; key <AB08> { [ comma, comma ] }; key <AB09> { [ period, period ] }; key <BKSL> { [ quoteleft, asciitilde ] }; key <LSGT> { [ backslash, bar ] }; key <TLDE> { [ leftcaret, rightcaret ] }; }; That "ibm238l" looks odd - that's used in a few places: rules/base.extras.xml:463: <name>ibm238l</name> rules/evdev.extras.xml:463: <name>ibm238l</name> symbols/sun_vndr/us:63: xkb_symbols "ibm238l" { symbols/sun_vndr/us:64: include "us(ibm238l)" symbols/us:74:xkb_symbols "ibm238l" { and none of those seem plausible. Perhaps this used a customized keyboard map which was wiped out by an upgrade. "greater" is easier to follow, there are more than 300 references, e.g., symbols/us:53: key <AB09> { [ period, greater ] }; symbols/us:138: key <AB09> { [ period, greater, dead_abovedot, dead_caron ] }; symbols/us:194: key <AB09> { [ period, greater, dead_abovedot, dead_circumflex ] }; symbols/us:224: key <AD03> { [ period, greater, dead_abovedot, periodcentered ] }; symbols/us:288: key <AD03> { [ period, greater, dead_abovedot, dead_caron ] }; symbols/us:352: key <AD03> { [ period, greater, ecircumflex, periodcentered ] }; symbols/us:403: key <AD09> { [ period, greater ] }; symbols/us:454: key <AD04> { [ period, greater ] }; When you use xmodmap, you're basically telling it to reinterpret one of those table entries. So... when you're puzzled, finding the relevant table can help. For amusement: https://invisible-island.net/xterm/modified-keys.html -- Thomas E. Dickey <dic...@invisible-island.net> https://invisible-island.net
signature.asc
Description: PGP signature