Subject: bug#66765: closed (Re: bug#66765: 30.0.50; Building emacs with xinput2 breaks receiving XSendEvent events)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 27 Oct 2023 00:34:02 +0000

Your bug report

#66765: 30.0.50; Building emacs with xinput2 breaks receiving XSendEvent events

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
66765: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66765
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#66765: 30.0.50; Building emacs with xinput2 breaks receiving XSendEvent events
From: Po Lu <[email-masked]>
To: Ami Fischman <[email-masked]>
Cc: [email-masked]
Date: Fri, 27 Oct 2023 08:32:44 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

tags 66765 + notabug wontfix
thanks

Ami Fischman <[email-masked]> writes:

> 1. Run: `emacs -Q` on an X11 display for a binary that's been built
> with (the default) `--with-xinput2`
> 2. From another program, trigger an XSendEvent targeting the above
> emacs' window sending a key event.
> Expected:
> 3. The sent key event is seen by emacs.
> Actual:
> 4. Emacs doesn't seem to receive the sent key event.
>
> Simplest way to execute step 2 above is:
> $ git clone http://github.com/epitron/xse.git
> $ cd xse && ./configure  && xmkmf && make depend && make
> $ xwininfo
> (click the emacs window and note its reported "Window id" for the next command)
> $ ./xse -win <EMACS_WINDOW_ID> -Debug '<Key>l'
>
> When emacs is built with `--without-xinput2` the issue is gone, and
> sent events are received properly.
> Issue is not present in 27.1 or 28.1, but is present in 29.1 and HEAD.
> Confirmed with a git bisect that the issue showed up when xinput2 was
> enabled by default in
> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=0105a4ddb8a58146f3fc71c265e57291c873af0b
>
> I stumbled across this issue when upgrading from 27.1 to 29.1 and
> noticing that ratpoison can no longer send its escape key (in my case,
> this is C-a) to emacs, even though it has no problems sending the same
> key to every other app on my system.

When the X input extension is in use, both Emacs and the X server ignore
core events.  It's also impossible to send extension events, so this
extension renders external event delivery effectively impossible.

This isn't a bug we can fix, sorry; but the XTEST extension is capable
of simulating real key presses, so I suggest whatever tools send Emacs
events be rewritten to make use of that extension.

The same issue can be observed in programs written to use version 3 or 4
of the GTK toolkit.

Subject: 30.0.50; Building emacs with xinput2 breaks receiving XSendEvent events
From: Ami Fischman <[email-masked]>
To: [email-masked]
Date: Thu, 26 Oct 2023 10:49:30 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

1. Run: `emacs -Q` on an X11 display for a binary that's been built
with (the default) `--with-xinput2`
2. From another program, trigger an XSendEvent targeting the above
emacs' window sending a key event.
Expected:
3. The sent key event is seen by emacs.
Actual:
4. Emacs doesn't seem to receive the sent key event.

Simplest way to execute step 2 above is:
$ git clone http://github.com/epitron/xse.git
$ cd xse && ./configure  && xmkmf && make depend && make
$ xwininfo
(click the emacs window and note its reported "Window id" for the next command)
$ ./xse -win <EMACS_WINDOW_ID> -Debug '<Key>l'

When emacs is built with `--without-xinput2` the issue is gone, and
sent events are received properly.
Issue is not present in 27.1 or 28.1, but is present in 29.1 and HEAD.
Confirmed with a git bisect that the issue showed up when xinput2 was
enabled by default in
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=0105a4ddb8a58146f3fc71c265e57291c873af0b

I stumbled across this issue when upgrading from 27.1 to 29.1 and
noticing that ratpoison can no longer send its escape key (in my case,
this is C-a) to emacs, even though it has no problems sending the same
key to every other app on my system.

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.33, cairo version 1.16.0) of 2023-10-25 built on <ELIDED>
Repository revision: 70e25298f160ffec62e363056904b6238a87d4e0
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.3 LTS

Configured using:
 'configure --prefix=<ELIDED> --enable-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-cairo
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars
 --with-imagemagick --with-json --with-tree-sitter --with-xwidgets
 'CFLAGS=-g -O2 -fstack-protector-strong -w' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2
M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM
XWIDGETS GTK3 ZLIB

Important settings:
  value of $LC_ALL:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads xwidget-internal dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 37691 9512) (symbols 48 5216 0) (strings 32 13286 1532)
 (string-bytes 1 375218) (vectors 16 10300)
 (vector-slots 8 156562 17668) (floats 8 38 21) (intervals 56 259 0)
 (buffers 992 10))