* 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
[parent not found: <878r3yalww.fsf@protonmail.com>]
* 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 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-ω 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
[parent not found: <87r0hp9d4x.fsf@protonmail.com>]
[parent not found: <87o7cs6a1x.fsf@yahoo.com>]
[parent not found: <87eddoa3mp.fsf@protonmail.com>]
[parent not found: <87jzng5uz1.fsf@yahoo.com>]
[parent not found: <87a5oca09q.fsf@protonmail.com>]
[parent not found: <878r3w5r56.fsf@yahoo.com>]
[parent not found: <875xyz9or5.fsf@protonmail.com>]
[parent not found: <87wmrf2ndz.fsf@yahoo.com>]
[parent not found: <871q9n9n1f.fsf@protonmail.com>]
* 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).