Subject: bug#54289: 29.0.50; Emacs ignores xmodmap Super_L assignment

From: Stephen Berman <[email-masked]>
Date: Tue, 08 Mar 2022 12:40:24 +0100

On Tue, 08 Mar 2022 19:13:10 +0800 Po Lu <[email-masked]> wrote:

> Stephen Berman <[email-masked]> writes:
>
>> You mean forward slash and backslash?  I.e. mod4 subsumes the Super_L
>> and Menu keysyms?
>
> No, just forward slash.
>
>> I tried with all three remove mappings and also with just the first two,
>> but in both cases nothing changed, i.e., typing Super_L (the Windows key
>> on my keyboard) still produced nothing in emacs-29 (non-pgtk build).
>> Same in Firefox.  FWIW evaluating `xmodmap .Xmodmap' gives this output
>> (both with the lines you suggested adding and without them):
>>
>> xmodmap: .Xmodmap:16: bad keysym in remove modifier list 'Caps_Lock', no
>> corresponding keycodes
>> xmodmap: .Xmodmap:18: bad keysym target keysym 'Caps_Lock', no corresponding
>> keycodes
>> xmodmap: .Xmodmap:49: bad keysym target keysym 'Super_L', no corresponding
>> keycodes
>> xmodmap:  .Xmodmap:52:  bad keysym target keysym 'Menu', no corresponding keycodes
>> xmodmap:  4 errors encountered, aborting.
>>
>> Nevertheless, only the Super_L mapping fails in emacs-29 (and Firefox).
>
> Thanks, then please run GDB, and add a breakpoint like this:
>
>   (gdb) break xterm.c:12731
>
> It should then print something along the lines of
>
>   Breakpoint N at 0x505332: file xterm.c, line 12731.
>
> At this point, say:
>
>   (gdb) condition N rec->map->modmap[xev->detail] != 0
>   (gdb) commands
>   Type commands for breakpoint(s) 3, one per line.
>   End with a line saying just "end".
>   >p rec->map->modmap[xev->detail]
>   >c
>   >end
>
> where N is the number of the breakpoint that was printed above, then run
> Emacs like this:
>
>   (gdb) run -q -xrm 'Emacs.useXIM: false'
>
> Press the left super key, and show the output.  Thanks.

My xterm.c is not quite up to date, so I adjusted the breakpoint:

(gdb) break xterm.c:12547
Breakpoint 3 at 0x55b4c9: file /home/steve/src/emacs/emacs-master/src/xterm.c, line 12547.
(gdb) condition 3 rec->map->modmap[xev->detail] != 0
(gdb) commands
Type commands for breakpoint(s) 3, one per line.
End with a line saying just "end".
>p rec->map->modmap[xev->detail]
>c
>end
(gdb) run -q -xrm 'Emacs.useXIM: false'
Starting program: /home/steve/build/emacs-master/src/emacs -q -xrm 'Emacs.useXIM: false'
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffea505640 (LWP 10837)]
[New Thread 0x7fffe9af7640 (LWP 10838)]
[New Thread 0x7fffe8f9a640 (LWP 10839)]
[New Thread 0x7fffdbfff640 (LWP 10840)]
[Thread 0x7fffdbfff640 (LWP 10840) exited]
[New Thread 0x7fffdbfff640 (LWP 10841)]
[New Thread 0x7fffdb66f640 (LWP 10842)]
[Thread 0x7fffdbfff640 (LWP 10841) exited]
[Thread 0x7fffdb66f640 (LWP 10842) exited]
[New Thread 0x7fffdb66f640 (LWP 10843)]
[New Thread 0x7fffdbfff640 (LWP 10844)]
[Thread 0x7fffdb66f640 (LWP 10843) exited]
[Thread 0x7fffdbfff640 (LWP 10844) exited]

Thread 1 "emacs" hit Breakpoint 3, handle_one_xevent (dpyinfo=dpyinfo@entry=0xd586e0, event=event@entry=0x7fffffffd410, finish=finish@entry=0xaac980 <current_finish>, hold_quit=0x7fffffffd660) at /home/steve/src/emacs/emacs-master/src/xterm.c:12549
warning: Source file is more recent than executable.
12549			  if (rec->map->modmap && rec->map->modmap[xev->detail])
$1 = 64 '@'
[Thread 0x7fffe8f9a640 (LWP 10839) exited]

The GDB session is still running; do you want any further output?

Steve Berman