unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
@ 2024-02-04 20:49 Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-05 12:48 ` Eli Zaretskii
       [not found] ` <87r0hp9d4x.fsf@protonmail.com>
  0 siblings, 2 replies; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-04 20:49 UTC (permalink / raw)
  To: 68930


Emacs confuses C-ω and C-Ω. This seems to happen regardless of the init file.
For instance, if started with a basic init containing only the lines

(define-key global-map (kbd "C-ω") 'kill-region)
(define-key global-map (kbd "C-Ω") 'copy-to-register)

the commands are recalled by exactly the reversed key combinations, C-Ω
kills and C-ω copies to register. Both Ω and ω are here in the xkb-map
of the keyboard layout as unicode characters, U03A9 and U03C9
respectively. I tried using C-Ω and C-ω as key combinations for commands
in the Firefox-plugin Tridactyl to see if it confuses them as well, but
it seems to be able to distinguish them.


In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2023-12-29 built on Archlaptop
Repository revision: 291763feca34174290345055a6748436839f7606
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101010
System Description: Arch Linux

Configured using:
 'configure --with-x-toolkit=no'

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

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

Major mode: VTerm

Minor modes in effect:
  async-bytecomp-package-mode: t
  winner-mode: t
  Daselt-mode: t
  citar-embark-mode: t
  recentf-mode: t
  windmove-mode: t
  global-edit-server-edit-mode: t
  global-goto-address-mode: t
  goto-address-mode: t
  all-the-icons-completion-mode: t
  auto-insert-mode: t
  backward-forward-mode: t
  dynamic-completion-mode: t
  electric-pair-mode: t
  delete-selection-mode: t
  global-undo-tree-mode: t
  Info-breadcrumbs-in-mode-line-mode: t
  global-org-modern-mode: t
  fancy-compilation-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-aggressive-indent-mode: t
  corfu-prescient-mode: t
  global-corfu-mode: t
  corfu-mode: t
  vertico-prescient-mode: t
  marginalia-mode: t
  savehist-mode: t
  vertico-mode: t
  smart-mark-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  override-global-mode: t
  TeX-PDF-mode: t
  desktop-save-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  undelete-frame-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
~/.emacs.d/site-lisp/icicles/dired+ hides ~/.emacs.d/site-lisp/dired+
~/.emacs.d/site-lisp/icicles/bookmark+ hides /home/alex/.emacs.d/elpa/bookmark+-20230325.160624/bookmark+
/home/alex/.emacs.d/elpa/org-projectile-helm-20230817.801/org-projectile-helm hides /home/alex/.emacs.d/elpa/org-projectile-20230817.851/org-projectile-helm
/home/alex/.emacs.d/elpa/transient-20240121.2000/transient hides /usr/local/share/emacs/30.0.50/lisp/transient
/home/alex/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /usr/local/share/emacs/30.0.50/lisp/bind-key
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-lint
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-jump
/home/alex/.emacs.d/elpa/use-package-ensure-system-package-20221209.2013/use-package-ensure-system-package hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-ensure-system-package
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-ensure
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-diminish
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-delight hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-delight
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-core
/home/alex/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /usr/local/share/emacs/30.0.50/lisp/use-package/use-package-bind-key

Features:
(shadow emacsbug vc-hg vc-bzr tramp-cmds cal-move tramp-archive
tramp-gvfs zeroconf two-column helm-descbinds helm helm-global-bindings
helm-core async-bytecomp helm-source helm-multi-match helm-lib
buffer-move descr-text persp-mode info-look vterm term ehelp
vterm-module term/xterm xterm mode-local winner image-file
image-converter mm-archive tabify org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-attach emacsql-sqlite shr-color dictionary
external-completion dictionary-connection face-remap
display-line-numbers cus-start DEmacs DEmacs-basic cl-print debug
backtrace auto-yasnippet vertico-quick shortdoc url-cache misearch
multi-isearch dabbrev cape-char cape sort smiley gnus-cite mail-extr
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check gnus-async gnus-bcklg qp gnus-ml disp-table nndraft nnmh
nnmaildir nnfolder utf-7 network-stream gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-msg nntp gnus-cache citar-latex reftex-cite
reftex-parse vertico-directory consult-register citar-org oc-csl
citeproc citeproc-itemgetters citeproc-biblatex citeproc-bibtex
citeproc-cite citeproc-subbibs citeproc-sort citeproc-name
citeproc-formatters citeproc-number rst citeproc-proc citeproc-disamb
citeproc-itemdata citeproc-generic-elements citeproc-macro
citeproc-choose citeproc-date citeproc-context citeproc-prange
citeproc-style citeproc-locale citeproc-term f citeproc-rt citeproc-lib
citeproc-s s oc-basic tramp-cache time-stamp tramp-sh tramp trampver
tramp-integration tramp-message tramp-compat tramp-loaddefs mule-util
pdf-links pdf-isearch pdf-misc pdf-sync pdf-tools pdf-view pdf-cache
pdf-info tq pdf-util pdf-macs ol-eww ol-rmail ol-mhe ol-irc ol-info
ol-gnus nnselect ol-docview doc-view jka-compr ol-bibtex ol-bbdb ol-w3m
ol-doi org-link-doi mhtml-mode css-mode-expansions css-mode
js-mode-expansions js c-ts-common cc-mode-expansions cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
html-mode-expansions sgml-mode facemenu sh-script smie treesit
executable citar-capf citar-embark citar citar-file citar-cache
citar-format parsebib reftex-dcr reftex-auc latex-extra font-latex
latexenc preview tex-mode rainbow-delimiters paredit-everywhere paredit
eww mm-url vc-git vc-dispatcher dired-aux files-x image-mode exif
smtpmail gnus-registry registry gnus-art mm-uu mml2015 mm-view mml-smime
smime dig gnus-sum shr pixel-fill kinsoku gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source nnoo gnus-spec
gnus-win gnus-int gnus-range imap rfc2104 utf7 gnus nnheader range
recentf tree-widget windmove edit-server epa-file goto-addr
all-the-icons-completion autoinsert backward-forward completion
elec-pair wc-mode delsel undo-tree queue menu-bar+ misc-cmds rect
bookmark+ bookmark+-key bookmark+-bmu info+ fit-frame help-fns+
wid-edit+ bookmark+-lit pp+ dired-x crosshairs col-highlight vline
hl-line+ bookmark+-1 thingatpt+ bookmark+-mac org-super-links org-modern
embark-org the-org-mode-expansions org-element org-persist xdg org-id
org-refile avl-tree 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 ob-emacs-lisp ob-core ob-eval org-cycle org-table
ol org-fold org-fold-core org-keys oc org-loaddefs cal-menu calendar
cal-loaddefs org-version org-compat org-macs forge-list forge-commands
forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea
forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub url-http
url-gw nsm url-auth gnutls forge-notify forge-revnote forge-pullreq
forge-issue forge-topic yaml parse-time bug-reference forge-post
markdown-mode forge-repo forge forge-core forge-db closql
emacsql-sqlite-common emacsql emacsql-compiler yaml-mode-expansions
yaml-mode fancy-compilation font-utils unicode-fonts yasnippet elgrep
async grep dedicated auto-dictionary flyspell ispell all-the-icons-dired
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons tabgo
tab-line avy dired-quick-sort hydra lv ls-lisp aggressive-indent
back-button visible-mark nav-flash pulse smartrep biblio biblio-download
biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref
biblio-arxiv timezone biblio-doi biblio-core let-alist url-queue
url-file ido hl-line bibtex iso8601 kind-icon svg-lib svg dom
corfu-terminal popon corfu-prescient corfu vertico-prescient prescient
char-fold embark-consult consult magit-bookmark bookmark embark
marginalia orderless persistent-soft list-utils pcache eieio-base
savehist finder-inf vertico-buffer vertico-mouse vertico smartparens
loadhist expand-region text-mode-expansions latex-mode-expansions
er-basic-expansions expand-region-core expand-region-custom
easy-kill-extras easy-kill-line-edge easy-kill-buffer easy-kill-to-char
easy-kill smart-mark use-package-ensure-system-package system-packages
rebinder gnus-dired 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 git-commit log-edit message
sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config
gnus-util time-date mailabbrev mail-utils gmm-utils mailheader pcvs-util
add-log magit-core magit-autorevert autorevert filenotify magit-margin
magit-transient magit-process with-editor shell pcomplete server
magit-mode transient magit-git magit-base magit-section format-spec
cursor-sensor dash compat auto-install ffap find-func dired
dired-loaddefs quelpa-use-package quelpa mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
help-fns radix-tree use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key use-package-core
cdlatex reftex reftex-loaddefs reftex-vars latex edmacro kmacro
latex-flymake flymake tex-ispell tex-style tex dbus xml crm texmathp
add-tex-envs slime-fancy slime-indentation slime-cl-indent cl-indent
slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree slime-scratch slime-presentations advice
bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl elp slime-parse slime
derived comp comp-cstr cl-extra help-mode warnings easy-mmode lisp-mnt
gud apropos etags fileloop generator xref project arc-mode archive-mode
noutline outline hyperspec thingatpt slime-autoloads desktop frameset
icicles-install cl sanityinc-tomorrow-bright-theme
color-theme-sanityinc-tomorrow color cus-edit pp cus-load icons wid-edit
compile text-property-search comint ansi-osc ansi-color ring comp-run
comp-common rx aggressive-indent-autoloads all-autoloads
all-the-icons-dired-autoloads auctex-cluttex-autoloads
auto-dictionary-autoloads back-button-autoloads backup-walker-autoloads
buffer-move-autoloads bug-hunter-autoloads cape-autoloads
cdlatex-autoloads citar-embark-autoloads citar-org-roam-autoloads
citar-autoloads color-theme-sanityinc-tomorrow-autoloads
consult-org-roam-autoloads corfu-prescient-autoloads
corfu-terminal-autoloads corfu-autoloads crontab-mode-autoloads
dedicated-autoloads default-text-scale-autoloads deft-autoloads
diminish-autoloads dream-theme-autoloads easy-kill-extras-autoloads
elgrep-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads emms-autoloads expand-region-autoloads
fancy-compilation-autoloads forge-autoloads closql-autoloads
ghub-autoloads helm-bibtex-autoloads bufler-autoloads burly-autoloads
helm-dictionary-autoloads helm-icons-autoloads helm-swoop-autoloads
kind-icon-autoloads latex-extra-autoloads auctex-autoloads tex-site
marginalia-autoloads markdown-mode-autoloads mood-line-autoloads
helm-easymenu log4e-autoloads nav-flash-autoloads orderless-autoloads
org-modern-autoloads org-msg-autoloads org-noter-autoloads
helm-autoloads helm-core-autoloads async-autoloads org-ref-autoloads
citeproc-autoloads org-roam-bibtex-autoloads bibtex-completion-autoloads
biblio-autoloads biblio-core-autoloads f-autoloads org-roam-autoloads
emacsql-autoloads org-super-links-autoloads ox-pandoc-autoloads
parsebib-autoloads popon-autoloads popup-autoloads
pretty-hydra-autoloads smart-mark-autoloads smartparens-autoloads
smartrep-autoloads smudge-autoloads speed-type-autoloads
string-inflection-autoloads svg-lib-autoloads tabgo-autoloads
tablist-autoloads telega-autoloads all-the-icons-autoloads
treemacs-icons-dired-autoloads magit-autoloads pcase
magit-section-autoloads git-commit-autoloads transient-autoloads
persp-mode-autoloads projectile-autoloads treemacs-autoloads
treepy-autoloads try-autoloads unicode-fonts-autoloads
ucs-utils-autoloads font-utils-autoloads persistent-soft-autoloads
list-utils-autoloads pcache-autoloads
use-package-ensure-system-package-autoloads system-packages-autoloads
vertico-prescient-autoloads vertico-autoloads prescient-autoloads
visible-mark-autoloads vterm-autoloads w3m-load w3m-autoloads
wakib-keys-autoloads wfnames-autoloads with-editor-autoloads
compat-autoloads yaml-autoloads yaml-mode-autoloads yasnippet-autoloads
zotero-autoloads oauth-autoloads info dash-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/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 dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo xinput2 x multi-tty move-toolbar
make-network-process native-compile emacs)

Memory information:
((conses 16 3796681 2989815) (symbols 48 168096 19)
 (strings 32 732302 186197) (string-bytes 1 42897798)
 (vectors 16 222823) (vector-slots 8 5517819 1731974)
 (floats 8 9702 24106) (intervals 56 184303 45867) (buffers 992 350))






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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-04 20:49 bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-05 12:48 ` Eli Zaretskii
       [not found]   ` <878r3yalww.fsf@protonmail.com>
       [not found] ` <87r0hp9d4x.fsf@protonmail.com>
  1 sibling, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-02-05 12:48 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: 68930

> Date: Sun, 04 Feb 2024 20:49:26 +0000
> From:  Alexander Prähauser via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> 
> Emacs confuses C-ω and C-Ω. This seems to happen regardless of the init file.
> For instance, if started with a basic init containing only the lines
> 
> (define-key global-map (kbd "C-ω") 'kill-region)
> (define-key global-map (kbd "C-Ω") 'copy-to-register)
> 
> the commands are recalled by exactly the reversed key combinations, C-Ω
> kills and C-ω copies to register. Both Ω and ω are here in the xkb-map
> of the keyboard layout as unicode characters, U03A9 and U03C9
> respectively. I tried using C-Ω and C-ω as key combinations for commands
> in the Firefox-plugin Tridactyl to see if it confuses them as well, but
> it seems to be able to distinguish them.

What does "C-h l" say about what keys Emacs received?





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
       [not found]   ` <878r3yalww.fsf@protonmail.com>
@ 2024-02-05 19:10     ` Eli Zaretskii
  2024-02-05 23:00       ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-02-05 19:10 UTC (permalink / raw)
  To: Alexander Prähauser, Po Lu; +Cc: 68930

[Please use Reply All to reply, to keep the bug tracker CC'ed.]

> Date: Mon, 05 Feb 2024 16:58:02 +0000
> From: Alexander Prähauser <ahprae@protonmail.com>
> 
> "Eli Zaretskii" <eliz@gnu.org> writes:
> 
> >> Date: Sun, 04 Feb 2024 20:49:26 +0000
> >> From:  Alexander Prähauser via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> >>
> >>
> >> Emacs confuses C-ω and C-Ω. This seems to happen regardless of the init file.
> >> For instance, if started with a basic init containing only the lines
> >>
> >> (define-key global-map (kbd "C-ω") 'kill-region)
> >> (define-key global-map (kbd "C-Ω") 'copy-to-register)
> >>
> >> the commands are recalled by exactly the reversed key combinations, C-Ω
> >> kills and C-ω copies to register. Both Ω and ω are here in the xkb-map
> >> of the keyboard layout as unicode characters, U03A9 and U03C9
> >> respectively. I tried using C-Ω and C-ω as key combinations for commands
> >> in the Firefox-plugin Tridactyl to see if it confuses them as well, but
> >> it seems to be able to distinguish them.
> >
> > What does "C-h l" say about what keys Emacs received?
> 
> It also lists them the wrong way around, so if I type C-ω it lists C-Ω
> and vice versa.

So are you sure nothing is wrong with your keyboard setup?

Adding Po Lu in case he has some ideas or comments.





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-05 19:10     ` Eli Zaretskii
@ 2024-02-05 23:00       ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06  0:07         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-05 23:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Po Lu, 68930

"Eli Zaretskii" <eliz@gnu.org> writes:

> [Please use Reply All to reply, to keep the bug tracker CC'ed.]
>
>> Date: Mon, 05 Feb 2024 16:58:02 +0000
>> From: Alexander Prähauser <ahprae@protonmail.com>
>>
>> "Eli Zaretskii" <eliz@gnu.org> writes:
>>
>> >> Date: Sun, 04 Feb 2024 20:49:26 +0000
>> >> From:  Alexander Prähauser via "Bug reports for GNU Emacs,
>> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> >>
>> >>
>> >> Emacs confuses C-ω and C-Ω. This seems to happen regardless of the init file.
>> >> For instance, if started with a basic init containing only the lines
>> >>
>> >> (define-key global-map (kbd "C-ω") 'kill-region)
>> >> (define-key global-map (kbd "C-Ω") 'copy-to-register)
>> >>
>> >> the commands are recalled by exactly the reversed key combinations, C-Ω
>> >> kills and C-ω copies to register. Both Ω and ω are here in the xkb-map
>> >> of the keyboard layout as unicode characters, U03A9 and U03C9
>> >> respectively. I tried using C-Ω and C-ω as key combinations for commands
>> >> in the Firefox-plugin Tridactyl to see if it confuses them as well, but
>> >> it seems to be able to distinguish them.
>> >
>> > What does "C-h l" say about what keys Emacs received?
>>
>> It also lists them the wrong way around, so if I type C-ω it lists C-Ω
>> and vice versa.
>
> So are you sure nothing is wrong with your keyboard setup?
>
> Adding Po Lu in case he has some ideas or comments.


Yes, as I said, I tried the same shortcuts with Tridactyl to see if they
would work there, and they did. I've now changed the xkb map to type ω
and Ω through greek_omega and greek_OMEGA and Emacs keeps typing them
normally but switching them up in C-ω and C-Ω keybinds. 






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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-05 23:00       ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06  0:07         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06  4:11           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06  0:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Po Lu, 68930

Alexander Prähauser <ahprae@protonmail.com> writes:

> "Eli Zaretskii" <eliz@gnu.org> writes:
>
>> [Please use Reply All to reply, to keep the bug tracker CC'ed.]
>>
>>> Date: Mon, 05 Feb 2024 16:58:02 +0000
>>> From: Alexander Prähauser <ahprae@protonmail.com>
>>>
>>> "Eli Zaretskii" <eliz@gnu.org> writes:
>>>
>>> >> Date: Sun, 04 Feb 2024 20:49:26 +0000
>>> >> From:  Alexander Prähauser via "Bug reports for GNU Emacs,
>>> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>>> >>
>>> >>
>>> >> Emacs confuses C-ω and C-Ω. This seems to happen regardless of the init file.
>>> >> For instance, if started with a basic init containing only the lines
>>> >>
>>> >> (define-key global-map (kbd "C-ω") 'kill-region)
>>> >> (define-key global-map (kbd "C-Ω") 'copy-to-register)
>>> >>
>>> >> the commands are recalled by exactly the reversed key combinations, C-Ω
>>> >> kills and C-ω copies to register. Both Ω and ω are here in the xkb-map
>>> >> of the keyboard layout as unicode characters, U03A9 and U03C9
>>> >> respectively. I tried using C-Ω and C-ω as key combinations for commands
>>> >> in the Firefox-plugin Tridactyl to see if it confuses them as well, but
>>> >> it seems to be able to distinguish them.
>>> >
>>> > What does "C-h l" say about what keys Emacs received?
>>>
>>> It also lists them the wrong way around, so if I type C-ω it lists C-Ω
>>> and vice versa.
>>
>> So are you sure nothing is wrong with your keyboard setup?
>>
>> Adding Po Lu in case he has some ideas or comments.
>
>
> Yes, as I said, I tried the same shortcuts with Tridactyl to see if they
> would work there, and they did. I've now changed the xkb map to type ω
> and Ω through greek_omega and greek_OMEGA and Emacs keeps typing them
> normally but switching them up in C-ω and C-Ω keybinds. 

I just found that the same thing happens for   C-δ and C-Δ, where both are
in my keyboard layout file as Unicode letters, U03B4 and U0394 respectively.






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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06  0:07         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06  4:11           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 12:33             ` Eli Zaretskii
  2024-02-06 12:34             ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 17+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06  4:11 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: Eli Zaretskii, 68930

Alexander Prähauser <ahprae@protonmail.com> writes:

> I just found that the same thing happens for   C-δ and C-Δ, where both are
> in my keyboard layout file as Unicode letters, U03B4 and U0394 respectively.

Why is this a bug?  The characters which are "conflated" are pairs of
lower-case and upper-case characters, upper-case characters in which
Emacs decapitalizes when modifiers aside from Shift are depressed, so
that commands bound to lower-case characters with modifiers are executed
even if latches such as Caps Lock are activated.





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06  4:11           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 12:33             ` Eli Zaretskii
  2024-02-06 12:57               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 12:34             ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-02-06 12:33 UTC (permalink / raw)
  To: Po Lu; +Cc: ahprae, 68930

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  68930@debbugs.gnu.org
> Date: Tue, 06 Feb 2024 12:11:56 +0800
> 
> Alexander Prähauser <ahprae@protonmail.com> writes:
> 
> > I just found that the same thing happens for   C-δ and C-Δ, where both are
> > in my keyboard layout file as Unicode letters, U03B4 and U0394 respectively.
> 
> Why is this a bug?  The characters which are "conflated" are pairs of
> lower-case and upper-case characters, upper-case characters in which
> Emacs decapitalizes when modifiers aside from Shift are depressed, so
> that commands bound to lower-case characters with modifiers are executed
> even if latches such as Caps Lock are activated.

I think Alexander says that the bindings are reversed, i.e. C-Δ
invokes the binding of C-δ and vice versa.  That's the bug he is
complaining about.  Your description seems to suggest that both keys
should have invoked the same command, not two different commands
exactly reversed from how they were bound.

Or what am I missing?





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06  4:11           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 12:33             ` Eli Zaretskii
@ 2024-02-06 12:34             ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 0 replies; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 12:34 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, 68930

"Po Lu" <luangruo@yahoo.com> writes:

> Alexander Prähauser <ahprae@protonmail.com> writes:
>
>> I just found that the same thing happens for   C-δ and C-Δ, where both are
>> in my keyboard layout file as Unicode letters, U03B4 and U0394 respectively.
>
> Why is this a bug?  The characters which are "conflated" are pairs of
> lower-case and upper-case characters, upper-case characters in which
> Emacs decapitalizes when modifiers aside from Shift are depressed, so
> that commands bound to lower-case characters with modifiers are executed
> even if latches such as Caps Lock are activated.

You're right in that, if I have the symbols in xkb as greek_lowercase
and greek_UPPERCASE, they both act as the lowercase version in keybinds.
However, when I type them as Unicode, they don't both act as lowercase,
but the uppercase version acts as lowercase and vice versa. Also, I
don't want them to both to act as lowercase, since I have them on higher
layers of my xkb layout, similarly to the
[[https://en.wikipedia.org/wiki/Neo_(keyboard_layout)][Neo layout]],
which in Linux are accessed using the Num, Alt and Shift modifier, so
that I can't, say, input C-S-ω because pressing shift switches the
keyboard layer. I'm pretty sure that's why I switched to using Unicode
in the first place.






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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06 12:33             ` Eli Zaretskii
@ 2024-02-06 12:57               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 13:11                 ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 12:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: ahprae, 68930

Eli Zaretskii <eliz@gnu.org> writes:

> I think Alexander says that the bindings are reversed, i.e. C-Δ
> invokes the binding of C-δ and vice versa.  That's the bug he is
> complaining about.  Your description seems to suggest that both keys
> should have invoked the same command, not two different commands
> exactly reversed from how they were bound.

If so, I can't reproduce the bug by binding keys to the characters he
specified in his e-mail.  Alexander, please send the lines in your XKB
keymap which bind those characters, or alternatively run:

  xkbcomp :0 test.xkb

and attach the test.xkb file produced.  Thanks in advance.





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06 12:57               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 13:11                 ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 13:22                   ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 13:11 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, 68930

[-- Attachment #1: Type: text/plain, Size: 1522 bytes --]

"Po Lu" <luangruo@yahoo.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> I think Alexander says that the bindings are reversed, i.e. C-Δ
>> invokes the binding of C-δ and vice versa.  That's the bug he is
>> complaining about.  Your description seems to suggest that both keys
>> should have invoked the same command, not two different commands
>> exactly reversed from how they were bound.
>
> If so, I can't reproduce the bug by binding keys to the characters he
> specified in his e-mail.  Alexander, please send the lines in your XKB
> keymap which bind those characters, or alternatively run:
>
>   xkbcomp :0 test.xkb
>
> and attach the test.xkb file produced.  Thanks in advance.

The line for, for instance, ω and Ω is

    key <AB09> { [ w,                       W,
    EuroSign,                U03C9,                   9,
    U221E,                   U03A9,            U1F61F                 ]
    };

Here, lowercase Greek symbols are on the fourth layer and uppercase on
the seventh. I also included the test.xkb file that you mentioned. I
just had the thought that maybe the behavior can be explained by the way
higher layers are accessed through modifiers: I looked it up, and
usually the fourth layer is accessed through CapsLock and RightShift and
the seventh through CapsLock and RightAlt, but I made it so that the
fourth layer can also be accessed through Backslash and Grave, and if I
use either combination to type C-ω it acts as if I was typing C-Ω.


[-- Attachment #2: test.xkb --]
[-- Type: application/octet-stream, Size: 71588 bytes --]

xkb_keymap {
xkb_keycodes "evdev+aliases(qwerty)" {
    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";
    virtual indicator 12 = "Shift Lock";
    virtual indicator 13 = "Group 2";
    virtual 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 <LatY> = <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 <LatZ> = <AB01>;
    alias <LatX> = <AB02>;
    alias <LatC> = <AB03>;
    alias <LatV> = <AB04>;
    alias <LatB> = <AB05>;
    alias <LatN> = <AB06>;
    alias <LatM> = <AB07>;
};

xkb_types "complete" {

    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+Lock]= Level1;
        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[Shift+NumLock]= Level1;
        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 "complete" {

    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=Overlay1);
    };
    interpret Overlay2_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay2);
    };
    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=LevelFive);
    };
    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);
    };
    group 2 = Mod5;
    group 3 = Mod5;
    group 4 = Mod5;
    indicator "Caps Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Lock;
    };
    indicator "Num Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= NumLock;
    };
    indicator "Scroll Lock" {
        whichModState= locked;
        modifiers= ScrollLock;
    };
    indicator "Shift Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Shift;
    };
    indicator "Group 2" {
        !allowExplicit;
        groups= 0xfe;
    };
    indicator "Mouse Keys" {
        indicatorDrivesKeyboard;
        controls= mouseKeys;
    };
};

xkb_symbols "pc+daselt(daselt)+inet(evdev)+compose(sclk)" {

    name[group1]="German (Daselt)";

    key  <ESC> {         [          Escape ] };
    key <AE01> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L ]
    };
    key <AE02> {
        type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               2,         section,     twosuperior,    twosubscript,    ordmasculine,        NoSymbol,       logicalor,        NoSymbol ]
    };
    key <AE03> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [             Tab,             Tab,   threesuperior,  threesubscript,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    key <AE04> {
        type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               4,  guillemetright,           U203A,    femalesymbol,        NoSymbol,        NoSymbol,           U22A5,        NoSymbol ]
    };
    key <AE05> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [       Control_L,           U2113,   threesuperior,      malesymbol,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    key <AE06> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [          Meta_L,           U2113,   threesuperior,           U26A5,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    key <AE07> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [       BackSpace,           U2113,   threesuperior,           U03F0,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    key <AE08> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level5_Shift ]
    };
    key <AE09> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [            KP_9,           U2113,   threesuperior,           U27E9,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    key <AE10> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [         Hyper_L,         Hyper_L,         Hyper_L,         Hyper_L,         Hyper_L,         Hyper_L,         Hyper_L,         Hyper_L ]
    };
    key <AE11> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L,         Super_L ]
    };
    key <AE12> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [           colon,           U2113,   threesuperior, dead_abovereversedcomma,      numerosign,  threesubscript,      logicaland,        NoSymbol ]
    };
    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= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               p,               P,        ellipsis,        Greek_pi,         KP_Home,           U27E1,        Greek_PI,       U0001F970 ]
    };
    key <AD02> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               u,               U,           U27E8,           U0380,          emdash,           U21A4,           U0471,           U2764 ]
    };
    key <AD03> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [        quotedbl,      apostrophe,     bracketleft,           U03DD,           KP_Up,           U2191,       U0001D53C,       U0001F607 ]
    };
    key <AD04> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [           comma,           comma,       semicolon,           U0372,       BackSpace,           U2190,           U2A3E,       U0001F601 ]
    };
    key <AD05> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               q,               Q,        division,           U03D8,          KP_End,           U2197,           U211A,       U0001F605 ]
    };
    key <AD06> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               v,               V,        multiply,           U03E0,     KP_Subtract,           U2196,       U0001D54D,       U0001F923 ]
    };
    key <AD07> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               c,               C,           colon,       Greek_chi,               4,           U2192,           U2102,       U0001F644 ]
    };
    key <AD08> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               l,               L,           equal,     Greek_lamda,               5,           U2193,     Greek_LAMDA,       U0001F609 ]
    };
    key <AD09> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               m,               M,       ampersand,        Greek_mu,               6,           U21A6,           U029A,       U0001F48B ]
    };
    key <AD10> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               f,               F,      parenright,       Greek_phi,          KP_Add,       elementof,       Greek_PHI,       U0001F618 ]
    };
    key <AD11> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               j,               J,    bracketright,           U03DF,     KP_Multiply,           U2218,           thorn,       U0001F60D ]
    };
    key <AD12> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [      dead_grave,    dead_cedilla,           U27E9, dead_abovecomma, dead_doubleacute,  dead_abovering,      dead_breve,       U0001F972 ]
    };
    key <RTRN> {         [          Return ] };
    key <LCTL> {         [       Control_L ] };
    key <AC01> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               h,               H,           U2200,       Greek_eta,        KP_Prior,           U2223,           U210D,       U0001F60F ]
    };
    key <AC02> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               i,               I,           slash,      Greek_iota,         KP_Left, partialderivative,       U0001D540,       U0001F62C ]
    };
    key <AC03> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               e,               E,       braceleft,   Greek_epsilon,         KP_Down,           U2227,       U0001D538,       U0001F44D ]
    };
    key <AC04> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               a,               A,       parenleft,     Greek_alpha,        KP_Right,            less,           U2135,           U270B ]
    };
    key <AC05> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               o,               O,           minus,   Greek_omicron,         KP_Next,           U2210,           U2207,       U0001F44F ]
    };
    key <AC06> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               d,               D,            plus,     Greek_delta,        KP_Enter,           U220F,           U0394,       U0001F64F ]
    };
    key <AC07> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               t,               T,          dollar,       Greek_tau,               1,         greater,       U0001D54B,       U0001F44C ]
    };
    key <AC08> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               r,               R,        asterisk,       Greek_rho,               2,           U2228,           U211D,       U0001F44E ]
    };
    key <AC09> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               n,               N,       backslash,        Greek_nu,               3,           U222B,           U2115,       U0001F928 ]
    };
    key <AC10> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               s,               S,           U2203,     Greek_sigma,      KP_Decimal,           U2225,     Greek_SIGMA,       U0001FAE1 ]
    };
    key <AC11> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <TLDE> {
        type= "ONE_LEVEL",
        symbols[Group1]= [         Shift_L ]
    };
    key <LFSH> {
        type= "TWO_LEVEL",
        symbols[Group1]= [         Shift_L,       Caps_Lock ]
    };
    key <BKSL> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <AB01> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               k,               K,           U1E9E,     Greek_kappa,          Delete,           U22C4,       U0001D542,       U0001F631 ]
    };
    key <AB02> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               y,               Y,      numbersign,   Greek_upsilon,           U2219,        emptyset,             eth,       U0001F635 ]
    };
    key <AB03> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               x,               X,             bar,        Greek_xi,         notsign,           U2216,        Greek_XI,       U0001F914 ]
    };
    key <AB04> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [          period,          period,      underscore,           U03DE,             Tab,           U2198,           U2261,       U0001F60C ]
    };
    key <AB05> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [           grave,      dead_caron,              at,       Greek_psi,       paragraph,           U2194,       Greek_PSI,       U0001F971 ]
    };
    key <AB06> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               b,               B, dead_circumflex,      Greek_beta,    KP_Separator,           U2199,           U05D1,       U0001F614 ]
    };
    key <AB07> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               g,               G,      asciitilde,           U03B3,               7,         radical,     Greek_GAMMA,       U0001F92E ]
    };
    key <AB08> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               z,               Z,         percent,      Greek_zeta,               8,           U2211,           U2124,       U0001F641 ]
    };
    key <AB09> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [               w,               W,        EuroSign,           U03C9,               9,           U221E,           U03A9,       U0001F61F ]
    };
    key <AB10> {
        type= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [          exclam,          exclam,      braceright,     Greek_theta,       KP_Divide,           U22CA,     Greek_THETA,       U0001F62D ]
    };
    key <RTSH> {
        type= "TWO_LEVEL",
        symbols[Group1]= [         Shift_R,       Caps_Lock ]
    };
    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_ALPHABETIC_LEVEL_FIVE_LOCK",
        symbols[Group1]= [             Tab,    dead_cedilla,  dead_abovering,   lessthanequal,  dead_diaeresis, dead_abovereversedcomma,     dead_macron,        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]= [        question,        question,         section, Greek_finalsmallsigma,          Escape,           U22C9,       U0001D55C,       U0001F634 ]
    };
    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> {         [         Super_R ] };
    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 Mod4 { <AE01> };
    modifier_map Control { <AE05> };
    modifier_map Mod1 { <AE06> };
    modifier_map Mod2 { <AE10> };
    modifier_map Shift { <TLDE> };
    modifier_map Lock { <LFSH> };
    modifier_map Shift { <RTSH> };
    modifier_map Mod1 { <LALT> };
    modifier_map Mod5 { <LVL3> };
    modifier_map Control { <RCTL> };
    modifier_map Mod4 { <RWIN> };
    modifier_map Mod3 { <LVL5> };
    modifier_map Mod1 { <ALT> };
    modifier_map Mod1 { <META> };
    modifier_map Mod4 { <SUPR> };
    modifier_map Mod4 { <HYPR> };
};

xkb_geometry "pc(pc105)" {

    width=       470;
    height=      180;

    alias <AC00> = <CAPS>;
    alias <AA00> = <LCTL>;

    baseColor=   "white";
    labelColor=  "black";
    xfont=       "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
    description= "Generic 105-key PC";

    shape "NORM" {
        corner= 1,
        { [  18,  18 ] },
        { [   2,   1 ], [  16,  16 ] }
    };
    shape "BKSP" {
        corner= 1,
        { [  38,  18 ] },
        { [   2,   1 ], [  36,  16 ] }
    };
    shape "TABK" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "BKSL" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "RTRN" {
        corner= 1,
        { [   0,   0 ], [  28,   0 ], [  28,  37 ], [   5,  37 ],
          [   5,  18 ], [   0,  18 ] },
        { [   2,   1 ], [  26,   1 ], [  26,  35 ], [   7,  35 ],
          [   7,  16 ], [   2,  16 ] },
        approx= { [   5,   0 ], [  28,  37 ] }
    };
    shape "CAPS" {
        corner= 1,
        { [  33,  18 ] },
        { [   2,   1 ], [  31,  16 ] }
    };
    shape "LFSH" {
        corner= 1,
        { [  25,  18 ] },
        { [   2,   1 ], [  23,  16 ] }
    };
    shape "RTSH" {
        corner= 1,
        { [  50,  18 ] },
        { [   2,   1 ], [  48,  16 ] }
    };
    shape "MODK" {
        corner= 1,
        { [  27,  18 ] },
        { [   2,   1 ], [  25,  16 ] }
    };
    shape "SMOD" {
        corner= 1,
        { [  23,  18 ] },
        { [   2,   1 ], [  21,  16 ] }
    };
    shape "SPCE" {
        corner= 1,
        { [ 113,  18 ] },
        { [   2,   1 ], [ 111,  16 ] }
    };
    shape "KP0" {
        corner= 1,
        { [  37,  18 ] },
        { [   2,   1 ], [  35,  16 ] }
    };
    shape "KPAD" {
        corner= 1,
        { [  18,  37 ] },
        { [   2,   1 ], [  16,  35 ] }
    };
    shape "LEDS" { { [  75,  20 ] } };
    shape "LED" { { [   5,   1 ] } };
    section "Function" {
        key.color= "grey20";
        priority=  7;
        top=       22;
        left=      19;
        width=     351;
        height=    19;
        row {
            top=  1;
            left= 1;
            keys {
                {  <ESC>, "NORM",   1 },
                { <FK01>, "NORM",  20, color="white" },
                { <FK02>, "NORM",   1, color="white" },
                { <FK03>, "NORM",   1, color="white" },
                { <FK04>, "NORM",   1, color="white" },
                { <FK05>, "NORM",  11, color="white" },
                { <FK06>, "NORM",   1, color="white" },
                { <FK07>, "NORM",   1, color="white" },
                { <FK08>, "NORM",   1, color="white" },
                { <FK09>, "NORM",  11, color="white" },
                { <FK10>, "NORM",   1, color="white" },
                { <FK11>, "NORM",   1, color="white" },
                { <FK12>, "NORM",   1, color="white" },
                { <PRSC>, "NORM",   8, color="white" },
                { <SCLK>, "NORM",   1, color="white" },
                { <PAUS>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Function" section

    section "Alpha" {
        key.color= "white";
        priority=  8;
        top=       61;
        left=      19;
        width=     287;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <TLDE>, "NORM",   1 }, { <AE01>, "NORM",   1 },
                { <AE02>, "NORM",   1 }, { <AE03>, "NORM",   1 },
                { <AE04>, "NORM",   1 }, { <AE05>, "NORM",   1 },
                { <AE06>, "NORM",   1 }, { <AE07>, "NORM",   1 },
                { <AE08>, "NORM",   1 }, { <AE09>, "NORM",   1 },
                { <AE10>, "NORM",   1 }, { <AE11>, "NORM",   1 },
                { <AE12>, "NORM",   1 },
                { <BKSP>, "BKSP",   1, color="grey20" }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <TAB>, "TABK",   1, color="grey20" },
                { <AD01>, "NORM",   1 }, { <AD02>, "NORM",   1 },
                { <AD03>, "NORM",   1 }, { <AD04>, "NORM",   1 },
                { <AD05>, "NORM",   1 }, { <AD06>, "NORM",   1 },
                { <AD07>, "NORM",   1 }, { <AD08>, "NORM",   1 },
                { <AD09>, "NORM",   1 }, { <AD10>, "NORM",   1 },
                { <AD11>, "NORM",   1 }, { <AD12>, "NORM",   1 },
                { <RTRN>, "RTRN",   1, color="grey20" }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                { <CAPS>, "CAPS",   1, color="grey20" },
                { <AC01>, "NORM",   1 }, { <AC02>, "NORM",   1 },
                { <AC03>, "NORM",   1 }, { <AC04>, "NORM",   1 },
                { <AC05>, "NORM",   1 }, { <AC06>, "NORM",   1 },
                { <AC07>, "NORM",   1 }, { <AC08>, "NORM",   1 },
                { <AC09>, "NORM",   1 }, { <AC10>, "NORM",   1 },
                { <AC11>, "NORM",   1 }, { <BKSL>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                { <LFSH>, "LFSH",   1, color="grey20" },
                { <LSGT>, "NORM",   1 }, { <AB01>, "NORM",   1 },
                { <AB02>, "NORM",   1 }, { <AB03>, "NORM",   1 },
                { <AB04>, "NORM",   1 }, { <AB05>, "NORM",   1 },
                { <AB06>, "NORM",   1 }, { <AB07>, "NORM",   1 },
                { <AB08>, "NORM",   1 }, { <AB09>, "NORM",   1 },
                { <AB10>, "NORM",   1 },
                { <RTSH>, "RTSH",   1, color="grey20" }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LCTL>, "MODK",   1, color="grey20" },
                { <LWIN>, "SMOD",   1, color="grey20" },
                { <LALT>, "SMOD",   1, color="grey20" },
                { <SPCE>, "SPCE",   1 },
                { <RALT>, "SMOD",   1, color="grey20" },
                { <RWIN>, "SMOD",   1, color="grey20" },
                { <MENU>, "SMOD",   1, color="grey20" },
                { <RCTL>, "SMOD",   1, color="grey20" }
            };
        };
    }; // End of "Alpha" section

    section "Editing" {
        key.color= "grey20";
        priority=  9;
        top=       61;
        left=      312;
        width=     58;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                {  <INS>, "NORM",   1 }, { <HOME>, "NORM",   1 },
                { <PGUP>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                { <DELE>, "NORM",   1 }, {  <END>, "NORM",   1 },
                { <PGDN>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 20;
            keys {
                {   <UP>, "NORM",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LEFT>, "NORM",   1 }, { <DOWN>, "NORM",   1 },
                { <RGHT>, "NORM",   1 }
            };
        };
    }; // End of "Editing" section

    section "Keypad" {
        key.color= "grey20";
        priority=  10;
        top=       61;
        left=      376;
        width=     77;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <NMLK>, "NORM",   1 }, { <KPDV>, "NORM",   1 },
                { <KPMU>, "NORM",   1 }, { <KPSU>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <KP7>, "NORM",   1, color="white" },
                {  <KP8>, "NORM",   1, color="white" },
                {  <KP9>, "NORM",   1, color="white" },
                { <KPAD>, "KPAD",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                {  <KP4>, "NORM",   1, color="white" },
                {  <KP5>, "NORM",   1, color="white" },
                {  <KP6>, "NORM",   1, color="white" }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                {  <KP1>, "NORM",   1, color="white" },
                {  <KP2>, "NORM",   1, color="white" },
                {  <KP3>, "NORM",   1, color="white" },
                { <KPEN>, "KPAD",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                {  <KP0>, "KP0",   1, color="white" },
                { <KPDL>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Keypad" section

    solid "LedPanel" {
        top=      22;
        left=     377;
        priority= 0;
        color= "grey10";
        shape= "LEDS";
    };
    indicator "Num Lock" {
        top=      37;
        left=     382;
        priority= 1;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Caps Lock" {
        top=      37;
        left=     407;
        priority= 2;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Scroll Lock" {
        top=      37;
        left=     433;
        priority= 3;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    text "NumLockLabel" {
        top=      25;
        left=     378;
        priority= 4;
        width=  19.8;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Num\nLock";
    };
    text "CapsLockLabel" {
        top=      25;
        left=     403;
        priority= 5;
        width=  26.4;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Caps\nLock";
    };
    text "ScrollLockLabel" {
        top=      25;
        left=     428;
        priority= 6;
        width=  39.6;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Scroll\nLock";
    };
};

};

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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06 13:11                 ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 13:22                   ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 14:16                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 13:22 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, 68930

[-- Attachment #1: Type: text/plain, Size: 1937 bytes --]

Alexander Prähauser <ahprae@protonmail.com> writes:

> "Po Lu" <luangruo@yahoo.com> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>> I think Alexander says that the bindings are reversed, i.e. C-Δ
>>> invokes the binding of C-δ and vice versa.  That's the bug he is
>>> complaining about.  Your description seems to suggest that both keys
>>> should have invoked the same command, not two different commands
>>> exactly reversed from how they were bound.
>>
>> If so, I can't reproduce the bug by binding keys to the characters he
>> specified in his e-mail.  Alexander, please send the lines in your XKB
>> keymap which bind those characters, or alternatively run:
>>
>>   xkbcomp :0 test.xkb
>>
>> and attach the test.xkb file produced.  Thanks in advance.
>
> The line for, for instance, ω and Ω is
>
>     key <AB09> { [ w,                       W,
>     EuroSign,                U03C9,                   9,
>     U221E,                   U03A9,            U1F61F                 ]
>     };
>
> Here, lowercase Greek symbols are on the fourth layer and uppercase on
> the seventh. I also included the test.xkb file that you mentioned. I
> just had the thought that maybe the behavior can be explained by the way
> higher layers are accessed through modifiers: I looked it up, and
> usually the fourth layer is accessed through CapsLock and RightShift and
> the seventh through CapsLock and RightAlt, but I made it so that the
> fourth layer can also be accessed through Backslash and Grave, and if I
> use either combination to type C-ω it acts as if I was typing C-Ω.

Here is the overall keyboard config I'm using, just in case. I'm using
Dual Function Keys to place modifiers, for lower-case Greek letters on
the E key and the 9 key and for uppercase Greek letters on Tab and
Rightbrace, and the xkb file is called Daselt, because that's what I
called the overall layout.


[-- Attachment #2: my-mappings.yaml --]
[-- Type: application/octet-stream, Size: 2661 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

  - KEY: KEY_LEFTSHIFT
    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 (Numbers and Arrows)

  - KEY: KEY_LEFTALT
    TAP: KEY_F15
    HOLD: KEY_RIGHTALT 

  - KEY: KEY_RIGHTALT
    TAP: KEY_F15
    HOLD: KEY_RIGHTALT 
    
# Level 5 modifiers (Lowercase Greek letters)

  - KEY: KEY_RIGHTSHIFT
    TAP: [KEY_CAPSLOCK, KEY_RIGHTSHIFT]
    HOLD: [KEY_CAPSLOCK, KEY_RIGHTSHIFT]

  - KEY: KEY_9
    TAP: KEY_E
    HOLD: [KEY_CAPSLOCK, KEY_RIGHTSHIFT]

  - KEY: KEY_E
    TAP: KEY_E
    HOLD: [KEY_BACKSLASH, KEY_GRAVE]

# Level 6 modifiers (Math symbols)

  - KEY: KEY_8
    TAP: KEY_SCROLLLOCK
    HOLD: [KEY_RIGHTALT, KEY_RIGHTSHIFT]

  - KEY: KEY_4
    TAP: KEY_SCROLLLOCK
    HOLD: [KEY_8, KEY_GRAVE]


# Level 7 modifiers (Uppercase Greek letters)

  - KEY: KEY_TAB
    TAP: KEY_RIGHTBRACE
    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_6
    HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_RIGHTSHIFT]

  - KEY: KEY_LEFTMETA
    TAP: KEY_6
    HOLD: [KEY_RIGHTALT, KEY_CAPSLOCK, KEY_LEFTSHIFT]

  - KEY: KEY_6
    TAP: KEY_6
    HOLD: KEY_6


# 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]


# Configure Hyper modifier keys
  - KEY: KEY_0
    TAP: KEY_TAB
    HOLD: KEY_1

  - KEY: KEY_1
    TAP: KEY_LEFTALT
    HOLD: KEY_1
    


# # Send CapsLock when holding 0

#   - KEY: KEY_0
#     TAP: KEY_0
#     HOLD: KEY_CAPSLOCK 


# Make Grave act as Minus
  - KEY: KEY_GRAVE
    TAP: KEY_MINUS
    HOLD: KEY_MINUS


# Make Keypad into one-handed navigation board
  # - KEY: KEY_KP1
  #   TAP: KEY_KP1
  #   HOLD: KEY_KP1

  - KEY: KEY_KP3
    TAP: KEY_RIGHTCTRL
    HOLD: KEY_RIGHTCTRL


    
# Put Hyper modifier on B-key
  - KEY: KEY_B
    TAP: KEY_B
    HOLD: KEY_0


# Put Meta modifier on 1-key
  - KEY: KEY_1
    TAP: KEY_1
    HOLD: KEY_1


[-- Attachment #3: daselt --]
[-- Type: application/octet-stream, Size: 22400 bytes --]

// -*-c-*-

// The Tilde/Grave key (while pressed) chooses the second shift level.
partial modifier_keys
xkb_symbols "tlde_switch" {
  key <TLDE> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ Shift_L ]
  };
};


// 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 ]
  };
};

// The AE08 key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ae08_switch" {
  key <AE08> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift ]
  };
};


partial alphanumeric_keys
xkb_symbols "daselt_base" {
  include "de(neo_base)"

    key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";


  key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";

  key <TLDE> { [ 1,                    Super_L,                    threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };


    key <AE01> { [ Super_L,                    Super_L,              Super_L,           Super_L,                Super_L,           Super_L,          Super_L,              Super_L                 ] };

    key <AE03> { [ Tab,                     Tab,                     threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };
						        				       			       			     			      
    key <AE05> { [ Control_L,               U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

    key <AE06> { [ Meta_L,                    U2113,                threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

    
    key <AE07> { [ BackSpace,               U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };
											      			       			                              											      			       			                              
    key <AE09> { [ KP_9,                    U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

    key <AE10> { [ Hyper_L,                    Hyper_L,              Hyper_L,           Hyper_L,                Hyper_L,           Hyper_L,          Hyper_L,              Hyper_L                 ] };

    key <AE11> { [ Super_L,                    Super_L,              Super_L,           Super_L,                Super_L,           Super_L,          Super_L,              Super_L                 ] };

    key <AE12> { [ colon,                    U2113,                  threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

											       			 		      				 
    key <AD01> { [ p,                       P,                       NoSymbol,                Greek_pi,	               KP_Home,	             U27E1,                Greek_PI,         U1F970                 ] };
    key <AD02> { [ u,                       U,                       U27E8,                   U0380,                   emdash,               U21A4,                   U0471,                U2764                 ] };
    key <AD03> { [ quotedbl,                apostrophe,              bracketleft,             U03DD,                   KP_Up,                U2191,                   U1D53C,         U1F607                ] };
    key <AD04> { [ comma,                   comma,                   semicolon,               U0372,                   BackSpace,            U2190,                   U2A3E,                 U1F601              ] };
    key <AD05> { [ q,			    Q,			     division,                U03D8,                   KP_End,               U2197,                   U211A,                U1F605                 ] };
    key <AD06> { [ v,                       V,                       multiply,                U03E0,                   KP_Subtract,                U2196,                   U1D54D,                U1F923                 ] };
    key <AD07> { [ c,                       C,                       colon,                   Greek_chi,               4,	             U2192,                   U2102,                U1F644                 ] };
    key <AD08> { [ l,                       L,                       equal,                   Greek_lambda,            5,		     U2193,                   Greek_LAMBDA,           U1F609                 ] };
    key <AD09> { [ m,                       M,                       ampersand,               Greek_mu,	               6,		     U21A6,                   U029A,         U1F48B                 ] };
    key <AD10> { [ f,                       F,                       parenright,              Greek_phi,               KP_Add,               U2208,                   Greek_PHI,              U1F618                 ] };
    key <AD11> { [ j,                       J,                       bracketright,            U03DF,                   KP_Multiply,          U2218,                   U00FE,                U1F60D                 ] };
    key <AD12> { [ dead_grave,              dead_cedilla,            U27E9,                   dead_psili,              dead_doubleacute,     dead_abovering,          dead_breve,           U1F972              ] };
    
    key <AC01> { [ h,                       H,                       U2200,                   Greek_eta,               KP_Prior,             U2223,                   U210D,                U1F60F                 ] };
    key <AC02> { [ i,                       I,                       slash,                   Greek_iota,              KP_Left,              partialderivative,       U1D540,                U1F62C                 ] };
    key <AC03> { [ e,                       E,                       braceleft,               Greek_epsilon,           KP_Down,              U2227,                   U1D538,               U1F44D                 ] };
    key <AC04> { [ a,                       A,                       parenleft,               Greek_alpha,             KP_Right,             U003C,                   U2135,                  U270B                 ] };
    key <AC05> { [ o,                       O,                       minus,                   Greek_omicron,           KP_Next,              U2210,                   U2207,                  U1F44F                 ] };
    key <AC06> { [ d,                       D,                       plus,                    Greek_delta,             KP_Enter,             U220F,                   U0394,             U1F64F                 ] };
    key <AC07> { [ t,                       T,                       dollar,                  Greek_tau,               1,                    U003E,                   U1D54B,                U1F44C                 ] };
    key <AC08> { [ r,                       R,                       asterisk,                Greek_rho,               2,		     U2228,                   NoSymbol,               U1F44E                 ] };
    key <AC09> { [ n,                       N,                       backslash,               Greek_nu,                3,		     U222B,                   U2115,                U1F928                 ] };
    key <AC10> { [ s,                       S,                       U2203,                   Greek_sigma,             KP_Decimal,           U2225,                   Greek_SIGMA,            U1FAE1                 ] };
    key <AC11> { [ quotedbl,                U1E9E,                   NoSymbol,                Greek_finalsmallsigma,   NoSymbol,             jot,                     NoSymbol,               NoSymbol              ] };
    
    key <LSGT> { [ question,                  question,                  U00A7,                   Greek_finalsmallsigma,   Escape,               U22C9,                   U1D55C,      U1F634                           ] };
    key <AB01> { [ k,                       K,                       U1E9E,                   Greek_kappa,             Delete,             U22C4,                   U1D542,                U1F631                 ] };
    key <AB02> { [ y,                       Y,                       numbersign,              Greek_upsilon,           U2219,                U2205,                   U00F0,                U1F635                 ] };
    key <AB03> { [ x,                       X,                       NoSymbol,                Greek_xi,                U00AC,                U2216,                   Greek_XI,              U1F914                 ] };
    key <AB04> { [ period,                  period,                  underscore,              U03DE,                   Tab,                  U2198,                   U2261,                 U1F60C                 ] };
    key <AB05> { [ grave,                   dead_caron,              at,                      Greek_psi,               U00B6,                U2194,                   Greek_PSI,              U1F971                 ] };
    key <AB06> { [ b,                       B,                       dead_circumflex,         Greek_beta,              KP_Separator,	     U2199,                   U05D1,                  U1F614                 ] };
    key <AB07> { [ g,                       G,                       asciitilde,              U03B3,                   7,		     radical,                 Greek_GAMMA,            U1F92E                 ] };
    key <AB08> { [ z,                       Z,                       percent,                 Greek_zeta,              8,	             U2211,                   U2124,                U1F641                 ] };
    key <AB09> { [ w,                       W,                       EuroSign,                U03C9,                   9,		     U221E,                   U03A9,            U1F61F                 ] };
    key <AB10> { [ exclam,                exclam,                   braceright,              Greek_theta,          KP_Divide,                U22CA,                   Greek_THETA,            U1F62D                 ] };
    
    key <BKSL> { [ dead_grave,              dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,       dead_dasia,              dead_macron,            NoSymbol               ] };


    key <KP1> { [ Tab,                      dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,       dead_dasia,              dead_macron,            NoSymbol                 ] };

    // key <KP3> { [ Control_L,             dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,          dead_dasia,           dead_macron,          NoSymbol                 ] };
};

partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "daselt" {

    include "daselt(daselt_base)"

    name[Group1]= "German (Daselt)";

    include "shift(both_capslock)"
    include "level3(caps_switch)"
    include "level3(bksl_switch)"
    include "level5(ralt_switch)"
    include "daselt(tlde_switch)"
    include "daselt(ac11_switch)"
    include "daselt(ae08_switch)"

    modifier_map Mod2 { Hyper_L };
    modifier_map Mod4 { Super_L };

};


partial alphanumeric_keys
xkb_symbols "daselt_cyrillic_base" {
  include "de(neo_base)"

    key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";


  key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";

  key <TLDE> { [ 1,                    Super_L,                    threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };


  key <AE01> { [ Super_L,                    Super_L,              Super_L,           Super_L,                Super_L,           Super_L,          Super_L,              Super_L                 ] };

  key <AE03> { [ Tab,                     Tab,                     threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };
						        				       			       			     			      
  key <AE05> { [ Control_L,               U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

  key <AE06> { [ Meta_L,                    U2113,                threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

    
  key <AE07> { [ BackSpace,               U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };
											      			       			                              											      			       			                              
  key <AE09> { [ KP_9,                    U2113,                   threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

  key <AE10> { [ Hyper_L,                    Hyper_L,              Hyper_L,           Hyper_L,                Hyper_L,           Hyper_L,          Hyper_L,              Hyper_L                 ] };

  key <AE11> { [ Super_L,                    Super_L,              Super_L,           Super_L,                Super_L,           Super_L,          Super_L,              Super_L                 ] };

  key <AE12> { [ colon,                    U2113,                  threesuperior,           NoSymbol,                numerosign,           threesubscript,          logicaland,              NoSymbol                 ] };

											       			 		      				 
  key <AD01> { [ p,                       P,                       NoSymbol,                Greek_pi,	               Home,	             multiply,                Greek_PI,         U043F                 ] };
  key <AD02> { [ u,                       U,                       U27E8,                   U0380,                   emdash,               U21A4,                   U0471,                U0443                 ] };
  key <AD03> { [ quotedbl,                apostrophe,              bracketleft,             U03DD,                   Up,                   U2191,                   U1D53C,                U045F           ] };
  key <AD04> { [ comma,                   comma,      semicolon,               U0372,                   BackSpace,            U2190,                   U2A3E,                 U0448              ] };
  key <AD05> { [ q,			    Q,			     division,                U03D8,                   End,                  U2197,                   U211A,                U044C                 ] };
  key <AD06> { [ v,                       V,                       multiply,                U03E0,                   NoSymbol,             U2196,                   U1D54D,                U0432                 ] };
  key <AD07> { [ c,                       C,                       colon,                   Greek_chi,               4,	             U2192,                   U2102,                U0447                 ] };
  key <AD08> { [ l,                       L,                       equal,                   Greek_lambda,            5,		     U2193,                   Greek_LAMBDA,           U043B                 ] };
  key <AD09> { [ m,                       M,                       ampersand,               Greek_mu,	               6,		     U21A6,                   U1D544,         U043C                 ] };
  key <AD10> { [ f,                       F,                       parenright,                Greek_phi,               NoSymbol,             U2208,                   Greek_PHI,              U0444                 ] };
  key <AD11> { [ j,                       J,                       bracketright,              U03DF,                   U066D,                U2218,                   U1D541,                U044A                 ] };
  key <AD12> { [ U00A7,                   dead_grave,              U3009,            dead_psili,              dead_doubleacute,     NoSymbol,               dead_breve,           NoSymbol              ] };
  key <AC01> { [ h,                       H,                       U2200,                   Greek_eta,               KP_Prior,             U2223,                   U210D,                U0445                 ] };
  key <AC02> { [ i,                       I,                       slash,                   Greek_iota,              KP_Left,              partialderivative,       U1D540,                U0438                 ] };
  key <AC03> { [ e,                       E,                       braceleft,               Greek_epsilon,           KP_Down,              U2227,                   U1D538,               U044D                 ] };
  key <AC04> { [ a,                       A,                       parenleft,               Greek_alpha,             KP_Right,             U003C,                   U2135,                  U044F                 ] };
  key <AC05> { [ o,                       O,                       minus,                   Greek_omicron,           KP_Next,              U2210,                   U2207,                  U043E                 ] };
  key <AC06> { [ d,                       D,                       plus,                    Greek_delta,             KP_Enter,             U220F,                   U0394,             U0434                 ] };
  key <AC07> { [ t,                       T,                       dollar,                  Greek_tau,               1,                    U003E,                   U1D54B,                U0442                 ] };
  key <AC08> { [ r,                       R,                       asterisk,                Greek_rho,               2,		     U2228,                   NoSymbol,               U0440                 ] };
  key <AC09> { [ n,                       N,                       backslash,               Greek_nu,                3,		     U222B,                   U2115,                U043D                 ] };
  key <AC10> { [ s,                       S,                       U2203,                   Greek_sigma,             KP_Decimal,           U2225,                   Greek_SIGMA,            U0441                 ] };
  key <AC11> { [ quotedbl,                U1E9E,                   NoSymbol,                Greek_finalsmallsigma,   NoSymbol,             jot,                     NoSymbol,               NoSymbol              ] };
  key <AB01> { [ k,                       K,                       U1E9E,                   Greek_kappa,             NoSymbol,             U22C4,                   U1D542,                U043A                 ] };
  key <AB02> { [ y,                       Y,                       numbersign,              Greek_upsilon,           U2219,                U2205,                   U1D550,                U044E                 ] };
  key <AB03> { [ x,                       X,                       NoSymbol,                Greek_xi,                U00AC,               U2216,                   Greek_XI,              U044B                 ] };
  key <AB04> { [ period,                  period,                  underscore,              U03DE,                   Tab,                U2198,                   U2261,                 U0449                 ] };
  key <AB05> { [ grave,                   dead_caron,              U029A,               Greek_psi,               at,                   U2194,                   Greek_PSI,              U0446                 ] };
  key <AB06> { [ b,                       B,                       dead_circumflex,         Greek_beta,              KP_Separator,	             U2199,                   U05D1,                  U0431                 ] };
  key <AB07> { [ g,                       G,                       asciitilde,              Greek_gamma,             7,		     radical,                 Greek_GAMMA,            U0433                 ] };
  key <AB08> { [ z,                       Z,                       percent,                 Greek_zeta,              8,	             U2211,                   U2124,                U0436                 ] };
  key <AB09> { [ w,                       W,                       EuroSign,                   Greek_omega,             9,		     U221E,                   Greek_OMEGA,            U0437                 ] };
  key <AB10> { [ exclam,                exclam,                   braceright,              Greek_theta,             comma,                U22CA,                   Greek_THETA,            U045A                 ] };
    

  key <LSGT> { [ exclam,                  U02A1,                   U00A7,                   Greek_finalsmallsigma,   Escape,               U22C9,                   U1D55C,      U0452                           ] };  
  key <BKSL> { [ dead_grave,              dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,       dead_dasia,              dead_macron,            NoSymbol               ] };


  key <KP1> { [ Tab,                      dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,       dead_dasia,              dead_macron,            NoSymbol                 ] };

  // key <KP3> { [ Control_L,             dead_cedilla,            dead_abovering,          NoSymbol,                dead_diaeresis,          dead_dasia,           dead_macron,          NoSymbol                 ] };
};

partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "daselt_cyrillic" {

  include "daselt_(daselt_cyrillic_base)"

    name[Group1]= "German (Daselt_Cyrillic)";

  include "shift(both_capslock)"
    include "level3(caps_switch)"
    include "level3(bksl_switch)"
    include "level5(ralt_switch)"
    include "daselt(tlde_switch)"
    include "daselt(ac11_switch)"
    include "daselt(ae08_switch)"

    modifier_map Mod2 { Hyper_L };
    modifier_map Mod4 { Super_L };

};

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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-06 13:22                   ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 14:16                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 17+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 14:16 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: Eli Zaretskii, 68930

Alexander Prähauser <ahprae@protonmail.com> writes:

> Here is the overall keyboard config I'm using, just in case. I'm using
> Dual Function Keys to place modifiers, for lower-case Greek letters on
> the E key and the 9 key and for uppercase Greek letters on Tab and
> Rightbrace, and the xkb file is called Daselt, because that's what I
> called the overall layout.

I tried to replicate your configuration as best I could, since several
keys are absent from my keyboard that are required to activate the 4th
and 7th shift levels exactly as you describe, but to no avail: typing
Ctrl+Ω and Ctrl+ω continue to register as C-ω.  Last we heard, it wasn't
possible for you to compile Emacs from source.  If that has changed,
please build Emacs with xterm.c instrumented thus:

diff --git a/src/xterm.c b/src/xterm.c
index c8a43785564..5d4acb8f77b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -24180,6 +24180,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 						       copy_bufptr,
 						       copy_bufsiz,
 						       &overflow);
+			  fprintf (stderr, "xkbtranslatekeysym produced: %td\n", nbytes);
 			  if (overflow)
 			    {
 			      copy_bufptr

then type each of the two keystrokes once, and send us the two lines
printed.  Thanks.





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
       [not found]                 ` <871q9n9n1f.fsf@protonmail.com>
@ 2024-02-08 12:38                   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-08 13:00                     ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-08 12:38 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: 68930-done

Please do not omit the bug tracker from the carbon copy lists of
replies, or they will not be recorded by the bug tracker.

Alexander Prähauser <ahprae@protonmail.com> writes:

> "Po Lu" <luangruo@yahoo.com> writes:
>
>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>
>>> Alright, I re-downloaded Emacs and tried to apply the patch again and
>>> this time it worked. No idea why it didn't before, I had downloaded it
>>> on Monday, I think. Maybe the changes had been too big in-between?
>>
>> No, xterm.c hasn't seen any substantial modifications for months.
>>
>>> Regardless, I should not have doubted your coding abilities. But when I
>>> start Emacs with the patch and type the key combinations, I don't get
>>> any special output, either in the message buffer or in the containing
>>> terminal.
>>
>> Please start Emacs with the following options:
>>
>>   ./emacs -q -xrm 'Emacs.useXIM: off'
>>
>> and tell us if the problem remains.  Thanks.
>
> It works! And just to be sure I tried again without an init and with the
> exact same keybinds but without the last option, and sure enough it
> switched them up again.

As such, it's your X input method that's alternating between the
upper-case and lower-case forms of certain Greek characters, which is
not in our bailiwick.  Please identify the input method enabled on your
system, so that we can place a meaningful description in PROBLEMS; in
the meantime, insert:

  Emacs.useXIM: off

into your ~/.Xresources or ~/.Xdefaults to install the change
permanently, then type:

  xrdb -merge ~/.Xresources

and I'm closing this bug.  Thanks.





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-08 12:38                   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-08 13:00                     ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-08 13:26                       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-08 13:00 UTC (permalink / raw)
  To: Po Lu; +Cc: 68930-done

"Po Lu" <luangruo@yahoo.com> writes:

> Please do not omit the bug tracker from the carbon copy lists of
> replies, or they will not be recorded by the bug tracker.

I didn't consciously. Maybe I used Reply instead of Wide Reply.

>
> Alexander Prähauser <ahprae@protonmail.com> writes:
>
>> "Po Lu" <luangruo@yahoo.com> writes:
>>
>>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>>
>>>> Alright, I re-downloaded Emacs and tried to apply the patch again and
>>>> this time it worked. No idea why it didn't before, I had downloaded it
>>>> on Monday, I think. Maybe the changes had been too big in-between?
>>>
>>> No, xterm.c hasn't seen any substantial modifications for months.
>>>
>>>> Regardless, I should not have doubted your coding abilities. But when I
>>>> start Emacs with the patch and type the key combinations, I don't get
>>>> any special output, either in the message buffer or in the containing
>>>> terminal.
>>>
>>> Please start Emacs with the following options:
>>>
>>>   ./emacs -q -xrm 'Emacs.useXIM: off'
>>>
>>> and tell us if the problem remains.  Thanks.
>>
>> It works! And just to be sure I tried again without an init and with the
>> exact same keybinds but without the last option, and sure enough it
>> switched them up again.
>
> As such, it's your X input method that's alternating between the
> upper-case and lower-case forms of certain Greek characters, which is
> not in our bailiwick.  Please identify the input method enabled on your
> system, so that we can place a meaningful description in PROBLEMS

Do you know where I can look up how to find it out?

> ; in
> the meantime, insert:
>
>   Emacs.useXIM: off
>
> into your ~/.Xresources or ~/.Xdefaults to install the change
> permanently, then type:
>
>   xrdb -merge ~/.Xresources
>
> and I'm closing this bug.  Thanks.








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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-08 13:00                     ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-08 13:26                       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-08 14:32                         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 17+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-08 13:26 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: 68930-done

Alexander Prähauser <ahprae@protonmail.com> writes:

> "Po Lu" <luangruo@yahoo.com> writes:
>
>> Please do not omit the bug tracker from the carbon copy lists of
>> replies, or they will not be recorded by the bug tracker.
>
> I didn't consciously. Maybe I used Reply instead of Wide Reply.
>
>>
>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>
>>> "Po Lu" <luangruo@yahoo.com> writes:
>>>
>>>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>>>
>>>>> Alright, I re-downloaded Emacs and tried to apply the patch again and
>>>>> this time it worked. No idea why it didn't before, I had downloaded it
>>>>> on Monday, I think. Maybe the changes had been too big in-between?
>>>>
>>>> No, xterm.c hasn't seen any substantial modifications for months.
>>>>
>>>>> Regardless, I should not have doubted your coding abilities. But when I
>>>>> start Emacs with the patch and type the key combinations, I don't get
>>>>> any special output, either in the message buffer or in the containing
>>>>> terminal.
>>>>
>>>> Please start Emacs with the following options:
>>>>
>>>>   ./emacs -q -xrm 'Emacs.useXIM: off'
>>>>
>>>> and tell us if the problem remains.  Thanks.
>>>
>>> It works! And just to be sure I tried again without an init and with the
>>> exact same keybinds but without the last option, and sure enough it
>>> switched them up again.
>>
>> As such, it's your X input method that's alternating between the
>> upper-case and lower-case forms of certain Greek characters, which is
>> not in our bailiwick.  Please identify the input method enabled on your
>> system, so that we can place a meaningful description in PROBLEMS
>
> Do you know where I can look up how to find it out?

What is the value of the `XMODIFIERS' environment variable?





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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-08 13:26                       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-08 14:32                         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-24  9:33                           ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-08 14:32 UTC (permalink / raw)
  To: Po Lu; +Cc: 68930-done

"Po Lu" <luangruo@yahoo.com> writes:

> Alexander Prähauser <ahprae@protonmail.com> writes:
>
>> "Po Lu" <luangruo@yahoo.com> writes:
>>
>>> Please do not omit the bug tracker from the carbon copy lists of
>>> replies, or they will not be recorded by the bug tracker.
>>
>> I didn't consciously. Maybe I used Reply instead of Wide Reply.
>>
>>>
>>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>>
>>>> "Po Lu" <luangruo@yahoo.com> writes:
>>>>
>>>>> Alexander Prähauser <ahprae@protonmail.com> writes:
>>>>>
>>>>>> Alright, I re-downloaded Emacs and tried to apply the patch again and
>>>>>> this time it worked. No idea why it didn't before, I had downloaded it
>>>>>> on Monday, I think. Maybe the changes had been too big in-between?
>>>>>
>>>>> No, xterm.c hasn't seen any substantial modifications for months.
>>>>>
>>>>>> Regardless, I should not have doubted your coding abilities. But when I
>>>>>> start Emacs with the patch and type the key combinations, I don't get
>>>>>> any special output, either in the message buffer or in the containing
>>>>>> terminal.
>>>>>
>>>>> Please start Emacs with the following options:
>>>>>
>>>>>   ./emacs -q -xrm 'Emacs.useXIM: off'
>>>>>
>>>>> and tell us if the problem remains.  Thanks.
>>>>
>>>> It works! And just to be sure I tried again without an init and with the
>>>> exact same keybinds but without the last option, and sure enough it
>>>> switched them up again.
>>>
>>> As such, it's your X input method that's alternating between the
>>> upper-case and lower-case forms of certain Greek characters, which is
>>> not in our bailiwick.  Please identify the input method enabled on your
>>> system, so that we can place a meaningful description in PROBLEMS
>>
>> Do you know where I can look up how to find it out?
>
> What is the value of the `XMODIFIERS' environment variable?

When I type $XMODIFIERS it comes out empty and It's not listed when I
use printenv or sudo printenv so I assume it's not set.






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

* bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω
  2024-02-08 14:32                         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-24  9:33                           ` Eli Zaretskii
  0 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-02-24  9:33 UTC (permalink / raw)
  To: Alexander Prähauser; +Cc: luangruo, 68930

Ping!  Is there anything else to do here?

> Cc: 68930-done@debbugs.gnu.org
> Date: Thu, 08 Feb 2024 14:32:15 +0000
> From:  Alexander Prähauser via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> "Po Lu" <luangruo@yahoo.com> writes:
> 
> > Alexander Prähauser <ahprae@protonmail.com> writes:
> >
> >> "Po Lu" <luangruo@yahoo.com> writes:
> >>
> >>> Please do not omit the bug tracker from the carbon copy lists of
> >>> replies, or they will not be recorded by the bug tracker.
> >>
> >> I didn't consciously. Maybe I used Reply instead of Wide Reply.
> >>
> >>>
> >>> Alexander Prähauser <ahprae@protonmail.com> writes:
> >>>
> >>>> "Po Lu" <luangruo@yahoo.com> writes:
> >>>>
> >>>>> Alexander Prähauser <ahprae@protonmail.com> writes:
> >>>>>
> >>>>>> Alright, I re-downloaded Emacs and tried to apply the patch again and
> >>>>>> this time it worked. No idea why it didn't before, I had downloaded it
> >>>>>> on Monday, I think. Maybe the changes had been too big in-between?
> >>>>>
> >>>>> No, xterm.c hasn't seen any substantial modifications for months.
> >>>>>
> >>>>>> Regardless, I should not have doubted your coding abilities. But when I
> >>>>>> start Emacs with the patch and type the key combinations, I don't get
> >>>>>> any special output, either in the message buffer or in the containing
> >>>>>> terminal.
> >>>>>
> >>>>> Please start Emacs with the following options:
> >>>>>
> >>>>>   ./emacs -q -xrm 'Emacs.useXIM: off'
> >>>>>
> >>>>> and tell us if the problem remains.  Thanks.
> >>>>
> >>>> It works! And just to be sure I tried again without an init and with the
> >>>> exact same keybinds but without the last option, and sure enough it
> >>>> switched them up again.
> >>>
> >>> As such, it's your X input method that's alternating between the
> >>> upper-case and lower-case forms of certain Greek characters, which is
> >>> not in our bailiwick.  Please identify the input method enabled on your
> >>> system, so that we can place a meaningful description in PROBLEMS
> >>
> >> Do you know where I can look up how to find it out?
> >
> > What is the value of the `XMODIFIERS' environment variable?
> 
> When I type $XMODIFIERS it comes out empty and It's not listed when I
> use printenv or sudo printenv so I assume it's not set.
> 
> 
> 
> 
> 





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

end of thread, other threads:[~2024-02-24  9:33 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-04 20:49 bug#68930: 30.0.50; Emacs conflates C-Ω and C-ω Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-05 12:48 ` Eli Zaretskii
     [not found]   ` <878r3yalww.fsf@protonmail.com>
2024-02-05 19:10     ` Eli Zaretskii
2024-02-05 23:00       ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06  0:07         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06  4:11           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 12:33             ` Eli Zaretskii
2024-02-06 12:57               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 13:11                 ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 13:22                   ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 14:16                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 12:34             ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found] ` <87r0hp9d4x.fsf@protonmail.com>
     [not found]   ` <87o7cs6a1x.fsf@yahoo.com>
     [not found]     ` <87eddoa3mp.fsf@protonmail.com>
     [not found]       ` <87jzng5uz1.fsf@yahoo.com>
     [not found]         ` <87a5oca09q.fsf@protonmail.com>
     [not found]           ` <878r3w5r56.fsf@yahoo.com>
     [not found]             ` <875xyz9or5.fsf@protonmail.com>
     [not found]               ` <87wmrf2ndz.fsf@yahoo.com>
     [not found]                 ` <871q9n9n1f.fsf@protonmail.com>
2024-02-08 12:38                   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-08 13:00                     ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-08 13:26                       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-08 14:32                         ` Alexander Prähauser via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-24  9:33                           ` Eli Zaretskii

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).