* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
[not found] <87v8dv2ib3.fsf@gmx.at>
@ 2023-08-09 0:02 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-15 13:31 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-09 0:02 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> I'm using the interception-`dual-function-keys`-plugin
>
> https://gitlab.com/interception/linux/plugins/dual-function-keys
>
> for my keyboard layout. In version 28.2 it worked perfectly, but
> now, if I try to use combinations using keys that have
> a dual function, the combination breaks off sending the wrong
> signals. For instance, my CapsLock key has a dual function,
> sending a F15 (XF86Launch5) if tapped and acting as the
> apostrophe-key (AC11 in xkb) if held, which is configured in xkb
> to act as an xkb level 3 modifier.
Which virtual modifier key have you assigned to the apostrophe key?
> However, now when I try to use
> CapsLock for a key combination using a level 3 symbol, for
> instance if I hold Control, then press CapsLock, it seems to send
> simply the apostrophe-key, so that I receive the
> message "C-' is undefined" and the key sequence is broken off. If
> I continue to hold both Control and CapsLock, it seems
> to access level 3 normally though, so that I can still use
> combinations consisting of C-[level 3 character]. If I only want
> to access a level 3 symbol by holding CapsLock, it works normally,
> it seems
> only combinations are affected. While typing this message I
> noticed an even weirder thing: my F-key is configured to
> have "a" on level and "Right" on level 5, and Rightalt is
> configured to act as a level 5 modifier if held, and if I
> press the F key normally or while holding Rightalt this works, but
> if I first hold Control, then Rightalt, then tap the
> F-key, it seems to interpret the result as C-f, even though on no
> xkb-level the F-key is configured to actually send f.
>
> The problem persists if I instead build the latest Emacs-version
> (30.1) from Github
Nit: Emacs is not developed on GitHub, but on Savannah:
https://git.sv.gnu.org/cgit/emacs.git
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-09 0:02 ` bug#65068: 29.1; xkb-interception interaction causes problems with key combinations Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-15 13:31 ` Alexander Prähauser
2023-08-16 1:29 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-15 13:31 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
Sorry for the late reply.
> Which virtual modifier key have you assigned to the apostrophe
> key?
I've made the apostrophe key (AC11 in xkb) a level 3 switch
through the following function:
> // The AC11 key (while pressed) chooses the third shift level.
> partial modifier_keys
> xkb_symbols "ac11_switch" {
> key <AC11> {
> type[Group1]="ONE_LEVEL",
> symbols[Group1] = [ ISO_Level3_Shift ]
> };
> };
If tapped it sends an F14 signal (which I use in Emacs to insert
math symbols in cdlatex).
> Nit: Emacs is not developed on GitHub, but on Savannah:
I see. What I meant was that I built it using the emacs-git entry
in the AUR.
Po Lu [2023-08-09 Wed 08:02] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> I'm using the interception-`dual-function-keys`-plugin
>>
>> https://gitlab.com/interception/linux/plugins/dual-function-keys
>>
>> for my keyboard layout. In version 28.2 it worked perfectly,
>> but
>> now, if I try to use combinations using keys that have
>> a dual function, the combination breaks off sending the wrong
>> signals. For instance, my CapsLock key has a dual function,
>> sending a F15 (XF86Launch5) if tapped and acting as the
>> apostrophe-key (AC11 in xkb) if held, which is configured in
>> xkb
>> to act as an xkb level 3 modifier.
>
> Which virtual modifier key have you assigned to the apostrophe
> key?
>
>> However, now when I try to use
>> CapsLock for a key combination using a level 3 symbol, for
>> instance if I hold Control, then press CapsLock, it seems to
>> send
>> simply the apostrophe-key, so that I receive the
>> message "C-' is undefined" and the key sequence is broken
>> off. If
>> I continue to hold both Control and CapsLock, it seems
>> to access level 3 normally though, so that I can still use
>> combinations consisting of C-[level 3 character]. If I only
>> want
>> to access a level 3 symbol by holding CapsLock, it works
>> normally,
>> it seems
>> only combinations are affected. While typing this message I
>> noticed an even weirder thing: my F-key is configured to
>> have "a" on level and "Right" on level 5, and Rightalt is
>> configured to act as a level 5 modifier if held, and if I
>> press the F key normally or while holding Rightalt this works,
>> but
>> if I first hold Control, then Rightalt, then tap the
>> F-key, it seems to interpret the result as C-f, even though on
>> no
>> xkb-level the F-key is configured to actually send f.
>>
>> The problem persists if I instead build the latest
>> Emacs-version
>> (30.1) from Github
>
> Nit: Emacs is not developed on GitHub, but on Savannah:
>
> https://git.sv.gnu.org/cgit/emacs.git
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-15 13:31 ` Alexander Prähauser
@ 2023-08-16 1:29 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-16 7:50 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-16 1:29 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> Sorry for the late reply.
>
>> Which virtual modifier key have you assigned to the apostrophe key?
>
> I've made the apostrophe key (AC11 in xkb) a level 3 switch through
> the following function:
>
>> // The AC11 key (while pressed) chooses the third shift level.
>> partial modifier_keys
>> xkb_symbols "ac11_switch" {
>> key <AC11> {
>> type[Group1]="ONE_LEVEL",
>> symbols[Group1] = [ ISO_Level3_Shift ]
>> };
>> };
>
> If tapped it sends an F14 signal (which I use in Emacs to insert math
> symbols in cdlatex).
I guess I still don't fully understand your XKB configuration. Having
access to the complete XKB configuration on your X server would be a
great help to that end.
Would you please run:
xkbcomp -xkb $DISPLAY
and attach each generated *.xkb file?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-16 1:29 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-16 7:50 ` Alexander Prähauser
2023-08-16 8:02 ` Alexander Prähauser
2023-08-16 12:51 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-16 7:50 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
[-- Attachment #1: xkb file --]
[-- Type: file, Size: 69044 bytes --]
xkb_keymap {
xkb_keycodes "(unnamed)" {
minimum = 8;
maximum = 255;
<ESC> = 9;
<AE01> = 10;
<AE02> = 11;
<AE03> = 12;
<AE04> = 13;
<AE05> = 14;
<AE06> = 15;
<AE07> = 16;
<AE08> = 17;
<AE09> = 18;
<AE10> = 19;
<AE11> = 20;
<AE12> = 21;
<BKSP> = 22;
<TAB> = 23;
<AD01> = 24;
<AD02> = 25;
<AD03> = 26;
<AD04> = 27;
<AD05> = 28;
<AD06> = 29;
<AD07> = 30;
<AD08> = 31;
<AD09> = 32;
<AD10> = 33;
<AD11> = 34;
<AD12> = 35;
<RTRN> = 36;
<LCTL> = 37;
<AC01> = 38;
<AC02> = 39;
<AC03> = 40;
<AC04> = 41;
<AC05> = 42;
<AC06> = 43;
<AC07> = 44;
<AC08> = 45;
<AC09> = 46;
<AC10> = 47;
<AC11> = 48;
<TLDE> = 49;
<LFSH> = 50;
<BKSL> = 51;
<AB01> = 52;
<AB02> = 53;
<AB03> = 54;
<AB04> = 55;
<AB05> = 56;
<AB06> = 57;
<AB07> = 58;
<AB08> = 59;
<AB09> = 60;
<AB10> = 61;
<RTSH> = 62;
<KPMU> = 63;
<LALT> = 64;
<SPCE> = 65;
<CAPS> = 66;
<FK01> = 67;
<FK02> = 68;
<FK03> = 69;
<FK04> = 70;
<FK05> = 71;
<FK06> = 72;
<FK07> = 73;
<FK08> = 74;
<FK09> = 75;
<FK10> = 76;
<NMLK> = 77;
<SCLK> = 78;
<KP7> = 79;
<KP8> = 80;
<KP9> = 81;
<KPSU> = 82;
<KP4> = 83;
<KP5> = 84;
<KP6> = 85;
<KPAD> = 86;
<KP1> = 87;
<KP2> = 88;
<KP3> = 89;
<KP0> = 90;
<KPDL> = 91;
<LVL3> = 92;
<LSGT> = 94;
<FK11> = 95;
<FK12> = 96;
<AB11> = 97;
<KATA> = 98;
<HIRA> = 99;
<HENK> = 100;
<HKTG> = 101;
<MUHE> = 102;
<JPCM> = 103;
<KPEN> = 104;
<RCTL> = 105;
<KPDV> = 106;
<PRSC> = 107;
<RALT> = 108;
<LNFD> = 109;
<HOME> = 110;
<UP> = 111;
<PGUP> = 112;
<LEFT> = 113;
<RGHT> = 114;
<END> = 115;
<DOWN> = 116;
<PGDN> = 117;
<INS> = 118;
<DELE> = 119;
<I120> = 120;
<MUTE> = 121;
<VOL-> = 122;
<VOL+> = 123;
<POWR> = 124;
<KPEQ> = 125;
<I126> = 126;
<PAUS> = 127;
<I128> = 128;
<I129> = 129;
<HNGL> = 130;
<HJCV> = 131;
<AE13> = 132;
<LWIN> = 133;
<RWIN> = 134;
<COMP> = 135;
<STOP> = 136;
<AGAI> = 137;
<PROP> = 138;
<UNDO> = 139;
<FRNT> = 140;
<COPY> = 141;
<OPEN> = 142;
<PAST> = 143;
<FIND> = 144;
<CUT> = 145;
<HELP> = 146;
<I147> = 147;
<I148> = 148;
<I149> = 149;
<I150> = 150;
<I151> = 151;
<I152> = 152;
<I153> = 153;
<I154> = 154;
<I155> = 155;
<I156> = 156;
<I157> = 157;
<I158> = 158;
<I159> = 159;
<I160> = 160;
<I161> = 161;
<I162> = 162;
<I163> = 163;
<I164> = 164;
<I165> = 165;
<I166> = 166;
<I167> = 167;
<I168> = 168;
<I169> = 169;
<I170> = 170;
<I171> = 171;
<I172> = 172;
<I173> = 173;
<I174> = 174;
<I175> = 175;
<I176> = 176;
<I177> = 177;
<I178> = 178;
<I179> = 179;
<I180> = 180;
<I181> = 181;
<I182> = 182;
<I183> = 183;
<I184> = 184;
<I185> = 185;
<I186> = 186;
<I187> = 187;
<I188> = 188;
<I189> = 189;
<I190> = 190;
<FK13> = 191;
<FK14> = 192;
<FK15> = 193;
<FK16> = 194;
<FK17> = 195;
<FK18> = 196;
<FK19> = 197;
<FK20> = 198;
<FK21> = 199;
<FK22> = 200;
<FK23> = 201;
<FK24> = 202;
<LVL5> = 203;
<ALT> = 204;
<META> = 205;
<SUPR> = 206;
<HYPR> = 207;
<I208> = 208;
<I209> = 209;
<I210> = 210;
<I211> = 211;
<I212> = 212;
<I213> = 213;
<I214> = 214;
<I215> = 215;
<I216> = 216;
<I217> = 217;
<I218> = 218;
<I219> = 219;
<I220> = 220;
<I221> = 221;
<I222> = 222;
<I223> = 223;
<I224> = 224;
<I225> = 225;
<I226> = 226;
<I227> = 227;
<I228> = 228;
<I229> = 229;
<I230> = 230;
<I231> = 231;
<I232> = 232;
<I233> = 233;
<I234> = 234;
<I235> = 235;
<I236> = 236;
<I237> = 237;
<I238> = 238;
<I239> = 239;
<I240> = 240;
<I241> = 241;
<I242> = 242;
<I243> = 243;
<I244> = 244;
<I245> = 245;
<I246> = 246;
<I247> = 247;
<I248> = 248;
<I249> = 249;
<I250> = 250;
<I251> = 251;
<I252> = 252;
<I253> = 253;
<I254> = 254;
<I255> = 255;
indicator 1 = "Caps Lock";
indicator 2 = "Num Lock";
indicator 3 = "Scroll Lock";
indicator 4 = "Compose";
indicator 5 = "Kana";
indicator 6 = "Sleep";
indicator 7 = "Suspend";
indicator 8 = "Mute";
indicator 9 = "Misc";
indicator 10 = "Mail";
indicator 11 = "Charging";
indicator 12 = "Shift Lock";
indicator 13 = "Group 2";
indicator 14 = "Mouse Keys";
alias <AC12> = <BKSL>;
alias <ALGR> = <RALT>;
alias <MENU> = <COMP>;
alias <HZTG> = <TLDE>;
alias <LMTA> = <LWIN>;
alias <RMTA> = <RWIN>;
alias <OUTP> = <I235>;
alias <KITG> = <I236>;
alias <KIDN> = <I237>;
alias <KIUP> = <I238>;
alias <I121> = <MUTE>;
alias <I122> = <VOL->;
alias <I123> = <VOL+>;
alias <I124> = <POWR>;
alias <I125> = <KPEQ>;
alias <I127> = <PAUS>;
alias <I130> = <HNGL>;
alias <I131> = <HJCV>;
alias <I132> = <AE13>;
alias <I133> = <LWIN>;
alias <I134> = <RWIN>;
alias <I135> = <COMP>;
alias <I136> = <STOP>;
alias <I137> = <AGAI>;
alias <I138> = <PROP>;
alias <I139> = <UNDO>;
alias <I140> = <FRNT>;
alias <I141> = <COPY>;
alias <I142> = <OPEN>;
alias <I143> = <PAST>;
alias <I144> = <FIND>;
alias <I145> = <CUT>;
alias <I146> = <HELP>;
alias <I191> = <FK13>;
alias <I192> = <FK14>;
alias <I193> = <FK15>;
alias <I194> = <FK16>;
alias <I195> = <FK17>;
alias <I196> = <FK18>;
alias <I197> = <FK19>;
alias <I198> = <FK20>;
alias <I199> = <FK21>;
alias <I200> = <FK22>;
alias <I201> = <FK23>;
alias <I202> = <FK24>;
alias <MDSW> = <LVL5>;
alias <KPPT> = <I129>;
alias <LatQ> = <AD01>;
alias <LatW> = <AD02>;
alias <LatE> = <AD03>;
alias <LatR> = <AD04>;
alias <LatT> = <AD05>;
alias <LatZ> = <AD06>;
alias <LatU> = <AD07>;
alias <LatI> = <AD08>;
alias <LatO> = <AD09>;
alias <LatP> = <AD10>;
alias <LatA> = <AC01>;
alias <LatS> = <AC02>;
alias <LatD> = <AC03>;
alias <LatF> = <AC04>;
alias <LatG> = <AC05>;
alias <LatH> = <AC06>;
alias <LatJ> = <AC07>;
alias <LatK> = <AC08>;
alias <LatL> = <AC09>;
alias <LatY> = <AB01>;
alias <LatX> = <AB02>;
alias <LatC> = <AB03>;
alias <LatV> = <AB04>;
alias <LatB> = <AB05>;
alias <LatN> = <AB06>;
alias <LatM> = <AB07>;
};
xkb_types "(unnamed)" {
virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
type "ONE_LEVEL" {
modifiers= none;
level_name[Level1]= "Any";
};
type "TWO_LEVEL" {
modifiers= Shift;
map[Shift]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
};
type "ALPHABETIC" {
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
type "KEYPAD" {
modifiers= Shift+NumLock;
map[NumLock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Number";
};
type "SHIFT+ALT" {
modifiers= Shift+Alt;
map[Shift+Alt]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Shift+Alt";
};
type "PC_SUPER_LEVEL2" {
modifiers= Mod4;
map[Mod4]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Super";
};
type "PC_CONTROL_LEVEL2" {
modifiers= Control;
map[Control]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Control";
};
type "PC_ALT_LEVEL2" {
modifiers= Alt;
map[Alt]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Alt";
};
type "CTRL+ALT" {
modifiers= Shift+Control+Alt+LevelThree;
map[Shift]= Level2;
preserve[Shift]= Shift;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
preserve[Shift+LevelThree]= Shift;
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";
};
type "LOCAL_EIGHT_LEVEL" {
modifiers= Shift+Lock+Control+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+Lock+LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level4;
map[Control]= Level5;
map[Shift+Lock+Control]= Level5;
map[Shift+Control]= Level6;
map[Lock+Control]= Level6;
map[Control+LevelThree]= Level7;
map[Shift+Lock+Control+LevelThree]= Level7;
map[Shift+Control+LevelThree]= Level8;
map[Lock+Control+LevelThree]= Level8;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Level3";
level_name[Level4]= "Shift Level3";
level_name[Level5]= "Ctrl";
level_name[Level6]= "Shift Ctrl";
level_name[Level7]= "Level3 Ctrl";
level_name[Level8]= "Shift Level3 Ctrl";
};
type "THREE_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Level3";
};
type "EIGHT_LEVEL" {
modifiers= Shift+LevelThree+LevelFive;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[LevelFive]= Level5;
map[Shift+LevelFive]= Level6;
map[LevelThree+LevelFive]= Level7;
map[Shift+LevelThree+LevelFive]= Level8;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "X";
level_name[Level6]= "X Shift";
level_name[Level7]= "X Alt Base";
level_name[Level8]= "X Shift Alt";
};
type "EIGHT_LEVEL_ALPHABETIC" {
modifiers= Shift+Lock+LevelThree+LevelFive;
map[Shift]= Level2;
map[Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level4;
map[Shift+Lock+LevelThree]= Level3;
map[LevelFive]= Level5;
map[Shift+LevelFive]= Level6;
map[Lock+LevelFive]= Level6;
map[Shift+Lock+LevelFive]= Level5;
map[LevelThree+LevelFive]= Level7;
map[Shift+LevelThree+LevelFive]= Level8;
map[Lock+LevelThree+LevelFive]= Level8;
map[Shift+Lock+LevelThree+LevelFive]= Level7;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "X";
level_name[Level6]= "X Shift";
level_name[Level7]= "X Alt Base";
level_name[Level8]= "X Shift Alt";
};
type "EIGHT_LEVEL_SEMIALPHABETIC" {
modifiers= Shift+Lock+LevelThree+LevelFive;
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;
map[LevelFive]= Level5;
map[Shift+LevelFive]= Level6;
map[Lock+LevelFive]= Level6;
map[Shift+Lock+LevelFive]= Level5;
map[LevelThree+LevelFive]= Level7;
map[Shift+LevelThree+LevelFive]= Level8;
map[Lock+LevelThree+LevelFive]= Level7;
preserve[Lock+LevelThree+LevelFive]= Lock;
map[Shift+Lock+LevelThree+LevelFive]= Level8;
preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "X";
level_name[Level6]= "X Shift";
level_name[Level7]= "X Alt Base";
level_name[Level8]= "X Shift Alt";
};
type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[LevelFive]= Level5;
map[Shift+LevelFive]= Level6;
preserve[Shift+LevelFive]= Shift;
map[LevelThree+LevelFive]= Level7;
map[Shift+LevelThree+LevelFive]= Level8;
map[NumLock]= Level5;
map[Shift+NumLock]= Level6;
preserve[Shift+NumLock]= Shift;
map[NumLock+LevelThree]= Level7;
map[Shift+NumLock+LevelThree]= Level8;
map[Shift+NumLock+LevelFive]= Level2;
map[NumLock+LevelThree+LevelFive]= Level3;
map[Shift+NumLock+LevelThree+LevelFive]= Level4;
map[Shift+Lock]= Level2;
map[Lock+LevelThree]= Level3;
map[Shift+Lock+LevelThree]= Level4;
map[Lock+LevelFive]= Level5;
map[Shift+Lock+LevelFive]= Level6;
preserve[Shift+Lock+LevelFive]= Shift;
map[Lock+LevelThree+LevelFive]= Level7;
map[Shift+Lock+LevelThree+LevelFive]= Level8;
map[Lock+NumLock]= Level5;
map[Shift+Lock+NumLock]= Level6;
preserve[Shift+Lock+NumLock]= Shift;
map[Lock+NumLock+LevelThree]= Level7;
map[Shift+Lock+NumLock+LevelThree]= Level8;
map[Shift+Lock+NumLock+LevelFive]= Level2;
map[Lock+NumLock+LevelThree+LevelFive]= Level3;
map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "X";
level_name[Level6]= "X Shift";
level_name[Level7]= "X Alt Base";
level_name[Level8]= "X Shift Alt";
};
type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[LevelFive]= Level5;
map[Shift+LevelFive]= Level6;
preserve[Shift+LevelFive]= Shift;
map[LevelThree+LevelFive]= Level7;
map[Shift+LevelThree+LevelFive]= Level8;
map[NumLock]= Level5;
map[Shift+NumLock]= Level6;
preserve[Shift+NumLock]= Shift;
map[NumLock+LevelThree]= Level7;
map[Shift+NumLock+LevelThree]= Level8;
map[Shift+NumLock+LevelFive]= Level2;
map[NumLock+LevelThree+LevelFive]= Level3;
map[Shift+NumLock+LevelThree+LevelFive]= Level4;
map[Lock]= Level2;
map[Lock+LevelThree]= Level3;
map[Shift+Lock+LevelThree]= Level4;
map[Lock+LevelFive]= Level5;
map[Shift+Lock+LevelFive]= Level6;
map[Lock+LevelThree+LevelFive]= Level7;
map[Shift+Lock+LevelThree+LevelFive]= Level8;
map[Lock+NumLock]= Level5;
map[Shift+Lock+NumLock]= Level6;
map[Lock+NumLock+LevelThree]= Level7;
map[Shift+Lock+NumLock+LevelThree]= Level8;
map[Lock+NumLock+LevelFive]= Level2;
map[Lock+NumLock+LevelThree+LevelFive]= Level4;
map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "X";
level_name[Level6]= "X Shift";
level_name[Level7]= "X Alt Base";
level_name[Level8]= "X Shift Alt";
};
type "FOUR_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
type "FOUR_LEVEL_ALPHABETIC" {
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level4;
map[Shift+Lock+LevelThree]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
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";
};
type "FOUR_LEVEL_MIXED_KEYPAD" {
modifiers= Shift+NumLock+LevelThree;
map[NumLock]= Level2;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[NumLock+LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Shift+NumLock+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Number";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
type "FOUR_LEVEL_X" {
modifiers= Shift+Control+Alt+LevelThree;
map[LevelThree]= Level2;
map[Shift+LevelThree]= Level3;
map[Control+Alt]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Alt Base";
level_name[Level3]= "Shift Alt";
level_name[Level4]= "Ctrl+Alt";
};
type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level4;
preserve[Lock]= Lock;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level3;
preserve[Lock+LevelThree]= Lock;
map[Shift+Lock+LevelThree]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "AltGr Base";
level_name[Level4]= "Shift AltGr";
};
type "FOUR_LEVEL_PLUS_LOCK" {
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock]= Level5;
map[Shift+Lock]= Level2;
map[Lock+LevelThree]= Level3;
map[Shift+Lock+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "Lock";
};
type "FOUR_LEVEL_KEYPAD" {
modifiers= Shift+NumLock+LevelThree;
map[Shift]= Level2;
map[NumLock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[NumLock+LevelThree]= Level4;
map[Shift+NumLock+LevelThree]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Number";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Alt Number";
};
};
xkb_compatibility "(unnamed)" {
virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
interpret.useModMapMods= AnyLevel;
interpret.repeat= False;
interpret.locking= False;
interpret ISO_Level2_Latch+Exactly(Shift) {
useModMapMods=level1;
action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
};
interpret Shift_Lock+AnyOf(Shift+Lock) {
action= LockMods(modifiers=Shift);
};
interpret Num_Lock+AnyOf(all) {
virtualModifier= NumLock;
action= LockMods(modifiers=NumLock);
};
interpret ISO_Level3_Shift+AnyOf(all) {
virtualModifier= LevelThree;
useModMapMods=level1;
action= SetMods(modifiers=LevelThree,clearLocks);
};
interpret ISO_Level3_Latch+AnyOf(all) {
virtualModifier= LevelThree;
useModMapMods=level1;
action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
};
interpret ISO_Level3_Lock+AnyOf(all) {
virtualModifier= LevelThree;
useModMapMods=level1;
action= LockMods(modifiers=LevelThree);
};
interpret Alt_L+AnyOf(all) {
virtualModifier= Alt;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Alt_R+AnyOf(all) {
virtualModifier= Alt;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Meta_L+AnyOf(all) {
virtualModifier= Meta;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Meta_R+AnyOf(all) {
virtualModifier= Meta;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Super_L+AnyOf(all) {
virtualModifier= Super;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Super_R+AnyOf(all) {
virtualModifier= Super;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Hyper_L+AnyOf(all) {
virtualModifier= Hyper;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Hyper_R+AnyOf(all) {
virtualModifier= Hyper;
action= SetMods(modifiers=modMapMods,clearLocks);
};
interpret Scroll_Lock+AnyOf(all) {
virtualModifier= ScrollLock;
action= LockMods(modifiers=modMapMods);
};
interpret ISO_Level5_Shift+AnyOf(all) {
virtualModifier= LevelFive;
useModMapMods=level1;
action= SetMods(modifiers=LevelFive,clearLocks);
};
interpret ISO_Level5_Latch+AnyOf(all) {
virtualModifier= LevelFive;
useModMapMods=level1;
action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
};
interpret ISO_Level5_Lock+AnyOf(all) {
virtualModifier= LevelFive;
useModMapMods=level1;
action= LockMods(modifiers=LevelFive);
};
interpret Mode_switch+AnyOfOrNone(all) {
action= SetGroup(group=+1);
};
interpret ISO_Level3_Shift+AnyOfOrNone(all) {
action= SetMods(modifiers=LevelThree,clearLocks);
};
interpret ISO_Level3_Latch+AnyOfOrNone(all) {
action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
};
interpret ISO_Level3_Lock+AnyOfOrNone(all) {
action= LockMods(modifiers=LevelThree);
};
interpret ISO_Group_Latch+AnyOfOrNone(all) {
action= LatchGroup(group=2);
};
interpret ISO_Next_Group+AnyOfOrNone(all) {
action= LockGroup(group=+1);
};
interpret ISO_Prev_Group+AnyOfOrNone(all) {
action= LockGroup(group=-1);
};
interpret ISO_First_Group+AnyOfOrNone(all) {
action= LockGroup(group=1);
};
interpret ISO_Last_Group+AnyOfOrNone(all) {
action= LockGroup(group=2);
};
interpret KP_1+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=+1);
};
interpret KP_End+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=+1);
};
interpret KP_2+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+0,y=+1);
};
interpret KP_Down+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+0,y=+1);
};
interpret KP_3+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=+1);
};
interpret KP_Next+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=+1);
};
interpret KP_4+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=+0);
};
interpret KP_Left+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=+0);
};
interpret KP_6+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=+0);
};
interpret KP_Right+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=+0);
};
interpret KP_7+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=-1);
};
interpret KP_Home+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=-1);
};
interpret KP_8+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+0,y=-1);
};
interpret KP_Up+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+0,y=-1);
};
interpret KP_9+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=-1);
};
interpret KP_Prior+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=-1);
};
interpret KP_5+AnyOfOrNone(all) {
repeat= True;
action= PtrBtn(button=default);
};
interpret KP_Begin+AnyOfOrNone(all) {
repeat= True;
action= PtrBtn(button=default);
};
interpret KP_F2+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=1);
};
interpret KP_Divide+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=1);
};
interpret KP_F3+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=2);
};
interpret KP_Multiply+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=2);
};
interpret KP_F4+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=3);
};
interpret KP_Subtract+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=3);
};
interpret KP_Separator+AnyOfOrNone(all) {
repeat= True;
action= PtrBtn(button=default,count=2);
};
interpret KP_Add+AnyOfOrNone(all) {
repeat= True;
action= PtrBtn(button=default,count=2);
};
interpret KP_0+AnyOfOrNone(all) {
repeat= True;
action= LockPtrBtn(button=default,affect=lock);
};
interpret KP_Insert+AnyOfOrNone(all) {
repeat= True;
action= LockPtrBtn(button=default,affect=lock);
};
interpret KP_Decimal+AnyOfOrNone(all) {
repeat= True;
action= LockPtrBtn(button=default,affect=unlock);
};
interpret KP_Delete+AnyOfOrNone(all) {
repeat= True;
action= LockPtrBtn(button=default,affect=unlock);
};
interpret F25+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=1);
};
interpret F26+AnyOfOrNone(all) {
repeat= True;
action= SetPtrDflt(affect=button,button=2);
};
interpret F27+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=-1);
};
interpret F29+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=-1);
};
interpret F31+AnyOfOrNone(all) {
repeat= True;
action= PtrBtn(button=default);
};
interpret F33+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=-1,y=+1);
};
interpret F35+AnyOfOrNone(all) {
repeat= True;
action= MovePtr(x=+1,y=+1);
};
interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
action= PtrBtn(button=default);
};
interpret Pointer_Button1+AnyOfOrNone(all) {
action= PtrBtn(button=1);
};
interpret Pointer_Button2+AnyOfOrNone(all) {
action= PtrBtn(button=2);
};
interpret Pointer_Button3+AnyOfOrNone(all) {
action= PtrBtn(button=3);
};
interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
action= PtrBtn(button=default,count=2);
};
interpret Pointer_DblClick1+AnyOfOrNone(all) {
action= PtrBtn(button=1,count=2);
};
interpret Pointer_DblClick2+AnyOfOrNone(all) {
action= PtrBtn(button=2,count=2);
};
interpret Pointer_DblClick3+AnyOfOrNone(all) {
action= PtrBtn(button=3,count=2);
};
interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
action= LockPtrBtn(button=default,affect=both);
};
interpret Pointer_Drag1+AnyOfOrNone(all) {
action= LockPtrBtn(button=1,affect=both);
};
interpret Pointer_Drag2+AnyOfOrNone(all) {
action= LockPtrBtn(button=2,affect=both);
};
interpret Pointer_Drag3+AnyOfOrNone(all) {
action= LockPtrBtn(button=3,affect=both);
};
interpret Pointer_EnableKeys+AnyOfOrNone(all) {
action= LockControls(controls=MouseKeys);
};
interpret Pointer_Accelerate+AnyOfOrNone(all) {
action= LockControls(controls=MouseKeysAccel);
};
interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
action= SetPtrDflt(affect=button,button=+1);
};
interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
action= SetPtrDflt(affect=button,button=-1);
};
interpret AccessX_Enable+AnyOfOrNone(all) {
action= LockControls(controls=AccessXKeys);
};
interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
action= LockControls(controls=AccessXFeedback);
};
interpret RepeatKeys_Enable+AnyOfOrNone(all) {
action= LockControls(controls=RepeatKeys);
};
interpret SlowKeys_Enable+AnyOfOrNone(all) {
action= LockControls(controls=SlowKeys);
};
interpret BounceKeys_Enable+AnyOfOrNone(all) {
action= LockControls(controls=BounceKeys);
};
interpret StickyKeys_Enable+AnyOfOrNone(all) {
action= LockControls(controls=StickyKeys);
};
interpret MouseKeys_Enable+AnyOfOrNone(all) {
action= LockControls(controls=MouseKeys);
};
interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
action= LockControls(controls=MouseKeysAccel);
};
interpret Overlay1_Enable+AnyOfOrNone(all) {
action= LockControls(controls=none);
};
interpret Overlay2_Enable+AnyOfOrNone(all) {
action= LockControls(controls=none);
};
interpret AudibleBell_Enable+AnyOfOrNone(all) {
action= LockControls(controls=AudibleBell);
};
interpret Terminate_Server+AnyOfOrNone(all) {
action= Terminate();
};
interpret Alt_L+AnyOfOrNone(all) {
action= SetMods(modifiers=Alt,clearLocks);
};
interpret Alt_R+AnyOfOrNone(all) {
action= SetMods(modifiers=Alt,clearLocks);
};
interpret Meta_L+AnyOfOrNone(all) {
action= SetMods(modifiers=Meta,clearLocks);
};
interpret Meta_R+AnyOfOrNone(all) {
action= SetMods(modifiers=Meta,clearLocks);
};
interpret Super_L+AnyOfOrNone(all) {
action= SetMods(modifiers=Super,clearLocks);
};
interpret Super_R+AnyOfOrNone(all) {
action= SetMods(modifiers=Super,clearLocks);
};
interpret Hyper_L+AnyOfOrNone(all) {
action= SetMods(modifiers=Hyper,clearLocks);
};
interpret Hyper_R+AnyOfOrNone(all) {
action= SetMods(modifiers=Hyper,clearLocks);
};
interpret Shift_L+AnyOfOrNone(all) {
action= SetMods(modifiers=Shift,clearLocks);
};
interpret XF86Switch_VT_1+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=1,!same);
};
interpret XF86Switch_VT_2+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=2,!same);
};
interpret XF86Switch_VT_3+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=3,!same);
};
interpret XF86Switch_VT_4+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=4,!same);
};
interpret XF86Switch_VT_5+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=5,!same);
};
interpret XF86Switch_VT_6+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=6,!same);
};
interpret XF86Switch_VT_7+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=7,!same);
};
interpret XF86Switch_VT_8+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=8,!same);
};
interpret XF86Switch_VT_9+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=9,!same);
};
interpret XF86Switch_VT_10+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=10,!same);
};
interpret XF86Switch_VT_11+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=11,!same);
};
interpret XF86Switch_VT_12+AnyOfOrNone(all) {
repeat= True;
action= SwitchScreen(screen=12,!same);
};
interpret XF86LogGrabInfo+AnyOfOrNone(all) {
repeat= True;
action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
};
interpret XF86LogWindowTree+AnyOfOrNone(all) {
repeat= True;
action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
};
interpret XF86Next_VMode+AnyOfOrNone(all) {
repeat= True;
action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
};
interpret XF86Prev_VMode+AnyOfOrNone(all) {
repeat= True;
action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
};
interpret ISO_Level5_Shift+AnyOfOrNone(all) {
action= SetMods(modifiers=LevelFive,clearLocks);
};
interpret ISO_Level5_Latch+AnyOfOrNone(all) {
action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
};
interpret ISO_Level5_Lock+AnyOfOrNone(all) {
action= LockMods(modifiers=NumLock);
};
interpret Caps_Lock+AnyOfOrNone(all) {
action= LockMods(modifiers=Lock);
};
interpret Any+Exactly(Lock) {
action= LockMods(modifiers=Lock);
};
interpret Any+AnyOf(all) {
action= SetMods(modifiers=modMapMods,clearLocks);
};
indicator "Caps Lock" {
whichModState= locked;
modifiers= Lock;
};
indicator "Num Lock" {
whichModState= locked;
modifiers= NumLock;
};
indicator "Scroll Lock" {
whichModState= locked;
modifiers= ScrollLock;
};
indicator "Shift Lock" {
whichModState= locked;
modifiers= Shift;
};
indicator "Group 2" {
groups= 0xfe;
};
indicator "Mouse Keys" {
controls= mouseKeys;
};
};
xkb_symbols "(unnamed)" {
name[group1]="German (Aus der Neo-Welt)";
name[group2]="English (US)";
name[group3]="English (US)";
key <ESC> { [ Escape ] };
key <AE01> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ],
symbols[Group2]= [ 1, exclam ],
symbols[Group3]= [ 1, exclam ]
};
key <AE02> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ 2, section, twosuperior, twosubscript, ordmasculine, NoSymbol, logicalor, NoSymbol ],
symbols[Group2]= [ 2, at ],
symbols[Group3]= [ 2, at ]
};
key <AE03> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ Tab, Tab, threesuperior, threesubscript, numerosign, threesubscript, logicaland, NoSymbol ],
symbols[Group2]= [ 3, numbersign ],
symbols[Group3]= [ 3, numbersign ]
};
key <AE04> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ 4, guillemetright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ],
symbols[Group2]= [ 4, dollar ],
symbols[Group3]= [ 4, dollar ]
};
key <AE05> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ Control_L, U2113, threesuperior, malesymbol, numerosign, threesubscript, logicaland, NoSymbol ],
symbols[Group2]= [ 5, percent ],
symbols[Group3]= [ 5, percent ]
};
key <AE06> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ],
symbols[Group2]= [ 6, asciicircum ],
symbols[Group3]= [ 6, asciicircum ]
};
key <AE07> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ BackSpace, U2113, threesuperior, U03F0, numerosign, threesubscript, logicaland, NoSymbol ],
symbols[Group2]= [ 7, ampersand ],
symbols[Group3]= [ 7, ampersand ]
};
key <AE08> {
type[group1]= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level5_Shift ],
symbols[Group2]= [ 8, asterisk ],
symbols[Group3]= [ 8, asterisk ]
};
key <AE09> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_9, U2113, threesuperior, U27E9, numerosign, threesubscript, logicaland, NoSymbol ],
symbols[Group2]= [ 9, parenleft ],
symbols[Group3]= [ 9, parenleft ]
};
key <AE10> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ Caps_Lock, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ],
symbols[Group2]= [ 0, parenright ],
symbols[Group3]= [ 0, parenright ]
};
key <AE11> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ],
symbols[Group2]= [ minus, underscore ],
symbols[Group3]= [ minus, underscore ]
};
key <AE12> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ dead_grave, dead_cedilla, dead_abovering, dead_abovereversedcomma, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ],
symbols[Group2]= [ equal, plus ],
symbols[Group3]= [ equal, plus ]
};
key <BKSP> { [ BackSpace, BackSpace ] };
key <TAB> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ]
};
key <AD01> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ p, P, ellipsis, Greek_pi, Home, multiply, Greek_PI, U043F ],
symbols[Group2]= [ q, Q ],
symbols[Group3]= [ q, Q ]
};
key <AD02> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ u, U, underscore, NoSymbol, emdash, U2196, radical, U0443 ],
symbols[Group2]= [ w, W ],
symbols[Group3]= [ w, W ]
};
key <AD03> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ quotedbl, apostrophe, bracketleft, Greek_finalsmallsigma, Up, U2191, Greek_LAMDA, Cyrillic_yu ],
symbols[Group2]= [ e, E ],
symbols[Group3]= [ e, E ]
};
key <AD04> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ comma, enfilledcircbullet, bracketright, Greek_chi, BackSpace, U2197, U2203, U0448 ],
symbols[Group2]= [ r, R ],
symbols[Group3]= [ r, R ]
};
key <AD05> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ q, Q, asciicircum, Greek_omega, Next, U22C9, U211A, U044C ],
symbols[Group2]= [ t, T ],
symbols[Group3]= [ t, T ]
};
key <AD06> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ v, V, Udiaeresis, Greek_kappa, exclamdown, U22CA, U0001D54D, U0432 ],
symbols[Group2]= [ y, Y ],
symbols[Group3]= [ y, Y ]
};
key <AD07> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ c, C, semicolon, Greek_chi, 4, U227A, U2102, U0447 ],
symbols[Group2]= [ u, U ],
symbols[Group3]= [ u, U ]
};
key <AD08> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ l, L, adiaeresis, Greek_lamda, 5, U2227, Greek_LAMDA, U043B ],
symbols[Group2]= [ i, I ],
symbols[Group3]= [ i, I ]
};
key <AD09> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ m, M, equal, Greek_mu, 6, U227B, U0001D544, U043C ],
symbols[Group2]= [ o, O ],
symbols[Group3]= [ o, O ]
};
key <AD10> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ f, F, ampersand, Greek_phi, KP_Add, U220F, Greek_PHI, U0444 ],
symbols[Group2]= [ p, P ],
symbols[Group3]= [ p, P ]
};
key <AD11> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ j, J, EuroSign, Greek_finalsmallsigma, U2212, U2210, jot, U044A ],
symbols[Group2]= [ bracketleft, braceleft ],
symbols[Group3]= [ bracketleft, braceleft ]
};
key <AD12> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ dead_acute, dead_tilde, dead_stroke, dead_abovecomma, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ],
symbols[Group2]= [ bracketright, braceright ],
symbols[Group3]= [ bracketright, braceright ]
};
key <RTRN> { [ Return ] };
key <LCTL> { [ Control_L ] };
key <AC01> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ h, H, backslash, Greek_eta, Prior, U2194, U210D, U0445 ],
symbols[Group2]= [ a, A ],
symbols[Group3]= [ a, A ]
};
key <AC02> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ i, I, slash, Greek_iota, Left, U2190, integral, U0438 ],
symbols[Group2]= [ s, S ],
symbols[Group3]= [ s, S ]
};
key <AC03> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ e, E, braceleft, Greek_epsilon, Down, U2193, U2200, U044D ],
symbols[Group2]= [ d, D ],
symbols[Group3]= [ d, D ]
};
key <AC04> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ a, A, braceright, Greek_alpha, Right, U2192, U2135, U044F ],
symbols[Group2]= [ f, F ],
symbols[Group3]= [ f, F ]
};
key <AC05> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ o, O, asterisk, Greek_omicron, Next, U21A6, U2207, U043E ],
symbols[Group2]= [ g, G ],
symbols[Group3]= [ g, G ]
};
key <AC06> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ d, D, udiaeresis, Greek_delta, Return, partialderivative, Greek_DELTA, U0434 ],
symbols[Group2]= [ h, H ],
symbols[Group3]= [ h, H ]
};
key <AC07> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ t, T, parenleft, Greek_tau, 1, less, U0001D54B, U0442 ],
symbols[Group2]= [ j, J ],
symbols[Group3]= [ j, J ]
};
key <AC08> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ r, R, parenright, Greek_rho, 2, U2228, U211D, U0440 ],
symbols[Group2]= [ k, K ],
symbols[Group3]= [ k, K ]
};
key <AC09> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ n, N, minus, Greek_nu, 3, greater, U2115, U043D ],
symbols[Group2]= [ l, L ],
symbols[Group3]= [ l, L ]
};
key <AC10> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ s, S, colon, Greek_sigma, period, U2218, Greek_SIGMA, U0441 ],
symbols[Group2]= [ semicolon, colon ],
symbols[Group3]= [ semicolon, colon ]
};
key <AC11> {
type[group1]= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level3_Shift ],
symbols[Group2]= [ apostrophe, quotedbl ],
symbols[Group3]= [ apostrophe, quotedbl ]
};
key <TLDE> {
type[group1]= "ONE_LEVEL",
symbols[Group1]= [ Shift_L ],
symbols[Group2]= [ grave, asciitilde ],
symbols[Group3]= [ grave, asciitilde ]
};
key <LFSH> { [ Shift_L ] };
key <BKSL> {
type[group1]= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level3_Shift ],
symbols[Group2]= [ backslash, bar ],
symbols[Group3]= [ backslash, bar ]
};
key <AB01> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ k, K, numbersign, Greek_kappa, Escape, U2199, U0001D542, U043A ],
symbols[Group2]= [ z, Z ],
symbols[Group3]= [ z, Z ]
};
key <AB02> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ y, Y, dollar, Greek_upsilon, U2219, U22C4, U0001D550, U044E ],
symbols[Group2]= [ x, X ],
symbols[Group3]= [ x, X ]
};
key <AB03> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ x, X, bar, Greek_xi, ssharp, emptyset, Greek_XI, U044B ],
symbols[Group2]= [ c, C ],
symbols[Group3]= [ c, C ]
};
key <AB04> {
type[group1]= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ period, endash, asciitilde, Greek_pi, notsign, U2198, U2261, U0449 ],
symbols[Group2]= [ v, V ],
symbols[Group3]= [ v, V ]
};
key <AB05> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ dead_circumflex, dead_grave, grave, Greek_psi, at, elementof, Greek_PSI, U0446 ],
symbols[Group2]= [ b, B ],
symbols[Group3]= [ b, B ]
};
key <AB06> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ b, B, plus, Greek_beta, Tab, U221E, U05D1, U0431 ],
symbols[Group2]= [ n, N ],
symbols[Group3]= [ n, N ]
};
key <AB07> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
type[group2]= "ALPHABETIC",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ g, G, percent, Greek_gamma, 7, radical, Greek_GAMMA, U0433 ],
symbols[Group2]= [ m, M ],
symbols[Group3]= [ m, M ]
};
key <AB08> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ z, Z, odiaeresis, Greek_zeta, 8, U2225, U2124, U0436 ],
symbols[Group2]= [ comma, less ],
symbols[Group3]= [ comma, less ]
};
key <AB09> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ w, W, U1E9E, Greek_omega, 9, U2223, Greek_OMEGA, U0437 ],
symbols[Group2]= [ period, greater ],
symbols[Group3]= [ period, greater ]
};
key <AB10> {
type[group1]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ question, U1E9E, odiaeresis, Greek_theta, comma, U222B, Greek_THETA, U045A ],
symbols[Group2]= [ slash, question ],
symbols[Group3]= [ slash, question ]
};
key <RTSH> { [ Shift_R ] };
key <KPMU> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Multiply, KP_Multiply, U22C5, U2299, multiply, NoSymbol, U2297, NoSymbol ]
};
key <LALT> { [ Alt_L, Meta_L ] };
key <SPCE> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ]
};
key <CAPS> {
type= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level3_Shift ]
};
key <FK01> {
type= "CTRL+ALT",
symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
};
key <FK02> {
type= "CTRL+ALT",
symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
};
key <FK03> {
type= "CTRL+ALT",
symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
};
key <FK04> {
type= "CTRL+ALT",
symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
};
key <FK05> {
type= "CTRL+ALT",
symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
};
key <FK06> {
type= "CTRL+ALT",
symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ]
};
key <FK07> {
type= "CTRL+ALT",
symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ]
};
key <FK08> {
type= "CTRL+ALT",
symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ]
};
key <FK09> {
type= "CTRL+ALT",
symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ]
};
key <FK10> {
type= "CTRL+ALT",
symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ]
};
key <NMLK> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ]
};
key <SCLK> {
type= "TWO_LEVEL",
symbols[Group1]= [ Multi_key, Multi_key ]
};
key <KP7> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ]
};
key <KP8> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ]
};
key <KP9> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ]
};
key <KPSU> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ]
};
key <KP4> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ]
};
key <KP5> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ]
};
key <KP6> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ]
};
key <KPAD> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ]
};
key <KP1> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ]
};
key <KP2> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ]
};
key <KP3> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ]
};
key <KP0> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ]
};
key <KPDL> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ]
};
key <LVL3> { [ ISO_Level3_Shift ] };
key <LSGT> {
type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
symbols[Group1]= [ exclam, Adiaeresis, Adiaeresis, Greek_finalsmallsigma, Escape, U2199, NoSymbol, U0452 ]
};
key <FK11> {
type= "CTRL+ALT",
symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
};
key <FK12> {
type= "CTRL+ALT",
symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
};
key <KATA> { [ Katakana ] };
key <HIRA> { [ Hiragana ] };
key <HENK> { [ Henkan_Mode ] };
key <HKTG> { [ Hiragana_Katakana ] };
key <MUHE> { [ Muhenkan ] };
key <KPEN> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ]
};
key <RCTL> { [ Control_R ] };
key <KPDV> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ]
};
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <RALT> {
type= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level5_Shift ]
};
key <LNFD> { [ Linefeed ] };
key <HOME> { [ Home ] };
key <UP> { [ Up ] };
key <PGUP> { [ Prior ] };
key <LEFT> { [ Left ] };
key <RGHT> { [ Right ] };
key <END> { [ End ] };
key <DOWN> { [ Down ] };
key <PGDN> { [ Next ] };
key <INS> { [ Insert ] };
key <DELE> { [ Delete ] };
key <MUTE> { [ XF86AudioMute ] };
key <VOL-> { [ XF86AudioLowerVolume ] };
key <VOL+> { [ XF86AudioRaiseVolume ] };
key <POWR> { [ XF86PowerOff ] };
key <KPEQ> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ]
};
key <I126> { [ plusminus ] };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key <I128> { [ XF86LaunchA ] };
key <I129> { [ KP_Decimal, KP_Decimal ] };
key <HNGL> { [ Hangul ] };
key <HJCV> { [ Hangul_Hanja ] };
key <LWIN> { [ Super_L ] };
key <RWIN> {
type= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level3_Shift ]
};
key <COMP> { [ Menu ] };
key <STOP> { [ Cancel ] };
key <AGAI> { [ Redo ] };
key <PROP> { [ SunProps ] };
key <UNDO> { [ Undo ] };
key <FRNT> { [ SunFront ] };
key <COPY> { [ XF86Copy ] };
key <OPEN> { [ XF86Open ] };
key <PAST> { [ XF86Paste ] };
key <FIND> { [ Find ] };
key <CUT> { [ XF86Cut ] };
key <HELP> { [ Help ] };
key <I147> { [ XF86MenuKB ] };
key <I148> { [ XF86Calculator ] };
key <I150> { [ XF86Sleep ] };
key <I151> { [ XF86WakeUp ] };
key <I152> { [ XF86Explorer ] };
key <I153> { [ XF86Send ] };
key <I155> { [ XF86Xfer ] };
key <I156> { [ XF86Launch1 ] };
key <I157> { [ XF86Launch2 ] };
key <I158> { [ XF86WWW ] };
key <I159> { [ XF86DOS ] };
key <I160> { [ XF86ScreenSaver ] };
key <I161> { [ XF86RotateWindows ] };
key <I162> { [ XF86TaskPane ] };
key <I163> { [ XF86Mail ] };
key <I164> { [ XF86Favorites ] };
key <I165> { [ XF86MyComputer ] };
key <I166> { [ XF86Back ] };
key <I167> { [ XF86Forward ] };
key <I169> { [ XF86Eject ] };
key <I170> { [ XF86Eject ] };
key <I171> { [ XF86AudioNext ] };
key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
key <I173> { [ XF86AudioPrev ] };
key <I174> { [ XF86AudioStop, XF86Eject ] };
key <I175> { [ XF86AudioRecord ] };
key <I176> { [ XF86AudioRewind ] };
key <I177> { [ XF86Phone ] };
key <I179> { [ XF86Tools ] };
key <I180> { [ XF86HomePage ] };
key <I181> { [ XF86Reload ] };
key <I182> { [ XF86Close ] };
key <I185> { [ XF86ScrollUp ] };
key <I186> { [ XF86ScrollDown ] };
key <I187> { [ parenleft ] };
key <I188> { [ parenright ] };
key <I189> { [ XF86New ] };
key <I190> { [ Redo ] };
key <FK13> { [ XF86Tools ] };
key <FK14> { [ XF86Launch5 ] };
key <FK15> { [ XF86Launch6 ] };
key <FK16> { [ XF86Launch7 ] };
key <FK17> { [ XF86Launch8 ] };
key <FK18> { [ XF86Launch9 ] };
key <FK20> { [ XF86AudioMicMute ] };
key <FK21> { [ XF86TouchpadToggle ] };
key <FK22> { [ XF86TouchpadOn ] };
key <FK23> { [ XF86TouchpadOff ] };
key <LVL5> { [ ISO_Level5_Shift ] };
key <ALT> { [ NoSymbol, Alt_L ] };
key <META> { [ NoSymbol, Meta_L ] };
key <SUPR> { [ NoSymbol, Super_L ] };
key <HYPR> { [ NoSymbol, Hyper_L ] };
key <I208> { [ XF86AudioPlay ] };
key <I209> { [ XF86AudioPause ] };
key <I210> { [ XF86Launch3 ] };
key <I211> { [ XF86Launch4 ] };
key <I212> { [ XF86LaunchB ] };
key <I213> { [ XF86Suspend ] };
key <I214> { [ XF86Close ] };
key <I215> { [ XF86AudioPlay ] };
key <I216> { [ XF86AudioForward ] };
key <I218> { [ Print ] };
key <I220> { [ XF86WebCam ] };
key <I221> { [ XF86AudioPreset ] };
key <I223> { [ XF86Mail ] };
key <I224> { [ XF86Messenger ] };
key <I225> { [ XF86Search ] };
key <I226> { [ XF86Go ] };
key <I227> { [ XF86Finance ] };
key <I228> { [ XF86Game ] };
key <I229> { [ XF86Shop ] };
key <I231> { [ Cancel ] };
key <I232> { [ XF86MonBrightnessDown ] };
key <I233> { [ XF86MonBrightnessUp ] };
key <I234> { [ XF86AudioMedia ] };
key <I235> { [ XF86Display ] };
key <I236> { [ XF86KbdLightOnOff ] };
key <I237> { [ XF86KbdBrightnessDown ] };
key <I238> { [ XF86KbdBrightnessUp ] };
key <I239> { [ XF86Send ] };
key <I240> { [ XF86Reply ] };
key <I241> { [ XF86MailForward ] };
key <I242> { [ XF86Save ] };
key <I243> { [ XF86Documents ] };
key <I244> { [ XF86Battery ] };
key <I245> { [ XF86Bluetooth ] };
key <I246> { [ XF86WLAN ] };
key <I247> { [ XF86UWB ] };
key <I249> { [ XF86Next_VMode ] };
key <I250> { [ XF86Prev_VMode ] };
key <I251> { [ XF86MonBrightnessCycle ] };
key <I252> { [ XF86BrightnessAuto ] };
key <I253> { [ XF86DisplayOff ] };
key <I254> { [ XF86WWAN ] };
key <I255> { [ XF86RFKill ] };
modifier_map Control { <AE05> };
modifier_map Lock { <AE10> };
modifier_map Shift { <TLDE> };
modifier_map Shift { <RTSH> };
modifier_map Mod1 { <LALT> };
modifier_map Mod5 { <LVL3> };
modifier_map Control { <RCTL> };
modifier_map Mod4 { <LWIN> };
modifier_map Mod3 { <LVL5> };
modifier_map Mod1 { <ALT> };
modifier_map Mod1 { <META> };
modifier_map Mod4 { <SUPR> };
modifier_map Mod4 { <HYPR> };
};
};
[-- Attachment #2: Type: text/plain, Size: 462 bytes --]
Note that I the command produced the following warning:
> Warning: Could not load keyboard geometry for :0
> BadName (named color or font does not exist)
> Resulting keymap file will not describe
> geometry
The keymap seems alright though. I've been modifying the
adnw-keymap because making a new one didn't really work with
the modifiers. Here is also my dual-function-keys config:
[-- Attachment #3: dual function keys config --]
[-- Type: file, Size: 2315 bytes --]
MAPPINGS:
- KEY: KEY_SPACE
TAP: KEY_SPACE
HOLD: KEY_RIGHTCTRL
# Level 2 modifiers (Shift modifiers)
- KEY: KEY_SLASH
TAP: KEY_SLASH
HOLD: KEY_RIGHTSHIFT
- KEY: KEY_102ND
TAP: KEY_102ND
HOLD: KEY_LEFTSHIFT
# Level 3 modifiers (Special symbols)
- KEY: KEY_APOSTROPHE
TAP: KEY_F14
HOLD: KEY_APOSTROPHE
- KEY: KEY_CAPSLOCK
TAP: KEY_F14
HOLD: KEY_APOSTROPHE
# Level 4 modifiers (Lowercase Greek letters)
- KEY: KEY_RIGHTSHIFT
TAP: [KEY_CAPSLOCK, KEY_RIGHTSHIFT]
HOLD: [KEY_CAPSLOCK, KEY_RIGHTSHIFT]
- KEY: KEY_9
TAP: KEY_KP9
HOLD: [KEY_CAPSLOCK, KEY_LEFTSHIFT]
- KEY: KEY_E
TAP: KEY_E
HOLD: [KEY_BACKSLASH, KEY_GRAVE]
# Level 5 modifiers (Numbers and Arrows)
- KEY: KEY_LEFTALT
TAP: KEY_F15
HOLD: KEY_RIGHTALT
- KEY: KEY_RIGHTALT
TAP: KEY_F15
HOLD: KEY_RIGHTALT
# Level 6 modifiers (Math symbols)
- KEY: KEY_8
TAP: KEY_SCROLLLOCK
HOLD: [KEY_RIGHTALT, KEY_RIGHTSHIFT]
- KEY: KEY_B
TAP: KEY_B
HOLD: [KEY_8, KEY_GRAVE]
# Level 7 modifiers (Uppercase Greek letters)
- KEY: KEY_TAB
TAP: KEY_SCROLLLOCK
HOLD: [KEY_CAPSLOCK, KEY_RIGHTALT]
- KEY: KEY_RIGHTBRACE
TAP: KEY_RIGHTBRACE
HOLD: [KEY_CAPSLOCK, KEY_RIGHTALT]
- KEY: KEY_7
TAP: KEY_SCROLLLOCK
HOLD: [KEY_CAPSLOCK, KEY_RIGHTALT]
# Level 8 modifiers (Cyrillic letters)
- KEY: KEY_COMPOSE
TAP: KEY_KPASTERISK
HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_RIGHTSHIFT]
- KEY: KEY_LEFTSHIFT
TAP: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_LEFTSHIFT]
HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_LEFTSHIFT]
- KEY: KEY_LEFTMETA
TAP: KEY_KPSLASH
HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_LEFTSHIFT]
- KEY: KEY_6
TAP: KEY_6
HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_LEFTSHIFT]
- KEY: KEY_RIGHTCTRL
TAP: KEY_RIGHTCTRL
HOLD: KEY_RIGHTCTRL
# HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_RIGHTSHIFT]
# Use 2, 3, 4 and 5 keys to navigate between tabs and programs (3 key is configured in xkb)
- KEY: KEY_4
TAP: KEY_LEFTMETA
HOLD: KEY_LEFTALT
- KEY: KEY_5
TAP: KEY_RIGHTCTRL
HOLD: KEY_RIGHTCTRL
- KEY: KEY_2
TAP: [KEY_LEFTSHIFT, KEY_TAB]
HOLD: [KEY_LEFTSHIFT, KEY_TAB]
# - KEY: KEY_1
# TAP: [KEY_LEFTSHIFT, KEY_TAB]
# HOLD: KEY_LEFTALT
x
[-- Attachment #4: Type: text/plain, Size: 978 bytes --]
Po Lu [2023-08-16 Wed 09:29] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> Sorry for the late reply.
>>
>>> Which virtual modifier key have you assigned to the apostrophe
>>> key?
>>
>> I've made the apostrophe key (AC11 in xkb) a level 3 switch
>> through
>> the following function:
>>
>>> // The AC11 key (while pressed) chooses the third shift level.
>>> partial modifier_keys
>>> xkb_symbols "ac11_switch" {
>>> key <AC11> {
>>> type[Group1]="ONE_LEVEL",
>>> symbols[Group1] = [ ISO_Level3_Shift ]
>>> };
>>> };
>>
>> If tapped it sends an F14 signal (which I use in Emacs to
>> insert math
>> symbols in cdlatex).
>
> I guess I still don't fully understand your XKB configuration.
> Having
> access to the complete XKB configuration on your X server would
> be a
> great help to that end.
>
> Would you please run:
>
> xkbcomp -xkb $DISPLAY
>
> and attach each generated *.xkb file?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-16 7:50 ` Alexander Prähauser
@ 2023-08-16 8:02 ` Alexander Prähauser
2023-08-16 12:51 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 0 replies; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-16 8:02 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: Po Lu, 65068
I just noticed that the last line in the dual-function-keys config
contains an x I must have inadvertantly written in at
some point and not noticed because I hadn't restarted udevmon
since. Please remove that x if you try it out, otherwise
it will produce an error.
Alexander Prähauser [2023-08-16 Wed 09:50] wrote:
> [1. xkb file --- text/plain; server-0.xkb]...
>
>
> Note that I the command produced the following warning:
>
>> Warning: Could not load keyboard geometry for :0
>> BadName (named color or font does not exist)
>> Resulting keymap file will not describe
>> geometry
>
> The keymap seems alright though. I've been modifying the
> adnw-keymap
> because making a new one didn't really work with
> the modifiers. Here is also my dual-function-keys config:
>
> [3. dual function keys config --- text/plain;
> my-mappings.yaml]...
>
>
>
> Po Lu [2023-08-16 Wed 09:29] wrote:
>
>> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>>
>>> Sorry for the late reply.
>>>
>>>> Which virtual modifier key have you assigned to the
>>>> apostrophe
>>>> key?
>>>
>>> I've made the apostrophe key (AC11 in xkb) a level 3 switch
>>> through
>>> the following function:
>>>
>>>> // The AC11 key (while pressed) chooses the third shift
>>>> level.
>>>> partial modifier_keys
>>>> xkb_symbols "ac11_switch" {
>>>> key <AC11> {
>>>> type[Group1]="ONE_LEVEL",
>>>> symbols[Group1] = [ ISO_Level3_Shift ]
>>>> };
>>>> };
>>>
>>> If tapped it sends an F14 signal (which I use in Emacs to
>>> insert
>>> math
>>> symbols in cdlatex).
>>
>> I guess I still don't fully understand your XKB
>> configuration. Having
>> access to the complete XKB configuration on your X server would
>> be a
>> great help to that end.
>>
>> Would you please run:
>>
>> xkbcomp -xkb $DISPLAY
>>
>> and attach each generated *.xkb file?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-16 7:50 ` Alexander Prähauser
2023-08-16 8:02 ` Alexander Prähauser
@ 2023-08-16 12:51 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-16 14:04 ` Alexander Prähauser
1 sibling, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-16 12:51 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Thank you for providing these details. Sadly, I still don't understand
how xkb-interception operates, so please also run:
xinput test-xi2
then type the following sequence of keys with the window `xinput'
displays focused:
press and release Caps Lock
press and release Ctrl
press Ctrl, then Caps Lock, before releasing Ctrl
and send me the output of `xinput'. Thanks in advance.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-16 12:51 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-16 14:04 ` Alexander Prähauser
2023-08-17 1:09 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-16 14:04 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
Since I normally use Space as Ctrl with interception I did the
second two steps twice, with Space instead of Ctrl the
second time. The last two events were me closing the window using
my mouse:
> [alex@Archlaptop ~]$ xinput test-xi2
> WARNING: running xinput against an Xwayland server. See the
> xinput man page for details.
> ⎡ Virtual core pointer id=2 [master
> pointer (3)]
> ⎜ ↳ Virtual core XTEST pointer id=4
> [slave pointer (2)]
> ⎜ ↳ xwayland-pointer:15 id=6
> [slave pointer (2)]
> ⎜ ↳ xwayland-relative-pointer:15 id=7
> [slave pointer (2)]
> ⎜ ↳ xwayland-pointer-gestures:15 id=8
> [slave pointer (2)]
> ⎣ Virtual core keyboard id=3 [master
> keyboard (2)]
> ↳ Virtual core XTEST keyboard id=5
> [slave keyboard (3)]
> ↳ xwayland-keyboard:15 id=9
> [slave keyboard (3)]
> EVENT type 9 (FocusIn)
> device: 3 (3)
> time: 7243828
> windows: root 0x3cf event 0xc00001 child 0x0
> mode: NotifyNormal (detail NotifyNonlinear)
> flags: [same screen]
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> root x/y: 268.00 / 153.00
> event x/y: 178.00 / -20.00
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7243838
> detail: 36
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7243838
> detail: 36
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7244995
> detail: 48
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7244995
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7245351
> detail: 48
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7245351
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x80 effective: 0x80
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7246301
> detail: 37
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7246301
> detail: 37
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7246520
> detail: 37
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7246520
> detail: 37
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7247580
> detail: 37
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7247580
> detail: 37
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7247975
> detail: 48
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7247975
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7248180
> detail: 48
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7248180
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x80 effective: 0x80
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7248552
> detail: 37
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7248552
> detail: 37
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7249763
> detail: 105
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7249763
> detail: 105
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7250099
> detail: 105
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7250099
> detail: 105
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x4 effective: 0x4
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7251504
> detail: 105
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7251504
> detail: 105
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0 effective: 0
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 13 (RawKeyPress)
> device: 3 (9)
> time: 7252051
> detail: 48
> valuators:
> EVENT type 2 (KeyPress)
> device: 3 (9)
> time: 7252051
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x4 effective: 0x4
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7252342
> detail: 48
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7252342
> detail: 48
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x84 effective: 0x84
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 14 (RawKeyRelease)
> device: 3 (9)
> time: 7252568
> detail: 105
> valuators:
> EVENT type 3 (KeyRelease)
> device: 3 (9)
> time: 7252568
> detail: 105
> flags:
> root: 268.00/153.00
> event: 178.00/-20.00
> buttons:
> modifiers: locked 0 latched 0 base 0x4 effective: 0x4
> group: locked 0 latched 0 base 0 effective: 0
> valuators:
> windows: root 0x3cf event 0xc00001 child 0x0
> EVENT type 15 (RawButtonPress)
> device: 2 (7)
> time: 7256662
> detail: 1
> flags:
> valuators:
> EVENT type 16 (RawButtonRelease)
> device: 2 (7)
> time: 7256802
> detail: 1
> flags:
> valuators:
> X connection to :0 broken (explicit kill or server shutdown).
Po Lu [2023-08-16 Wed 20:51] wrote:
> Thank you for providing these details. Sadly, I still don't
> understand
> how xkb-interception operates, so please also run:
>
> xinput test-xi2
>
> then type the following sequence of keys with the window
> `xinput'
> displays focused:
>
> press and release Caps Lock
> press and release Ctrl
> press Ctrl, then Caps Lock, before releasing Ctrl
>
> and send me the output of `xinput'. Thanks in advance.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-16 14:04 ` Alexander Prähauser
@ 2023-08-17 1:09 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-17 2:37 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 1:09 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Thanks. Please instrument handle_one_xevent in xterm.c as follows:
diff --git a/src/xterm.c b/src/xterm.c
index 6a1642ff56e..a199bae9f16 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23886,6 +23886,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (!XkbTranslateKeyCode (dpyinfo->xkb_desc, keycode,
xkb_state, &mods_rtrn, &keysym))
goto XI_OTHER;
+
+ fprintf (stderr, "keycode: %d, keysym: %d, %u\n", keycode,
+ (int) keysym, state);
}
else
{
then tell me what is printed when you press Caps Lock (which appears to
be directly translated to AC11 prior to it ever being registered by the
X server), and also if the text changes if you press Caps Lock in
conjunction with Ctrl.
^ permalink raw reply related [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-17 1:09 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-17 2:37 ` Alexander Prähauser
2023-08-17 2:45 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-17 2:37 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
How do I do that? I tried putting the code into a bash script and
it says `diff: unrecognized option '--git'`.
Po Lu [2023-08-17 Thu 09:09] wrote:
> Thanks. Please instrument handle_one_xevent in xterm.c as
> follows:
>
> diff --git a/src/xterm.c b/src/xterm.c
> index 6a1642ff56e..a199bae9f16 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -23886,6 +23886,9 @@ handle_one_xevent (struct x_display_info
> *dpyinfo,
> if (!XkbTranslateKeyCode (dpyinfo->xkb_desc,
> keycode,
> xkb_state, &mods_rtrn,
> &keysym))
> goto XI_OTHER;
> +
> + fprintf (stderr, "keycode: %d, keysym: %d,
> %u\n", keycode,
> + (int) keysym, state);
> }
> else
> {
>
> then tell me what is printed when you press Caps Lock (which
> appears to
> be directly translated to AC11 prior to it ever being registered
> by the
> X server), and also if the text changes if you press Caps Lock
> in
> conjunction with Ctrl.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-17 2:37 ` Alexander Prähauser
@ 2023-08-17 2:45 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-17 3:28 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 2:45 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> How do I do that? I tried putting the code into a bash script and
> it says `diff: unrecognized option '--git'`.
You should save the entire diff into the kill ring, run:
git apply -
then type:
C-y
C-q C-d RET
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-17 2:45 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-17 3:28 ` Alexander Prähauser
2023-08-17 4:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-17 3:28 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
It says
> error: src/xterm.c: No such file or directory
I also can't find xterm.c on my system, though I have xterm
installed.
Po Lu [2023-08-17 Thu 10:45] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> How do I do that? I tried putting the code into a bash script
>> and
>> it says `diff: unrecognized option '--git'`.
>
> You should save the entire diff into the kill ring, run:
>
> git apply -
>
> then type:
>
> C-y
> C-q C-d RET
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-17 3:28 ` Alexander Prähauser
@ 2023-08-17 4:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-19 13:35 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 4:41 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> It says
>
>> error: src/xterm.c: No such file or directory
>
> I also can't find xterm.c on my system, though I have xterm installed.
Did you run that within the Git repository where your Emacs checkout
resides?
src/xterm.c is an Emacs source file.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-17 4:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-19 13:35 ` Alexander Prähauser
2023-08-23 11:02 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-19 13:35 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
After I couldn't resolve the keyboard issue I reinstalled an old
binary version from the Arch archives but I've now
downloaded the Emacs source files and tried to apply the patch in
that local directory. However, I get the error
message:
> [alex@Archlaptop emacs]$ git apply -
> diff --git a/src/xterm.c b/src/xterm.c
> index 6a1642ff56e..a199bae9f16 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -23886,6 +23886,9 @@ handle_one_xevent (struct x_display_info
> *dpyinfo,
> if (!XkbTranslateKeyCode (dpyinfo->xkb_desc,
> keycode,
> xkb_state, &mods_rtrn,
> &keysym))
> goto XI_OTHER;
> +
> + fprintf (stderr, "keycode: %d, keysym: %d,
> %u\n", keycode,
> + (int) keysym, state);
> }
> else
> {
> error: patch failed: src/xterm.c:23886
> error: src/xterm.c: patch does not apply
I tried again after compiling Emacs with make and got the same
error. I didn't install that Emacs version though so not
to overwrite my current one. If necessary I can install a
source-compiled Emacs version on another system though, but I
wanted to ask before if that might be useful.
Po Lu [2023-08-17 Thu 12:41] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> It says
>>
>>> error: src/xterm.c: No such file or directory
>>
>> I also can't find xterm.c on my system, though I have xterm
>> installed.
>
> Did you run that within the Git repository where your Emacs
> checkout
> resides?
>
> src/xterm.c is an Emacs source file.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-19 13:35 ` Alexander Prähauser
@ 2023-08-23 11:02 ` Alexander Prähauser
2023-08-23 11:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-23 11:02 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
So, what should I do next?
Alexander Prähauser [2023-08-19 Sat 15:35] wrote:
> After I couldn't resolve the keyboard issue I reinstalled an old
> binary version from the Arch archives but I've now
> downloaded the Emacs source files and tried to apply the patch
> in that
> local directory. However, I get the error
> message:
>
>> [alex@Archlaptop emacs]$ git apply -
>> diff --git a/src/xterm.c b/src/xterm.c
>> index 6a1642ff56e..a199bae9f16 100644
>> --- a/src/xterm.c
>> +++ b/src/xterm.c
>> @@ -23886,6 +23886,9 @@ handle_one_xevent (struct
>> x_display_info
>> *dpyinfo,
>> if (!XkbTranslateKeyCode (dpyinfo->xkb_desc,
>> keycode,
>> xkb_state, &mods_rtrn,
>> &keysym))
>> goto XI_OTHER;
>> +
>> + fprintf (stderr, "keycode: %d, keysym: %d,
>> %u\n",
>> keycode,
>> + (int) keysym, state);
>> }
>> else
>> {
>> error: patch failed: src/xterm.c:23886
>> error: src/xterm.c: patch does not apply
>
> I tried again after compiling Emacs with make and got the same
> error. I didn't install that Emacs version though so not
> to overwrite my current one. If necessary I can install a
> source-compiled Emacs version on another system though, but I
> wanted to ask before if that might be useful.
>
> Po Lu [2023-08-17 Thu 12:41] wrote:
>
>> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>>
>>> It says
>>>
>>>> error: src/xterm.c: No such file or directory
>>>
>>> I also can't find xterm.c on my system, though I have xterm
>>> installed.
>>
>> Did you run that within the Git repository where your Emacs
>> checkout
>> resides?
>>
>> src/xterm.c is an Emacs source file.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-23 11:02 ` Alexander Prähauser
@ 2023-08-23 11:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 14:05 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-23 11:39 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> So, what should I do next?
Assuming that you've applied the patch, press the problematic key
sequence and reply with the subsequent printouts.
TIA.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-23 11:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-23 14:05 ` Alexander Prähauser
2023-08-24 0:00 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-23 14:05 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
I've built emacs on another system with the same keyboard
configuration, then applied the patch, then recompiled it and
started it from the terminal. The problem persists, but I got
outputs in the console everytime I pressed a key, I'm
assuming due to the patch. The following is the output I got from
tapping Space, then holding Space (so that it
functions as Ctrl), then holding Space and tapping CapsLock, then
holding Space, holding CapsLock and tapping the U-key
(which should translate to the keyboard-sequence C-ö):
> keycode: 105, keysym: 65508, 0
> keycode: 65, keysym: 32, 0
> keycode: 105, keysym: 65508, 0
> keycode: 105, keysym: 65508, 0
> keycode: 48, keysym: 65027, 4
> keycode: 192, keysym: 269025093, 4
> keycode: 105, keysym: 65508, 0
> keycode: 48, keysym: 65027, 4
> keycode: 30, keysym: 246, 132
Po Lu [2023-08-23 Wed 19:39] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> So, what should I do next?
>
> Assuming that you've applied the patch, press the problematic
> key
> sequence and reply with the subsequent printouts.
>
> TIA.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-23 14:05 ` Alexander Prähauser
@ 2023-08-24 0:00 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 11:06 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-24 0:00 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> I've built emacs on another system with the same keyboard
> configuration, then applied the patch, then recompiled it and
> started it from the terminal. The problem persists, but I got outputs
> in the console everytime I pressed a key, I'm
> assuming due to the patch. The following is the output I got from
> tapping Space, then holding Space (so that it
> functions as Ctrl), then holding Space and tapping CapsLock, then
> holding Space, holding CapsLock and tapping the U-key
> (which should translate to the keyboard-sequence C-ö):
Thanks; however, the keys I asked you to type were:
press and release Caps Lock
press and release Ctrl
press Ctrl, then Caps Lock, before releasing Ctrl
I don't understand the pertinence of a ``U-key'' here, nor which key
that is.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 11:06 ` Alexander Prähauser
@ 2023-08-24 9:56 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 14:12 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-24 9:56 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> The significance of the U-key is that when I press Space-CapsLock-U
> (or any other key, I think), it doesn't send the signal
> that is configured by xkb but the corresponding key of the default
> English keymap (u for the U-key), which really
> shouldn't happen. Anyway, here the output after pressing the sequence
> you wanted:
>
> keycode: 48, keysym: 65027, 0
> keycode: 192, keysym: 269025093, 0
> keycode: 37, keysym: 65507, 0
> keycode: 37, keysym: 65507, 0 <- Control_R
> keycode: 48, keysym: 65027, 0 <- AC11, ISO_Level3_Shift
> keycode: 192, keysym: 269025093, <- XF86Launch5
This attests to Emacs registering the keysyms you meant it to. If
ISO_Level3_Shift is registered as a modifier key, it should not be
translated into keyboard input afterwards, let alone the original
apostrophe symbol.
Does this patch resolve your problems with typing level 3 characters
coupled with Control?
diff --git a/src/xterm.c b/src/xterm.c
index 6a1642ff56e..7391041ea0c 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23734,6 +23734,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
ptrdiff_t i;
unsigned int old_state;
struct xi_device_t *device, *source;
+ bool is_modifier_key;
coding = Qlatin_1;
@@ -24175,17 +24176,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
/* Any "vendor-specific" key is ok. */
|| (keysym & (1 << 28))
|| (keysym != NoSymbol && nbytes == 0))
- && ! (IsModifierKey (keysym)
- /* The symbols from XK_ISO_Lock
- to XK_ISO_Last_Group_Lock
- don't have real modifiers but
- should be treated similarly to
- Mode_switch by Emacs. */
-#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
- || (XK_ISO_Lock <= keysym
- && keysym <= XK_ISO_Last_Group_Lock)
-#endif
- ))
+ && !is_modifier_key)
{
STORE_KEYSYM_FOR_DEBUG (keysym);
/* make_lispy_event will convert this to a symbolic
@@ -24204,7 +24195,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
}
- if (nbytes)
+ /* Mind that NBYTES can be set even if KEYSYM
+ represents a modifier key, but that no character
+ events should be sent in that case. */
+
+ if (nbytes && !is_modifier_key)
{
inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
inev.ie.arg = make_unibyte_string (copy_bufptr, nbytes);
^ permalink raw reply related [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 0:00 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-24 11:06 ` Alexander Prähauser
2023-08-24 9:56 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-24 11:06 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
The significance of the U-key is that when I press
Space-CapsLock-U (or any other key, I think), it doesn't send the
signal
that is configured by xkb but the corresponding key of the default
English keymap (u for the U-key), which really
shouldn't happen. Anyway, here the output after pressing the
sequence you wanted:
keycode: 48, keysym: 65027, 0
keycode: 192, keysym: 269025093, 0
keycode: 37, keysym: 65507, 0
keycode: 37, keysym: 65507, 0
keycode: 48, keysym: 65027, 0
keycode: 192, keysym: 269025093, 0
Po Lu [2023-08-24 Thu 08:00] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> I've built emacs on another system with the same keyboard
>> configuration, then applied the patch, then recompiled it and
>> started it from the terminal. The problem persists, but I got
>> outputs
>> in the console everytime I pressed a key, I'm
>> assuming due to the patch. The following is the output I got
>> from
>> tapping Space, then holding Space (so that it
>> functions as Ctrl), then holding Space and tapping CapsLock,
>> then
>> holding Space, holding CapsLock and tapping the U-key
>> (which should translate to the keyboard-sequence C-ö):
>
> Thanks; however, the keys I asked you to type were:
>
> press and release Caps Lock
> press and release Ctrl
> press Ctrl, then Caps Lock, before releasing Ctrl
>
> I don't understand the pertinence of a ``U-key'' here, nor which
> key
> that is.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 14:12 ` Alexander Prähauser
@ 2023-08-24 12:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 15:34 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-24 12:41 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> It does seem to register the correct level shifts now, but it seems to
> evaluate each key immediately after having been
> pressed. For instance, when I press Space-CapsLock-U, this should
> evaluate to C-; and it does, but this is the output
> I'm receiving in-between:
>
> <Control_R> is undefined
> C-' is undefined
> C-; is undefined
>
> Po Lu [2023-08-24 Thu 17:56] wrote:
>
>> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>>
>>> The significance of the U-key is that when I press Space-CapsLock-U
>>> (or any other key, I think), it doesn't send the signal
>>> that is configured by xkb but the corresponding key of the default
>>> English keymap (u for the U-key), which really
>>> shouldn't happen. Anyway, here the output after pressing the
>>> sequence
>>> you wanted:
>>>
>>> keycode: 48, keysym: 65027, 0
>>> keycode: 192, keysym: 269025093, 0
>>> keycode: 37, keysym: 65507, 0
>>> keycode: 37, keysym: 65507, 0 <- Control_R
>>> keycode: 48, keysym: 65027, 0 <- AC11, ISO_Level3_Shift
>>> keycode: 192, keysym: 269025093, <- XF86Launch5
>>
>> This attests to Emacs registering the keysyms you meant it to. If
>> ISO_Level3_Shift is registered as a modifier key, it should not be
>> translated into keyboard input afterwards, let alone the original
>> apostrophe symbol.
>>
>> Does this patch resolve your problems with typing level 3 characters
>> coupled with Control?
>>
>> diff --git a/src/xterm.c b/src/xterm.c
>> index 6a1642ff56e..7391041ea0c 100644
>> --- a/src/xterm.c
>> +++ b/src/xterm.c
>> @@ -23734,6 +23734,7 @@ handle_one_xevent (struct x_display_info
>> *dpyinfo,
>> ptrdiff_t i;
>> unsigned int old_state;
>> struct xi_device_t *device, *source;
>> + bool is_modifier_key;
>> coding = Qlatin_1;
>> @@ -24175,17 +24176,7 @@ handle_one_xevent (struct x_display_info
>> *dpyinfo,
>> /* Any "vendor-specific" key is ok. */
>> || (keysym & (1 << 28))
>> || (keysym != NoSymbol && nbytes == 0))
>> - && ! (IsModifierKey (keysym)
>> - /* The symbols from XK_ISO_Lock
>> - to XK_ISO_Last_Group_Lock
>> - don't have real modifiers but
>> - should be treated similarly to
>> - Mode_switch by Emacs. */
>> -#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
>> - || (XK_ISO_Lock <= keysym
>> - && keysym <= XK_ISO_Last_Group_Lock)
>> -#endif
>> - ))
>> + && !is_modifier_key)
>> {
>> STORE_KEYSYM_FOR_DEBUG (keysym);
>> /* make_lispy_event will convert this to a
>> symbolic
>> @@ -24204,7 +24195,11 @@ handle_one_xevent (struct x_display_info
>> *dpyinfo,
>> STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
>> }
>> - if (nbytes)
>> + /* Mind that NBYTES can be set even if KEYSYM
>> + represents a modifier key, but that no character
>> + events should be sent in that case. */
>> +
>> + if (nbytes && !is_modifier_key)
>> {
>> inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
>> inev.ie.arg = make_unibyte_string (copy_bufptr,
>> nbytes);
Please excuse my carelessness, I appear to have ommitted a chunk of the
diff:
diff --git a/src/xterm.c b/src/xterm.c
index 6a1642ff56e..4b2da066694 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23734,6 +23734,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
ptrdiff_t i;
unsigned int old_state;
struct xi_device_t *device, *source;
+ bool is_modifier_key;
coding = Qlatin_1;
@@ -24091,6 +24092,18 @@ handle_one_xevent (struct x_display_info *dpyinfo,
goto xi_done_keysym;
}
+ is_modifier_key = (IsModifierKey (keysym)
+ /* The symbols from XK_ISO_Lock
+ to XK_ISO_Last_Group_Lock
+ don't have real modifiers but
+ should be treated similarly to
+ Mode_switch by Emacs. */
+#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
+ || (XK_ISO_Lock <= keysym
+ && keysym <= XK_ISO_Last_Group_Lock)
+#endif
+ );
+
/* Random non-modifier sorts of keysyms. */
if (((keysym >= XK_BackSpace && keysym <= XK_Escape)
|| keysym == XK_Delete
@@ -24175,17 +24188,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
/* Any "vendor-specific" key is ok. */
|| (keysym & (1 << 28))
|| (keysym != NoSymbol && nbytes == 0))
- && ! (IsModifierKey (keysym)
- /* The symbols from XK_ISO_Lock
- to XK_ISO_Last_Group_Lock
- don't have real modifiers but
- should be treated similarly to
- Mode_switch by Emacs. */
-#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
- || (XK_ISO_Lock <= keysym
- && keysym <= XK_ISO_Last_Group_Lock)
-#endif
- ))
+ && !is_modifier_key)
{
STORE_KEYSYM_FOR_DEBUG (keysym);
/* make_lispy_event will convert this to a symbolic
@@ -24204,7 +24207,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
}
- if (nbytes)
+ /* Mind that NBYTES can be set even if KEYSYM
+ represents a modifier key, but that no character
+ events should be sent in that case. */
+
+ if (nbytes && !is_modifier_key)
{
inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
inev.ie.arg = make_unibyte_string (copy_bufptr, nbytes);
^ permalink raw reply related [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 9:56 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-24 14:12 ` Alexander Prähauser
2023-08-24 12:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-24 14:12 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
It does seem to register the correct level shifts now, but it
seems to evaluate each key immediately after having been
pressed. For instance, when I press Space-CapsLock-U, this should
evaluate to C-; and it does, but this is the output
I'm receiving in-between:
<Control_R> is undefined
C-' is undefined
C-; is undefined
Po Lu [2023-08-24 Thu 17:56] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> The significance of the U-key is that when I press
>> Space-CapsLock-U
>> (or any other key, I think), it doesn't send the signal
>> that is configured by xkb but the corresponding key of the
>> default
>> English keymap (u for the U-key), which really
>> shouldn't happen. Anyway, here the output after pressing the
>> sequence
>> you wanted:
>>
>> keycode: 48, keysym: 65027, 0
>> keycode: 192, keysym: 269025093, 0
>> keycode: 37, keysym: 65507, 0
>> keycode: 37, keysym: 65507, 0 <- Control_R
>> keycode: 48, keysym: 65027, 0 <- AC11, ISO_Level3_Shift
>> keycode: 192, keysym: 269025093, <- XF86Launch5
>
> This attests to Emacs registering the keysyms you meant it to.
> If
> ISO_Level3_Shift is registered as a modifier key, it should not
> be
> translated into keyboard input afterwards, let alone the
> original
> apostrophe symbol.
>
> Does this patch resolve your problems with typing level 3
> characters
> coupled with Control?
>
> diff --git a/src/xterm.c b/src/xterm.c
> index 6a1642ff56e..7391041ea0c 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -23734,6 +23734,7 @@ handle_one_xevent (struct x_display_info
> *dpyinfo,
> ptrdiff_t i;
> unsigned int old_state;
> struct xi_device_t *device, *source;
> + bool is_modifier_key;
>
> coding = Qlatin_1;
>
> @@ -24175,17 +24176,7 @@ handle_one_xevent (struct
> x_display_info *dpyinfo,
> /* Any "vendor-specific" key is ok. */
> || (keysym & (1 << 28))
> || (keysym != NoSymbol && nbytes == 0))
> - && ! (IsModifierKey (keysym)
> - /* The symbols from XK_ISO_Lock
> - to XK_ISO_Last_Group_Lock
> - don't have real modifiers but
> - should be treated similarly to
> - Mode_switch by Emacs. */
> -#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
> - || (XK_ISO_Lock <= keysym
> - && keysym <=
> XK_ISO_Last_Group_Lock)
> -#endif
> - ))
> + && !is_modifier_key)
> {
> STORE_KEYSYM_FOR_DEBUG (keysym);
> /* make_lispy_event will convert this to a
> symbolic
> @@ -24204,7 +24195,11 @@ handle_one_xevent (struct
> x_display_info *dpyinfo,
> STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
> }
>
> - if (nbytes)
> + /* Mind that NBYTES can be set even if KEYSYM
> + represents a modifier key, but that no
> character
> + events should be sent in that case. */
> +
> + if (nbytes && !is_modifier_key)
> {
> inev.ie.kind =
> MULTIBYTE_CHAR_KEYSTROKE_EVENT;
> inev.ie.arg = make_unibyte_string
> (copy_bufptr, nbytes);
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 12:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-24 15:34 ` Alexander Prähauser
2023-08-25 2:49 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-24 15:34 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
Now when I press for instance Space, it doesn't seem to evaluate
immediately, but it does evaluate when I
press another dual-function-modified key. So if I press the same
sequence as below the first message doesn't appear but
the second one does.
Po Lu [2023-08-24 Thu 20:41] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> It does seem to register the correct level shifts now, but it
>> seems to
>> evaluate each key immediately after having been
>> pressed. For instance, when I press Space-CapsLock-U, this
>> should
>> evaluate to C-; and it does, but this is the output
>> I'm receiving in-between:
>>
>> <Control_R> is undefined
>> C-' is undefined
>> C-; is undefined
>>
>> Po Lu [2023-08-24 Thu 17:56] wrote:
>>
>>> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>>>
>>>> The significance of the U-key is that when I press
>>>> Space-CapsLock-U
>>>> (or any other key, I think), it doesn't send the signal
>>>> that is configured by xkb but the corresponding key of the
>>>> default
>>>> English keymap (u for the U-key), which really
>>>> shouldn't happen. Anyway, here the output after pressing the
>>>> sequence
>>>> you wanted:
>>>>
>>>> keycode: 48, keysym: 65027, 0
>>>> keycode: 192, keysym: 269025093, 0
>>>> keycode: 37, keysym: 65507, 0
>>>> keycode: 37, keysym: 65507, 0 <- Control_R
>>>> keycode: 48, keysym: 65027, 0 <- AC11, ISO_Level3_Shift
>>>> keycode: 192, keysym: 269025093, <- XF86Launch5
>>>
>>> This attests to Emacs registering the keysyms you meant it
>>> to. If
>>> ISO_Level3_Shift is registered as a modifier key, it should
>>> not be
>>> translated into keyboard input afterwards, let alone the
>>> original
>>> apostrophe symbol.
>>>
>>> Does this patch resolve your problems with typing level 3
>>> characters
>>> coupled with Control?
>>>
>>> diff --git a/src/xterm.c b/src/xterm.c
>>> index 6a1642ff56e..7391041ea0c 100644
>>> --- a/src/xterm.c
>>> +++ b/src/xterm.c
>>> @@ -23734,6 +23734,7 @@ handle_one_xevent (struct
>>> x_display_info
>>> *dpyinfo,
>>> ptrdiff_t i;
>>> unsigned int old_state;
>>> struct xi_device_t *device, *source;
>>> + bool is_modifier_key;
>>> coding = Qlatin_1;
>>> @@ -24175,17 +24176,7 @@ handle_one_xevent (struct
>>> x_display_info
>>> *dpyinfo,
>>> /* Any "vendor-specific" key is ok. */
>>> || (keysym & (1 << 28))
>>> || (keysym != NoSymbol && nbytes == 0))
>>> - && ! (IsModifierKey (keysym)
>>> - /* The symbols from XK_ISO_Lock
>>> - to XK_ISO_Last_Group_Lock
>>> - don't have real modifiers but
>>> - should be treated similarly to
>>> - Mode_switch by Emacs. */
>>> -#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
>>> - || (XK_ISO_Lock <= keysym
>>> - && keysym <=
>>> XK_ISO_Last_Group_Lock)
>>> -#endif
>>> - ))
>>> + && !is_modifier_key)
>>> {
>>> STORE_KEYSYM_FOR_DEBUG (keysym);
>>> /* make_lispy_event will convert this to a
>>> symbolic
>>> @@ -24204,7 +24195,11 @@ handle_one_xevent (struct
>>> x_display_info
>>> *dpyinfo,
>>> STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
>>> }
>>> - if (nbytes)
>>> + /* Mind that NBYTES can be set even if KEYSYM
>>> + represents a modifier key, but that no
>>> character
>>> + events should be sent in that case. */
>>> +
>>> + if (nbytes && !is_modifier_key)
>>> {
>>> inev.ie.kind =
>>> MULTIBYTE_CHAR_KEYSTROKE_EVENT;
>>> inev.ie.arg = make_unibyte_string
>>> (copy_bufptr,
>>> nbytes);
>
> Please excuse my carelessness, I appear to have ommitted a chunk
> of the
> diff:
>
> diff --git a/src/xterm.c b/src/xterm.c
> index 6a1642ff56e..4b2da066694 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -23734,6 +23734,7 @@ handle_one_xevent (struct x_display_info
> *dpyinfo,
> ptrdiff_t i;
> unsigned int old_state;
> struct xi_device_t *device, *source;
> + bool is_modifier_key;
>
> coding = Qlatin_1;
>
> @@ -24091,6 +24092,18 @@ handle_one_xevent (struct
> x_display_info *dpyinfo,
> goto xi_done_keysym;
> }
>
> + is_modifier_key = (IsModifierKey (keysym)
> + /* The symbols from
> XK_ISO_Lock
> + to XK_ISO_Last_Group_Lock
> + don't have real modifiers
> but
> + should be treated
> similarly to
> + Mode_switch by Emacs. */
> +#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
> + || (XK_ISO_Lock <= keysym
> + && keysym <=
> XK_ISO_Last_Group_Lock)
> +#endif
> + );
> +
> /* Random non-modifier sorts of keysyms. */
> if (((keysym >= XK_BackSpace && keysym <=
> XK_Escape)
> || keysym == XK_Delete
> @@ -24175,17 +24188,7 @@ handle_one_xevent (struct
> x_display_info *dpyinfo,
> /* Any "vendor-specific" key is ok. */
> || (keysym & (1 << 28))
> || (keysym != NoSymbol && nbytes == 0))
> - && ! (IsModifierKey (keysym)
> - /* The symbols from XK_ISO_Lock
> - to XK_ISO_Last_Group_Lock
> - don't have real modifiers but
> - should be treated similarly to
> - Mode_switch by Emacs. */
> -#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
> - || (XK_ISO_Lock <= keysym
> - && keysym <=
> XK_ISO_Last_Group_Lock)
> -#endif
> - ))
> + && !is_modifier_key)
> {
> STORE_KEYSYM_FOR_DEBUG (keysym);
> /* make_lispy_event will convert this to a
> symbolic
> @@ -24204,7 +24207,11 @@ handle_one_xevent (struct
> x_display_info *dpyinfo,
> STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
> }
>
> - if (nbytes)
> + /* Mind that NBYTES can be set even if KEYSYM
> + represents a modifier key, but that no
> character
> + events should be sent in that case. */
> +
> + if (nbytes && !is_modifier_key)
> {
> inev.ie.kind =
> MULTIBYTE_CHAR_KEYSTROKE_EVENT;
> inev.ie.arg = make_unibyte_string
> (copy_bufptr, nbytes);
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-24 15:34 ` Alexander Prähauser
@ 2023-08-25 2:49 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-25 10:11 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-25 2:49 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> Now when I press for instance Space, it doesn't seem to evaluate
> immediately, but it does evaluate when I
> press another dual-function-modified key. So if I press the same
> sequence as below the first message doesn't appear but
> the second one does.
Please pull from the master branch and ascertain if your issues have
been resolved. TIA.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-25 10:11 ` Alexander Prähauser
@ 2023-08-25 8:23 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
[not found] ` <87o7iv34z0.FSF@yahoo.com>
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-25 8:23 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> I stashed the patch and pulled from the master branch, then ran make
> and make install, then restarted Emacs. Now when I
> press Space-CapsLock I get C-' is undefined
> C-<XF86Launch5> is undefined
That's very strange, as the XI keyboard mapping code should now be
equivalent to the core event code. What if you run Emacs with:
src/emacs -q -xrm 'Emacs.disableInputExtension: true'
?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-25 2:49 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-25 10:11 ` Alexander Prähauser
2023-08-25 8:23 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-25 10:11 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
I stashed the patch and pulled from the master branch, then ran
make and make install, then restarted Emacs. Now when I
press Space-CapsLock I get
C-' is undefined
C-<XF86Launch5> is undefined
Po Lu [2023-08-25 Fri 10:49] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> Now when I press for instance Space, it doesn't seem to
>> evaluate
>> immediately, but it does evaluate when I
>> press another dual-function-modified key. So if I press the
>> same
>> sequence as below the first message doesn't appear but
>> the second one does.
>
> Please pull from the master branch and ascertain if your issues
> have
> been resolved. TIA.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
[not found] ` <87o7iv34z0.FSF@yahoo.com>
@ 2023-08-25 10:36 ` Alexander Prähauser
2023-08-26 1:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-25 10:36 UTC (permalink / raw)
To: Po Lu; +Cc: 65068
When I press Space-CapsLock there, exactly the same thing happens,
and similar for other combinations. BTW, I'm
currently experimenting with StumpWM and they seem to have a
similar problem. If we can fix this here, maybe we can tell
them what the solution.
Po Lu [2023-08-25 Fri 16:23] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> I stashed the patch and pulled from the master branch, then ran
>> make
>> and make install, then restarted Emacs. Now when I
>> press Space-CapsLock I get C-' is undefined
>> C-<XF86Launch5> is undefined
>
> That's very strange, as the XI keyboard mapping code should now
> be
> equivalent to the core event code. What if you run Emacs with:
>
> src/emacs -q -xrm 'Emacs.disableInputExtension: true'
>
> ?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-25 10:36 ` Alexander Prähauser
@ 2023-08-26 1:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26 11:39 ` Alexander Prähauser
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-26 1:39 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: 65068
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> When I press Space-CapsLock there, exactly the same thing happens, and
> similar for other combinations.
How about now?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-26 11:39 ` Alexander Prähauser
@ 2023-08-26 10:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26 10:08 ` Eli Zaretskii
0 siblings, 1 reply; 30+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-26 10:01 UTC (permalink / raw)
To: Alexander Prähauser; +Cc: Eli Zaretskii, 65068-done
Alexander Prähauser <alexander.praehauser@gmx.at> writes:
> It works! Thanks so much! Finally I can transition to the new Emacs
> version! Say, can you write a high-level summary about what you did so
> I can send it to the Stumpwm-people?
The remedy is disabling non-standard behavior imposed by the XFree86 XKB
library, through changing the ControlFallback X library control:
#ifdef XkbLC_ControlFallback
XkbSetXlibControls (dpyinfo->display, XkbLC_ControlFallback, 0);
#endif /* XkbLC_ControlFallback */
Otherwise, XLookupString (and XmbLookupString) endeavor to locate an
ASCII character within a different group if ControlMask is set and the
standard means of keycode mapping produce a function key. In your case,
the keycode array for AC11 still assigned ASCII characters to groups 2
through 4; consequently, group 2 would be consulted in lieu of the key
event's effective group.
I'm closing this bug as fixed; Eli, do you object to installing a
three-line fix incorporating only the code quoted in this e-mail on
emacs-29?
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-26 10:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-26 10:08 ` Eli Zaretskii
0 siblings, 0 replies; 30+ messages in thread
From: Eli Zaretskii @ 2023-08-26 10:08 UTC (permalink / raw)
To: Po Lu; +Cc: alexander.praehauser, 65068-done
> From: Po Lu <luangruo@yahoo.com>
> Cc: 65068-done@debbugs.gnu.org, Eli Zaretskii <eliz@gnu.org>
> Date: Sat, 26 Aug 2023 18:01:59 +0800
>
> Eli, do you object to installing a three-line fix incorporating only
> the code quoted in this e-mail on emacs-29?
Please feel free to backport to emacs-29, and thanks.
^ permalink raw reply [flat|nested] 30+ messages in thread
* bug#65068: 29.1; xkb-interception interaction causes problems with key combinations
2023-08-26 1:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-26 11:39 ` Alexander Prähauser
2023-08-26 10:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 30+ messages in thread
From: Alexander Prähauser @ 2023-08-26 11:39 UTC (permalink / raw)
To: Po Lu; +Cc: Alexander Prähauser, 65068
It works! Thanks so much! Finally I can transition to the new
Emacs version! Say, can you write a high-level summary about what
you did so I can send it to the Stumpwm-people?
Po Lu [2023-08-26 Sat 09:39] wrote:
> Alexander Prähauser <alexander.praehauser@gmx.at> writes:
>
>> When I press Space-CapsLock there, exactly the same thing
>> happens, and
>> similar for other combinations.
>
> How about now?
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2023-08-26 11:39 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <87v8dv2ib3.fsf@gmx.at>
2023-08-09 0:02 ` bug#65068: 29.1; xkb-interception interaction causes problems with key combinations Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-15 13:31 ` Alexander Prähauser
2023-08-16 1:29 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-16 7:50 ` Alexander Prähauser
2023-08-16 8:02 ` Alexander Prähauser
2023-08-16 12:51 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-16 14:04 ` Alexander Prähauser
2023-08-17 1:09 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-17 2:37 ` Alexander Prähauser
2023-08-17 2:45 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-17 3:28 ` Alexander Prähauser
2023-08-17 4:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-19 13:35 ` Alexander Prähauser
2023-08-23 11:02 ` Alexander Prähauser
2023-08-23 11:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 14:05 ` Alexander Prähauser
2023-08-24 0:00 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 11:06 ` Alexander Prähauser
2023-08-24 9:56 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 14:12 ` Alexander Prähauser
2023-08-24 12:41 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 15:34 ` Alexander Prähauser
2023-08-25 2:49 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-25 10:11 ` Alexander Prähauser
2023-08-25 8:23 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
[not found] ` <87o7iv34z0.FSF@yahoo.com>
2023-08-25 10:36 ` Alexander Prähauser
2023-08-26 1:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26 11:39 ` Alexander Prähauser
2023-08-26 10:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26 10:08 ` Eli Zaretskii
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.