From: "B. T. Raven" <nihil@nihilo.net>
To: help-gnu-emacs@gnu.org
Subject: Re: emacs keybinding syntaxes bewilderment
Date: Fri, 14 Dec 2007 17:15:57 -0600 [thread overview]
Message-ID: <T-KdnXvAj90kk_7anZ2dnUVZ_h6hnZ2d@sysmatrix.net> (raw)
In-Reply-To: <fbbfd25e-3b54-48f1-90af-73ab8c4d6f9c@s8g2000prg.googlegroups.com>
Xah Lee wrote:
> recently i took some time to study the various syntax variations for
> keybinding in emacs.
> Here's a list:
>
> ; equivalent code for a single keystroke
> (global-set-key "b" 'func-name)
> (global-set-key [98] 'func-name)
> (global-set-key [?b] 'func-name)
> (global-set-key [(?b)] 'func-name)
> (global-set-key (kbd "b") 'func-name)
>
> ; equivalent code for a named special key: Enter
> (global-set-key "\r" 'func-name)
> (global-set-key [?\r] 'func-name)
> (global-set-key [13] 'func-name)
> (global-set-key [(13)] 'func-name)
> (global-set-key [return] 'func-name)
> (global-set-key [?\^M] 'func-name)
> (global-set-key [?\^m] 'func-name)
> (global-set-key [?\C-M] 'func-name)
> (global-set-key [?\C-m] 'func-name)
> (global-set-key [(?\C-m)] 'func-name)
> (global-set-key (kbd "RET") 'func-name)
> (global-set-key (kbd "<return>") 'func-name)
>
> ; equivalent code for binding 1 mod key + 1 letter key: Meta+b
> (global-set-key "\M-b" 'func-name)
> (global-set-key [?\M-b] 'func-name)
> (global-set-key [(meta 98)] 'func-name)
> (global-set-key [(meta b)] 'func-name)
> (global-set-key [(meta ?b)] 'func-name)
> (global-set-key (kbd "M-b") 'func-name)
>
> ; equivalent code for binding 1 mod key + 1 special key: Meta+Enter
> (global-set-key [M-return] 'func-name)
> (global-set-key [\M-return] 'func-name)
> (global-set-key [(meta return)] 'func-name)
> (global-set-key (kbd "M-<return>") 'func-name)
>
> ; equivalent code for binding Meta + cap letter key: Meta Shift b
> (global-set-key (kbd "M-B") 'kill-this-buffer)
> (global-set-key "\M-\S-b" 'backward-word)
> (global-set-key "\S-\M-b" 'backward-word)
> (global-set-key "\M-B" 'forward-word)
>
> (global-set-key [?\M-S-b] 'backward-word) ; invalid-read-syntax
> (global-set-key [?\M-?\S-b] 'forward-word) ; invalid-read-syntax
> (global-set-key [?\M-\S-b] 'forward-word) ; compile but no effect
>
> (global-set-key [?\M-B] 'forward-word)
> (global-set-key [\M-B] 'backward-word) ; compile but no effect
>
> (global-set-key [(meta shift b)] 'func-name)
> (global-set-key [(shift meta b)] 'func-name)
>
> (global-set-key (kbd "M-B") 'backward-word)
> (global-set-key (kbd "M-S-b") 'forward-word) ; compile but no effect
>
> ; Meta + shifted symbol key.
> (global-set-key (kbd "M-@") 'backward-word) ; good
> (global-set-key (kbd "M-S-2") 'forward-word) ; compile but no effect
>
> What the hell!
>
> Note: this study is not complete. I have yet to add examplary
> variations for key sequences. Also, i don't fully yet understand why
> some of them does not work.
>
> Also, a question: recently i learned that to make Mac keyboard's
> Option key to be hyper, i can use (setq mac-option-modifier 'hyper).
> Is there something similar on Windows Emacs to make the WindowKey
> hyper? Thanks.
>
> Xah
> xah@xahlee.org
> \xAD\xF4 http://xahlee.org/
Yes. I have the following in my .emacs:
(setq w32-pass-lwindow-to-system nil
w32-pass-rwindow-to-system nil
w32-pass-apps-to-system nil
w32-lwindow-modifier 'super ;; Left Windows
w32-rwindow-modifier 'super ;; Right Windows
w32-apps-modifier 'hyper) ;; App-Menu (key to right of Right
Windows)
In addition I have used Keytweak (on w2000 or better (later,
whatever)changes registry scancode interpretations) to make the order of the
modifiers in bottom row super alt control spacebar control alt super hyper.
For this to work you need a keyboard where all the modifier keycaps can be
swapped around. Since I used the Dvorak layout, even with these hacks, the
best I can do to be able to touch type keychords and get any ergonomic
effect is to redefine these keys:
;; Single char cursor movement on Dvorak layout
(global-set-key [(meta h)] 'backward-char)
(global-set-key [(meta n)] 'forward-char)
(global-set-key [(meta c)] 'previous-line)
(global-set-key [(meta t)] 'next-line)
;;substitute for stolen metakeychords
(global-set-key [(control p)] 'mark-paragraph)
(global-set-key [(control b)] 'capitalize-word)
(global-set-key [(control f)] 'find-function-at-point)
(global-set-key [(shift control f)] 'find-variable-at-point)
What I really want is for those first four bindings to be used with the Ctrl
modifier rather than Meta, but the C-h and C-c prefixes preclude that
possibility.
Ed
next prev parent reply other threads:[~2007-12-14 23:15 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-14 22:24 emacs keybinding syntaxes bewilderment Xah Lee
2007-12-14 23:15 ` B. T. Raven [this message]
2007-12-15 1:57 ` Xah Lee
2007-12-15 16:48 ` rustom
2007-12-16 7:22 ` Mike Mattie
[not found] ` <mailman.5061.1197789814.18990.help-gnu-emacs@gnu.org>
2007-12-16 8:25 ` rustom
2007-12-16 8:56 ` Harald Hanche-Olsen
2007-12-16 16:39 ` rustom
2007-12-16 19:37 ` Harald Hanche-Olsen
2007-12-16 23:21 ` Peter Dyballa
2007-12-16 23:33 ` Lennart Borgman (gmail)
2007-12-16 23:50 ` Peter Dyballa
2007-12-17 10:17 ` Sebastian Tennant
[not found] ` <mailman.5091.1197886901.18990.help-gnu-emacs@gnu.org>
2007-12-17 12:56 ` Romain Francoise
2007-12-17 9:38 ` Tassilo Horn
2007-12-18 6:12 ` Xah Lee
2007-12-19 2:27 ` Xah
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=T-KdnXvAj90kk_7anZ2dnUVZ_h6hnZ2d@sysmatrix.net \
--to=nihil@nihilo.net \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.