summaryrefslogtreecommitdiff
path: root/devdocs/elisp/key-binding-commands.html
blob: b0a5955237be0795e62469b86a472eed6717c48b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 <h3 class="section">Commands for Binding Keys</h3> <p>This section describes some convenient interactive interfaces for changing key bindings. They work by calling <code>define-key</code>. </p> <p>People often use <code>global-set-key</code> in their init files (see <a href="init-file">Init File</a>) for simple customization. For example, </p> <div class="example"> <pre class="example">(global-set-key (kbd "C-x C-\\") 'next-line)
</pre>
</div> <p>or </p> <div class="example"> <pre class="example">(global-set-key [?\C-x ?\C-\\] 'next-line)
</pre>
</div> <p>or </p> <div class="example"> <pre class="example">(global-set-key [(control ?x) (control ?\\)] 'next-line)
</pre>
</div> <p>redefines <kbd>C-x C-\</kbd> to move down a line. </p> <div class="example"> <pre class="example">(global-set-key [M-mouse-1] 'mouse-set-point)
</pre>
</div> <p>redefines the first (leftmost) mouse button, entered with the Meta key, to set point where you click. </p>  <p>Be careful when using non-<acronym>ASCII</acronym> text characters in Lisp specifications of keys to bind. If these are read as multibyte text, as they usually will be in a Lisp file (see <a href="loading-non_002dascii">Loading Non-ASCII</a>), you must type the keys as multibyte too. For instance, if you use this: </p> <div class="example"> <pre class="example">(global-set-key "ö" 'my-function) ; bind o-umlaut
</pre>
</div> <p>or </p> <div class="example"> <pre class="example">(global-set-key ?ö 'my-function) ; bind o-umlaut
</pre>
</div> <p>and your language environment is multibyte Latin-1, these commands actually bind the multibyte character with code 246, not the byte code 246 (<kbd>M-v</kbd>) sent by a Latin-1 terminal. In order to use this binding, you need to teach Emacs how to decode the keyboard by using an appropriate input method (see <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Input-Methods.html#Input-Methods">Input Methods</a> in <cite>The GNU Emacs Manual</cite>). </p> <dl> <dt id="global-set-key">Command: <strong>global-set-key</strong> <em>key binding</em>
</dt> <dd>
<p>This function sets the binding of <var>key</var> in the current global map to <var>binding</var>. </p> <div class="example"> <pre class="example">(global-set-key <var>key</var> <var>binding</var>)
≡
(define-key (current-global-map) <var>key</var> <var>binding</var>)
</pre>
</div> </dd>
</dl> <dl> <dt id="global-unset-key">Command: <strong>global-unset-key</strong> <em>key</em>
</dt> <dd>
 <p>This function removes the binding of <var>key</var> from the current global map. </p> <p>One use of this function is in preparation for defining a longer key that uses <var>key</var> as a prefix—which would not be allowed if <var>key</var> has a non-prefix binding. For example: </p> <div class="example"> <pre class="example">(global-unset-key "\C-l")
    ⇒ nil
</pre>
<pre class="example">(global-set-key "\C-l\C-l" 'redraw-display)
    ⇒ nil
</pre>
</div> <p>This function is equivalent to using <code>define-key</code> as follows: </p> <div class="example"> <pre class="example">(global-unset-key <var>key</var>)
≡
(define-key (current-global-map) <var>key</var> nil)
</pre>
</div> </dd>
</dl> <dl> <dt id="local-set-key">Command: <strong>local-set-key</strong> <em>key binding</em>
</dt> <dd>
<p>This function sets the binding of <var>key</var> in the current local keymap to <var>binding</var>. </p> <div class="example"> <pre class="example">(local-set-key <var>key</var> <var>binding</var>)
≡
(define-key (current-local-map) <var>key</var> <var>binding</var>)
</pre>
</div> </dd>
</dl> <dl> <dt id="local-unset-key">Command: <strong>local-unset-key</strong> <em>key</em>
</dt> <dd>
<p>This function removes the binding of <var>key</var> from the current local map. </p> <div class="example"> <pre class="example">(local-unset-key <var>key</var>)
≡
(define-key (current-local-map) <var>key</var> nil)
</pre>
</div> </dd>
</dl><div class="_attribution">
  <p class="_attribution-p">
    Copyright &copy; 1990-1996, 1998-2022 Free Software Foundation, Inc. <br>Licensed under the GNU GPL license.<br>
    <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html" class="_attribution-link">https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Commands.html</a>
  </p>
</div>