emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Adding xterm-extras to Emacs


From: Stefan Monnier
Subject: Re: Adding xterm-extras to Emacs
Date: Fri, 12 Oct 2007 12:18:38 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.50 (gnu/linux)

>>> However, Alt+Ctrl+Right is shown as "<C-M-right>" but not "<C-A-right>"
>>> while Alt+Right is shown as "<A-right>" but not <M-right>. You can see
>>> they are _INCONSISTENT_.
>> 
>> Can you check C-h l as well to see if Alt+Ctrl+Right sends ESC followed by
>> the escape sequence for Ctrl+Right and if Alr+Right does the same.
>> If not, then the inconsistency is in xterm and should be reported there
>> (after reporting there, we may also decide to workaround the problem in
>> Emacs by binding those escape sequences to M-right instead).

> Yes, it looks like Alt+Ctrl+Right and Alt+Right send ESC.

> Alt+Ctrl+Right  ^[[1;7C
> Alt+Right       ^[[1;3C

You mean "it looks like they *don't*"!  The ESC you see are the first char
of an escape sequence, not standalone ESC characters.

What "metaSendsEscape" is supposed to do is to turn Alt+A into ESC A, so if
Right sends ^[[C (aka ESC [ C), then Alt+Right should send ^[^[[C (aka ESC
ESC [ C).  Please report this as a feature request to xterm's maintainers.

But looking at lisp/xterm.el now I see that we indeed inconsistently map
things to S-M-foo but A-foo, so the inconsistency is our fault and should be
corrected with the patch below,


        Stefan


--- xterm.el    09 oct 2007 01:14:42 -0400      1.51
+++ xterm.el    12 oct 2007 11:28:38 -0400      
@@ -89,18 +89,18 @@
     (define-key map "\e[23;6~" [C-S-f11])
     (define-key map "\e[24;6~" [C-S-f12])
 
-    (define-key map "\eO3P" [A-f1])
-    (define-key map "\eO3Q" [A-f2])
-    (define-key map "\eO3R" [A-f3])
-    (define-key map "\eO3S" [A-f4])
-    (define-key map "\e[15;3~" [A-f5])
-    (define-key map "\e[17;3~" [A-f6])
-    (define-key map "\e[18;3~" [A-f7])
-    (define-key map "\e[19;3~" [A-f8])
-    (define-key map "\e[20;3~" [A-f9])
-    (define-key map "\e[21;3~" [A-f10])
-    (define-key map "\e[23;3~" [A-f11])
-    (define-key map "\e[24;3~" [A-f12])
+    (define-key map "\eO3P" [M-f1])
+    (define-key map "\eO3Q" [M-f2])
+    (define-key map "\eO3R" [M-f3])
+    (define-key map "\eO3S" [M-f4])
+    (define-key map "\e[15;3~" [M-f5])
+    (define-key map "\e[17;3~" [M-f6])
+    (define-key map "\e[18;3~" [M-f7])
+    (define-key map "\e[19;3~" [M-f8])
+    (define-key map "\e[20;3~" [M-f9])
+    (define-key map "\e[21;3~" [M-f10])
+    (define-key map "\e[23;3~" [M-f11])
+    (define-key map "\e[24;3~" [M-f12])
 
     (define-key map "\eO4P" [M-S-f1])
     (define-key map "\eO4Q" [M-S-f2])
@@ -164,12 +164,12 @@
     (define-key map "\e[1;8F" [C-M-S-end])
     (define-key map "\e[1;8H" [C-M-S-home])
 
-    (define-key map "\e[1;3A" [A-up])
-    (define-key map "\e[1;3B" [A-down])
-    (define-key map "\e[1;3C" [A-right])
-    (define-key map "\e[1;3D" [A-left])
-    (define-key map "\e[1;3F" [A-end])
-    (define-key map "\e[1;3H" [A-home])
+    (define-key map "\e[1;3A" [M-up])
+    (define-key map "\e[1;3B" [M-down])
+    (define-key map "\e[1;3C" [M-right])
+    (define-key map "\e[1;3D" [M-left])
+    (define-key map "\e[1;3F" [M-end])
+    (define-key map "\e[1;3H" [M-home])
 
     (define-key map "\e[2~" [insert])
     (define-key map "\e[3~" [delete])
@@ -206,10 +206,10 @@
     (define-key map "\e[5;8~" [C-M-S-prior])
     (define-key map "\e[6;8~" [C-M-S-next])
 
-    (define-key map "\e[2;3~" [A-insert])
-    (define-key map "\e[3;3~" [A-delete])
-    (define-key map "\e[5;3~" [A-prior])
-    (define-key map "\e[6;3~" [A-next])
+    (define-key map "\e[2;3~" [M-insert])
+    (define-key map "\e[3;3~" [M-delete])
+    (define-key map "\e[5;3~" [M-prior])
+    (define-key map "\e[6;3~" [M-next])
 
     (define-key map "\e[4~" [select])
     (define-key map "\e[29~" [print])
@@ -425,18 +425,18 @@
     (define-key map [f47] [C-S-f11])
     (define-key map [f48] [C-S-f12])
 
-    (define-key map [f49] [A-f1])
-    (define-key map [f50] [A-f2])
-    (define-key map [f51] [A-f3])
-    (define-key map [f52] [A-f4])
-    (define-key map [f53] [A-f5])
-    (define-key map [f54] [A-f6])
-    (define-key map [f55] [A-f7])
-    (define-key map [f56] [A-f8])
-    (define-key map [f57] [A-f9])
-    (define-key map [f58] [A-f10])
-    (define-key map [f59] [A-f11])
-    (define-key map [f60] [A-f12])
+    (define-key map [f49] [M-f1])
+    (define-key map [f50] [M-f2])
+    (define-key map [f51] [M-f3])
+    (define-key map [f52] [M-f4])
+    (define-key map [f53] [M-f5])
+    (define-key map [f54] [M-f6])
+    (define-key map [f55] [M-f7])
+    (define-key map [f56] [M-f8])
+    (define-key map [f57] [M-f9])
+    (define-key map [f58] [M-f10])
+    (define-key map [f59] [M-f11])
+    (define-key map [f60] [M-f12])
 
     map)
   "Keymap of possible alternative meanings for some keys.")




reply via email to

[Prev in Thread] Current Thread [Next in Thread]