aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2005-03-06 18:22:28 +0000
committerRichard M. Stallman2005-03-06 18:22:28 +0000
commit07ea73bb981382a7a47a37fbf4c21eb417758ad3 (patch)
tree7666e8ead3aacbf94b24a3e9ca6d9e80fab56aa2
parent4ccd1968d9420a8e20b74ffd35d1ef7c4a8576e5 (diff)
downloademacs-07ea73bb981382a7a47a37fbf4c21eb417758ad3.tar.gz
emacs-07ea73bb981382a7a47a37fbf4c21eb417758ad3.zip
(Translating Input): Replace flow-control example
with a less obsolete example that uses `keyboard-translate'.
-rw-r--r--lispref/os.texi49
1 files changed, 20 insertions, 29 deletions
diff --git a/lispref/os.texi b/lispref/os.texi
index 58bab17e139..1358e3421db 100644
--- a/lispref/os.texi
+++ b/lispref/os.texi
@@ -1618,35 +1618,6 @@ If @code{keyboard-translate-table} is a char-table
1618looked up in this char-table. If the value found there is 1618looked up in this char-table. If the value found there is
1619non-@code{nil}, then it is used instead of the actual input character. 1619non-@code{nil}, then it is used instead of the actual input character.
1620 1620
1621In the example below, we set @code{keyboard-translate-table} to a
1622char-table. Then we fill it in to swap the characters @kbd{C-s} and
1623@kbd{C-\} and the characters @kbd{C-q} and @kbd{C-^}. Subsequently,
1624typing @kbd{C-\} has all the usual effects of typing @kbd{C-s}, and vice
1625versa.
1626
1627@cindex flow control example
1628@example
1629@group
1630(defun evade-flow-control ()
1631 "Replace C-s with C-\ and C-q with C-^."
1632 (interactive)
1633@end group
1634@group
1635 (setq keyboard-translate-table
1636 (make-char-table 'keyboard-translate-table nil))
1637@end group
1638@group
1639 ;; @r{Swap @kbd{C-s} and @kbd{C-\}.}
1640 (aset keyboard-translate-table ?\034 ?\^s)
1641 (aset keyboard-translate-table ?\^s ?\034)
1642@end group
1643@group
1644 ;; @r{Swap @kbd{C-q} and @kbd{C-^}.}
1645 (aset keyboard-translate-table ?\036 ?\^q)
1646 (aset keyboard-translate-table ?\^q ?\036))
1647@end group
1648@end example
1649
1650Note that this translation is the first thing that happens to a 1621Note that this translation is the first thing that happens to a
1651character after it is read from the terminal. Record-keeping features 1622character after it is read from the terminal. Record-keeping features
1652such as @code{recent-keys} and dribble files record the characters after 1623such as @code{recent-keys} and dribble files record the characters after
@@ -1664,6 +1635,26 @@ character code @var{from} into character code @var{to}. It creates
1664the keyboard translate table if necessary. 1635the keyboard translate table if necessary.
1665@end defun 1636@end defun
1666 1637
1638 Here's an example of using the @code{keyboard-translate-table} to
1639make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
1640operations:
1641
1642@example
1643(keyboard-translate ?\C-x 'control-x)
1644(keyboard-translate ?\C-c 'control-c)
1645(keyboard-translate ?\C-v 'control-v)
1646(global-set-key [control-x] 'kill-region)
1647(global-set-key [control-c] 'kill-ring-save)
1648(global-set-key [control-v] 'yank)
1649@end example
1650
1651@noindent
1652On a graphical terminal that supports extended @acronym{ASCII} input,
1653you can still get the standard Emacs meanings of one of those
1654characters by typing it with the shift key. That makes it a different
1655character as far as keyboard translation is concerned, but it has the
1656same usual meaning.
1657
1667 The remaining translation features translate subsequences of key 1658 The remaining translation features translate subsequences of key
1668sequences being read. They are implemented in @code{read-key-sequence} 1659sequences being read. They are implemented in @code{read-key-sequence}
1669and have no effect on input read with @code{read-event}. 1660and have no effect on input read with @code{read-event}.