unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#74016: 29.4; emacs-pgtk doesnt receive numpad events on wayland(sway)
@ 2024-10-25 19:35 joakim
  2024-11-02 11:29 ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: joakim @ 2024-10-25 19:35 UTC (permalink / raw)
  To: 74016


Emacs-pgtk doesnt seem to receive numpad events, instead number events
are received.

There was a thread about this on emacs-help:

https://lists.gnu.org/archive/html/help-gnu-emacs/2024-10/msg00094.html

I have attempted to summarize the thread here, wherein Stefan Monier
recomended I report this as a bug, and I also received knowledgeable
advice from several others.

Heres the bug:

I used to use a numpad to bind to do things in emacs.

This used to work really well on the i3wm window manager and a gtk emacs
build.

Then I bought a nice new framework laptop which has a hidpi screen, so I
switched to using the sway wm, and emacs-pgtk.

Now the numpad no longer sends keypad events in a way that emacs
recognizes, instead just plain numbers are received.

below is an example of the code I use, but normally I just test with c-h
k to see which key emacs receives.

I also tried xev, and there it seems I get kp events, at least under
xwayland I guess.

(define-key cider-mode-map (kbd "<kp-enter>") 'sylt-stop)
(define-key cider-mode-map (kbd "<kp-separator>") 'sylt-play-metro)

(defmacro sylt-song-event-map-key (key num)
  `(define-key cider-mode-map (kbd ,key)
               (lambda  () (interactive)   (cider-nrepl-sync-request:eval  
,(concat "(sylt.core/song-event \"" num "\")")))))



(sylt-song-event-map-key "<kp-0>" "init")
(sylt-song-event-map-key "<kp-1>" "1")


Instead of xev, I tried wev, and got this, which seems expected:

Using wev, installed from Fedora repos I get, for numpad 4, and normal 4:

[14:     wl_keyboard] key: serial: 60293; time: 61646320; key: 83; state: 0 
(released)
                      sym: KP_4         (65460), utf8: ''
[14:     wl_keyboard] key: serial: 60294; time: 61651642; key: 13; state: 1 
(pressed)
                      sym: 4            (52), utf8: '4'

That is, the numpad and the number pad sends distinct events that are
received by wev.

using (read-key) in emacs-pgtk, both the numpad and the number row are
received as the same event:

52 (#o64, #x34, ?4) [2 times]

I get the same in a emacs gtk session.

Maybe gtk is doing something weird?

so now I tried emacs-29.4-gtk+x11 -Q

and then I get "4 (translated from <kp-4>)"
on c-h k, numpad 4, so xwayland is doing something correctly in this
case, which pgtk isnt doing in the same way(imho incorrectly but what do
I know)

(and as a reminder, I run emacs-pgtk because it looks super nice on
wayland, with the scaling hints I use on my framework hidpi screen, but
emacs-29.4-gtk+x11 doesnt look good.)


/Joakim




In GNU Emacs 29.4 (build 1, x86_64-redhat-linux-gnu, GTK+ Version
 3.24.43, cairo version 1.18.0) of 2024-10-10 built on
 4825182c94fc4195b65c80c30f523a16
System Description: Fedora Linux 41 (Workstation Edition)

Configured using:
 'configure --build=x86_64-redhat-linux-gnu
 --host=x86_64-redhat-linux-gnu --program-prefix=
 --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
 --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
 --libexecdir=/usr/libexec --localstatedir=/var --runstatedir=/run
 --sharedstatedir=/var/lib --mandir=/usr/share/man
 --infodir=/usr/share/info --with-cairo --with-dbus --with-gif
 --with-gpm=no --with-harfbuzz --with-jpeg --with-json --with-modules
 --with-native-compilation=aot --with-pgtk --with-png --with-rsvg
 --with-sqlite3 --with-tiff --with-tree-sitter --with-webp --with-xpm
 build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu
 CC=gcc 'CFLAGS=-DMAIL_USE_LOCKF -O2 -flto=auto -ffat-lto-objects
 -fexceptions -g -grecord-gcc-switches -pipe -Wall
 -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3
 -Wp,-D_GLIBCXX_ASSERTIONS
 -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64
 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
 -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer
 -mno-omit-leaf-frame-pointer ' 'LDFLAGS=-Wl,-z,relro -Wl,--as-needed
 -Wl,-z,pack-relative-relocs -Wl,-z,now
 -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1
 -specs=/usr/lib/rpm/redhat/redhat-package-notes '
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig CXX=g++
 'CXXFLAGS=-O2 -flto=auto -ffat-lto-objects -fexceptions -g
 -grecord-gcc-switches -pipe -Wall -Werror=format-security
 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS
 -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64
 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
 -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer
 -mno-omit-leaf-frame-pointer ''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Shell

Minor modes in effect:
  org-super-agenda-mode: t
  detached-shell-mode: t
  which-key-mode: t
  recentf-mode: t
  desktop-save-mode: t
  keyfreq-autosave-mode: t
  keyfreq-mode: t
  winner-mode: t
  projectile-mode: t
  smartparens-global-strict-mode: t
  smartparens-strict-mode: t
  smartparens-mode: t
  global-highlight-parentheses-mode: t
  highlight-parentheses-mode: t
  company-quickhelp-mode: t
  company-quickhelp-local-mode: t
  global-company-mode: t
  company-mode: t
  shx-global-mode: t
  shx-mode: t
  erc-stamp-mode: t
  diredfl-global-mode: t
  zen-reward-mode: t
  repeat-mode: t
  magit-gptcommit-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  server-mode: t
  selected-window-accent-mode: t
  gcmh-mode: t
  global-treesit-auto-mode: t
  savehist-mode: t
  vertico-mode: t
  marginalia-mode: t
  shell-dirtrack-mode: t
  async-bytecomp-package-mode: t
  override-global-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  comint-fontify-input-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/home/joakim/.emacs.d/elpa/transient-20241008.1824/transient hides /usr/share/emacs/29.4/lisp/transient
/home/joakim/.emacs.d/elpa/use-package-ensure-system-package-20221209.2013/use-package-ensure-system-package hides /usr/share/emacs/29.4/lisp/use-package/use-package-ensure-system-package

Features:
(shadow emacsbug mailalias smtpmail textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check bbdb-com mail-extr gnus-msg
woman man pcmpl-x pcmpl-gnu hippie-exp cl-print debug backtrace cus-edit
cus-start cus-load mm-archive package-vc network-stream url-cache
display-line-numbers novice shortdoc help-fns radix-tree org-datetree
tabify org-capture detached-compile misearch multi-isearch org-clock
org-ql-search org-ql-view ov diary-lib diary-loaddefs cal-iso
org-super-agenda ht inline origami origami-parsers cal-move pcmpl-rpm
pcmpl-unix detached-shell detached notifications smartparens-latex
tex-mode css-mode java-ts-mode markdown-mode yaml-ts-mode
smartparens-javascript js c-ts-common smartparens-c cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri
rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns
nxml-mode nxml-outln nxml-rap smartparens-html sgml-mode nxml-util
nxml-enc xmltok mule-util generic make-mode flymake-kondor
smartparens-clojure cider cider-debug cider-browse-ns cider-mode
cider-xref-backend cider-find cider-inspector cider-completion
cider-profile cider-eval cider-jar arc-mode archive-mode
cider-repl-history pulse cider-repl cider-resolve cider-test
cider-overlays cider-stacktrace cider-doc cider-browse-spec
cider-clojuredocs cider-eldoc cider-docstring cider-client cider-common
cider-completion-context cider-connection cider-popup sesman-browser
nrepl-client cider-util sesman vc queue nrepl-dict spinner parseedn
parseclj-parser parseclj-lex parseclj-alist clojure-mode hl-line
gnus-dired vc-git vc-dispatcher combobulate combobulate-json
combobulate-yaml combobulate-css combobulate-js-ts combobulate-python
combobulate-html combobulate-query scheme combobulate-ui
combobulate-display combobulate-ztree combobulate-contrib
combobulate-envelope combobulate-manipulation combobulate-procedure
combobulate-navigation combobulate-misc combobulate-interface
combobulate-rules combobulate-settings tempo json-ts-mode
company-oddmuse company-keywords company-etags etags fileloop
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb conf-mode org-ai org-ai-oobabooga
org-ai-sd org-ai-talk org-ai-on-project org-ai-useful
org-ai-openai-image org-ai-openai org-ai-block oc-basic ol-eww eww
url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig ol-docview
doc-view jka-compr ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
init which-key spray face-remap wgrep memory-usage tramp-sh
jupyter-tramp tramp-cache time-stamp jupyter-server
jupyter-server-kernel jupyter-repl jupyter-widget-client simple-httpd
jupyter-client jupyter-kernel jupyter-kernelspec jupyter-env
jupyter-monads jupyter-messages hmac-def jupyter-mime jupyter-rest-api
websocket bindat jupyter-base eieio-base recentf tree-widget desktop
frameset keyfreq zygospore winner ace-window avy restclient nginx-mode
yaml-mode dockerfile-mode sh-script smie executable geiser hy-mode
hy-jedhy hy-shell hy-font-lock hy-base autodisass-java-bytecode
ad-javap-mode meghanada projectile ibuf-ext ibuffer ibuffer-loaddefs
smartparens-config smartparens-rst smartparens-markdown smartparens-org
smartparens-text smartparens-python smartparens-ess smartparens loadhist
highlight-parentheses company-quickhelp pos-tip company shx
bash-completion ob-cypher n4js cypher-mode cmake-mode rst
use-package-ensure-system-package use-package use-package-delight
use-package-diminish system-packages printing ps-print ps-print-loaddefs
lpr gnus-alias nnmairix nnml gnus-sum shr pixel-fill kinsoku url-file
svg dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 gnus-spec gnus-int gnus-range gnus-win gnus nnoo
nnheader range sort bbdb bbdb-site timezone erc-match erc-ezbounce
erc-hl-nicks erc-button erc-fill erc-stamp erc-goodies erc erc-backend
erc-networks erc-common erc-compat erc-loaddefs pastebin secrets dbus
xml diredfl popup sauron disp-table emms-setup emms emms-compat
casual-dired casual-dired-settings dired-aux casual-dired-version
casual-dired-sort-by casual-dired-utils casual-dired-variables elint
checkdoc casual-lib casual-lib-version image-dired image-dired-tags
image-dired-external image-dired-util image-mode exif wdired dired-x
repeat llm-openai llm-provider-utils llm-models llm-request-plz url-http
url-auth url-gw nsm plz-event-source plz-media-type plz magit-gptcommit
llm magit-bookmark magit-submodule magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func imenu
magit-diff smerge-mode diff diff-mode magit-core magit-autorevert
magit-margin magit-transient magit-process git-commit with-editor server
log-edit message sendmail yank-media puny rfc822 mml mml-sec epa epg
rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev
mail-utils gmm-utils mailheader pcvs-util add-log magit-mode benchmark
magit-git magit-base magit-section cursor-sensor crm
selected-window-accent-mode dired-quick-sort hydra lv ls-lisp pdfgrep
grep syncthing syncthing-update syncthing-watcher syncthing-network
syncthing-errors syncthing-keyboard syncthing-draw let-alist
syncthing-faces syncthing-common syncthing-state syncthing-constants
wid-edit syncthing-custom syncthing-groups autorevert filenotify gcmh ag
vc-svn find-dired dired dired-loaddefs csound-mode csound-manual-lookup
csound-skeleton autoinsert csound-indentation csound-repl highlight
facemenu csound-repl-interaction shut-up multi csound-score
csound-font-lock csound-eldoc csound-util csound-opcodes transient
treesit-auto orderless savehist vertico marginalia consult bookmark pp
detached-init modus-operandi-theme modus-themes highlight-indent-guides
ada-mode wisi-process-parse align ada-skel wisi-skel skeleton
ada-indent-user-options ada-core uniquify-files gnat-compiler wisi-prj
wisi wisi-fringe wisi-parse-common semantic/lex semantic/fw mode-local
find-file ob-shell ob-python python treesit ob-julia ob-ess-julia
ess-julia julia-mode julia-mode-latexsubs ess-r-mode ess-r-flymake
ess-r-xref xref ess-trns ess-r-package ess-r-completion ess-roxy
ess-r-syntax ess-rd hideshow ess-s-lang ess-help ess-mode ess-inf
ess-tracebug derived ess lisp-mnt ess-utils ess-custom tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat shell
parse-time iso8601 flymake-proc flymake project compile
text-property-search thingatpt helm-org-rifle helm helm-global-bindings
helm-core async-bytecomp helm-source helm-multi-match helm-lib async f
ob-gnuplot ob-plantuml ob-dot general org-ql ts compat compat-30
org-duration peg org-habit org-agenda org-element org-persist xdg org-id
avl-tree generator org-refile kurecolor dash s color edmacro kmacro
use-package-bind-key bind-key yasnippet-snippets yasnippet outshine
advice outshine-org-cmds outorg easy-mmode org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
org-list org-footnote org-faces org-entities time-date ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version
org-compat org-macs format-spec noutline outline cl flyspell ispell
finder-inf boxquote rect use-package-ensure use-package-core comp
comp-cstr warnings icons cl-extra help-mode pcomplete comint ansi-osc
ansi-color ring generic-x lfe-start ace-window-autoloads
ada-mode-autoloads ag-autoloads autodisass-java-bytecode-autoloads
avy-autoloads bash-completion-autoloads bbdb-autoloads
boxquote-autoloads calfw-autoloads calfw-org-autoloads
casual-dired-autoloads casual-lib-autoloads cider-autoloads
clojure-mode-autoloads cmake-mode-autoloads combobulate-autoloads
company-quickhelp-autoloads csound-mode-autoloads detached-autoloads
dired-quick-sort-autoloads diredfl-autoloads dockerfile-mode-autoloads
editorconfig-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads emms-autoloads erc-hl-nicks-autoloads
expand-region-autoloads flymake-kondor-autoloads gcmh-autoloads
geiser-autoloads general-autoloads gnat-compiler-autoloads
gnus-alias-autoloads go-mode-autoloads groovy-mode-autoloads
haskell-mode-autoloads helm-org-autoloads helm-easymenu
helm-org-rifle-autoloads helm-autoloads helm-core-autoloads
async-autoloads helpful-autoloads elisp-refs-autoloads
highlight-autoloads highlight-indent-guides-autoloads
highlight-parentheses-autoloads hy-mode-autoloads hydra-autoloads
ivy-yasnippet-autoloads ivy-autoloads js2-mode-autoloads
jupyter-autoloads keyfreq-autoloads kotlin-mode-autoloads
kurecolor-autoloads lua-mode-autoloads lv-autoloads
magit-gptcommit-autoloads llm-autoloads magit-autoloads pcase
marginalia-autoloads markdown-mode-autoloads meghanada-autoloads
flycheck-autoloads company-autoloads memory-usage-autoloads
multi-autoloads multitran-autoloads n4js-autoloads nginx-mode-autoloads
ob-cypher-autoloads dash-functional-autoloads cypher-mode-autoloads
ob-ess-julia-autoloads julia-mode-autoloads ess-autoloads
orderless-autoloads org-ai-autoloads org-ql-autoloads f-autoloads
org-roam-autoloads magit-section-autoloads emacsql-autoloads
org-super-agenda-autoloads ht-autoloads origami-autoloads
outshine-autoloads outorg-autoloads ov-autoloads ox-hugo-autoloads
ox-reveal-autoloads parseedn-autoloads parseclj-autoloads
pastebin-autoloads pdfgrep-autoloads peg-autoloads
plz-event-source-autoloads plz-media-type-autoloads plz-autoloads
popup-autoloads pos-tip-autoloads projectile-autoloads
protobuf-mode-autoloads queue-autoloads restclient-autoloads
rust-mode-autoloads sauron-autoloads
selected-window-accent-mode-autoloads sesman-autoloads shut-up-autoloads
shx-autoloads simple-httpd-autoloads smartparens-autoloads
spinner-autoloads spray-autoloads syncthing-autoloads tomelr-autoloads
transient-autoloads transient-showcase-autoloads treesit-auto-autoloads
ts-autoloads s-autoloads dash-autoloads tuareg-autoloads rx
caml-autoloads uniquify-files-autoloads
use-package-ensure-system-package-autoloads system-packages-autoloads
vertico-autoloads webpaste-autoloads request-autoloads
websocket-autoloads wfnames-autoloads wgrep-autoloads
which-key-autoloads wiki-summary-autoloads wisi-autoloads
with-editor-autoloads info compat-autoloads yaml-mode-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads zmq-autoloads
zygospore-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/pgtk-win pgtk-win term/common-win pgtk-dnd
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 dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 5823950 2655728)
 (symbols 48 92050 42)
 (strings 32 704340 353349)
 (string-bytes 1 23613416)
 (vectors 16 218114)
 (vector-slots 8 4567806 3485723)
 (floats 8 1718 5313)
 (intervals 56 324283 252876)
 (buffers 984 387))
-- 
Joakim Verona
joakim@verona.se





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-11-16 13:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-25 19:35 bug#74016: 29.4; emacs-pgtk doesnt receive numpad events on wayland(sway) joakim
2024-11-02 11:29 ` Eli Zaretskii
2024-11-02 13:34   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-16 13:45     ` Eli Zaretskii
2024-11-03  9:02   ` joakim

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).