I just found one other useful addition to my study below is that the ISO_Level3 
is part of the ISO 9995 standard: https://en.wikipedia.org/wiki/ISO/IEC_9995

> My researches had led me to the statements, that the way xmodmap specifies 
> the keycode and
> modifier combinations isn't flexible enough to describe modern Keyboards and 
> the symbols that
> are produced from them.
> 
> I assume its the "XKEYBOARD" X Server Extension that configures the keyboard 
> through xkb files,
> that should live somewhere near /usr/share/X11/xkb (system dependent).
> 
> To view your current configuration the command
> 
>       xkbcomp -xkb :0 - # produces a lot of output
> 
> . The files that affect this configuration can be found if you check the 
> output of
> 
>       setxkbmap -print
> 
> . For example on my system that is
> 
>       xkb_keymap {
>               xkb_keycodes  { include "evdev+aliases(qwertz)" };
>               xkb_types        { include "complete"   };
>               xkb_compat      { include "complete"    };
>               xkb_symbols   { include "pc+de(nodeadkeys)+inet(evdev)" };
>               xkb_geometry  { include "pc(pc104)"     };
>       };
> 
> . When I want to find the produced symbols for that configuration I have to 
> read the files
> "symbols/pc", "symbols/de" and "symbols/inet". From the above output I can 
> search the line
> starting with 
> 
>       xkb_symbols "pc+de(nodeadkeys)+inet(evdev)"
> 
> . Each key on the keyboard is configured in such structure similar to
> 
>       key <AD01> {
>               type= "FOUR_LEVEL_SEMIALPHABETIC",
>               symbols[Group1]= [                         q,                   
>    Q,                     at,    Greek_OMEGA ]
>       };
> 
> . The term "<AD01>" comes from the xkb_geometry files and is evaluated as
> 
>       <AD01> = 24;
> 
> here, so that is for keycode 24.
> 
> The interesting thing is the "type" field, that comes from the 
> "compat/complete" file
> here and contains the structure
> 
>       type "FOUR_LEVEL_SEMIALPHABETIC" {
>               modifiers= Shift+Lock+LevelThree;
>               map[Shift]= Level2;
>               map[Lock]= Level2;
>               map[LevelThree]= Level3;
>               map[Shift+LevelThree]= Level4;
>               map[Lock+LevelThree]= Level3;
>               preserve[Lock+LevelThree]= Lock;
>               map[Shift+Lock+LevelThree]= Level4;
>               preserve[Shift+Lock+LevelThree]= Lock;
>               level_name[Level1]= "Base";
>               level_name[Level2]= "Shift";
>               level_name[Level3]= "Alt Base";
>               level_name[Level4]= "Shift Alt";
>       };
> 
> . Don't let be confused from the "level_name" Alt, that contains no or even 
> misleading information.
> We need to search for the term "LevelThree", that is overdefined as
> 
>       interpret ISO_Level3_Shift+AnyOf(all) {
>               virtualModifier= LevelThree;
>               useModMapMods=level1;
>               action= SetMods(modifiers=LevelThree,clearLocks);
>       };
>       interpret ISO_Level3_Shift+AnyOfOrNone(all) {
>               action= SetMods(modifiers=LevelThree,clearLocks);
>       };
> 
> and "ISO_Level3_Shift" is
> 
>       <LVL3> = 92;
>       key <LVL3> {
>               type= "ONE_LEVEL",
>               symbols[Group1]= [ ISO_Level3_Shift ]
>       };
> 
> . I haven't found why my keyboard produces keycode 92 for AltGr, though the 
> layout
> uses "<RALT> = 108;" so it should produce 108.
> 
> I leave that last question for anyone who knows even more.
> 
> After all I would say that the xkb configuration is too complex and bad 
> documented, but
> understandable in the end.
> 
> I would recommend to forget about xmodmap and use xkbcomp(1) and setxkbmap(1) 
> to
> temporarily modify the produced symbols. You can define more than FOUR_LEVEL 
> symbols. I found
> definitions with up to EIGHT_LEVEL types. Can you define even more?
> 
> Another left-over question is: Is there a default or configured "system 
> directory" to overwrite
> the "installation directory" settings in "/usr/share/X11/xkb", such as 
> "/etc/X11/xkb"?
> 
> Regards,
> 
> Ingo Krabbe
> 
> 
>> Regarding the ayer's discussion, it pop'ed up a small question re/ xmodmap;
>> 
>> if I do:
>> 
>> $ xmodmap -pke | fgrep ' 24 ='
>> keycode  24 = q Q q Q at Greek_OMEGA at Greek_OMEGA
>> 
>> I see that the at-sign in my environment is assigned as the 5th keysym
>> to the keycode 24 and Alt-gr q gives @, even more Alt-gr Shift q gives
>> the Greek_OMEGA: ΩΩΩΩΩΩΩ (perhaps you need an UTF-8 terminal to see it
>> correctly). So far so good. But why the man page of xmodmap(1) says:
>> 
>>              keycode NUMBER = KEYSYMNAME ...
>>                              The list of keysyms is assigned to the 
>> indicated keycode (which
>>                              may be specified in decimal, hex or octal and 
>> can be determined
>>                              by running the xev program).  Up to eight 
>> keysyms may be
>>                              attached to a key, however the last four are 
>> not used in any
>>                              major X server implementation.  The first 
>> keysym is used when
>>                              no modifier key is pressed in conjunction with 
>> this key, the
>>                              second with Shift, the third when the 
>> Mode_switch key is used
>>                              with this key and the fourth when both the 
>> Mode_switch and
>>                              Shift keys are used.
>> 
>> i.e. it says that four last values are unused? This is on my system with
>> xorg-7.7 on FreeBSD 11-CURRENT.
>> 
>> Thanks
>> 
>>      matthias
>> -- 
>> Matthias Apitz, g...@unixarea.de, http://www.unixarea.de/ +49-170-4527211    
>> +49-176-38902045
>> "Wenn der Mensch von den Umständen gebildet wird, so muß man die Umstände 
>> menschlich bilden."
>> "Si el hombre es formado por las circunstancias entonces es necesario formar 
>> humanamente
>> las circunstancias", Karl Marx in Die heilige Familie / La sagrada familia 
>> (MEW 2, 138)
>> _______________________________________________
>> xorg@lists.x.org: X.Org support
>> Archives: http://lists.freedesktop.org/archives/xorg
>> Info: http://lists.x.org/mailman/listinfo/xorg
>> Your subscription address: %(user_address)s
> 
> 
> _______________________________________________
> xorg@lists.x.org: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: http://lists.x.org/mailman/listinfo/xorg
> Your subscription address: %(user_address)s


_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s

Reply via email to