changeset 86268:f1604b3ab5ad

(x-alternatives-map): Copy from term/x-win.el. (x-setup-function-keys): Likewise, replacing top-level key definitions. (w32-tty-standard-colors): Move to term/w32console.el.
author Jason Rumney <jasonr@gnu.org>
date Wed, 21 Nov 2007 03:39:33 +0000
parents dfd3c2eb762c
children 7c362abe029b
files lisp/w32-fns.el
diffstat 1 files changed, 36 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/w32-fns.el	Wed Nov 21 03:35:28 2007 +0000
+++ b/lisp/w32-fns.el	Wed Nov 21 03:39:33 2007 +0000
@@ -38,18 +38,48 @@
 
 (defvar explicit-shell-file-name)
 
+;;;; Function keys
+
+(defvar x-alternatives-map
+  (let ((map (make-sparse-keymap)))
+    ;; Map certain keypad keys into ASCII characters that people usually expect.
+    (define-key map [backspace] [127])
+    (define-key map [delete] [127])
+    (define-key map [tab] [?\t])
+    (define-key map [linefeed] [?\n])
+    (define-key map [clear] [?\C-l])
+    (define-key map [return] [?\C-m])
+    (define-key map [escape] [?\e])
+    (define-key map [M-backspace] [?\M-\d])
+    (define-key map [M-delete] [?\M-\d])
+    (define-key map [M-tab] [?\M-\t])
+    (define-key map [M-linefeed] [?\M-\n])
+    (define-key map [M-clear] [?\M-\C-l])
+    (define-key map [M-return] [?\M-\C-m])
+    (define-key map [M-escape] [?\M-\e])
+    (define-key map [iso-lefttab] [backtab])
+    (define-key map [S-iso-lefttab] [backtab])
+    map)
+  "Keymap of possible alternative meanings for some keys.")
+
+(defun x-setup-function-keys (frame)
+  "Set up `function-key-map' on FRAME for w32."
+  ;; Don't do this twice on the same display, or it would break
+  ;; normal-erase-is-backspace-mode.
+  (unless (terminal-parameter frame 'x-setup-function-keys)
+    ;; Map certain keypad keys into ASCII characters that people usually expect.
+    (with-selected-frame frame
+      (let ((map (copy-keymap x-alternatives-map)))
+        (set-keymap-parent map (keymap-parent local-function-key-map))
+        (set-keymap-parent local-function-key-map map)))
+    (set-terminal-parameter frame 'x-setup-function-keys t)))
+
 (declare-function set-message-beep)          ;; Defined in C.
 (declare-function w32-get-clipboard-data)    ;; Defined in C.
 (declare-function w32-get-locale-info)	     ;; Defined in C.
 (declare-function w32-get-valid-locale-ids)  ;; Defined in C.
 (declare-function w32-set-clipboard-data)    ;; Defined in C.
 
-;; Map delete and backspace
-(define-key function-key-map [backspace] "\177")
-(define-key function-key-map [delete] "\C-d")
-(define-key function-key-map [M-backspace] [?\M-\177])
-(define-key function-key-map [C-M-backspace] [\C-\M-delete])
-
 ;; Ignore case on file-name completion
 (setq completion-ignore-case t)
 
@@ -316,25 +346,6 @@
 (global-set-key [lwindow] 'ignore)
 (global-set-key [rwindow] 'ignore)
 
-;; Map certain keypad keys into ASCII characters
-;; that people usually expect.
-(define-key function-key-map [tab] [?\t])
-(define-key function-key-map [linefeed] [?\n])
-(define-key function-key-map [clear] [11])
-(define-key function-key-map [return] [13])
-(define-key function-key-map [escape] [?\e])
-(define-key function-key-map [M-tab] [?\M-\t])
-(define-key function-key-map [M-linefeed] [?\M-\n])
-(define-key function-key-map [M-clear] [?\M-\013])
-(define-key function-key-map [M-return] [?\M-\015])
-(define-key function-key-map [M-escape] [?\M-\e])
-
-;; These don't do the right thing (voelker)
-;(define-key function-key-map [backspace] [127])
-;(define-key function-key-map [delete] [127])
-;(define-key function-key-map [M-backspace] [?\M-\d])
-;(define-key function-key-map [M-delete] [?\M-\d])
-
 ;; These tell read-char how to convert
 ;; these special chars to ASCII.
 (put 'tab 'ascii-character ?\t)
@@ -345,28 +356,6 @@
 (put 'backspace 'ascii-character 127)
 (put 'delete 'ascii-character 127)
 
-;; W32 uses different color indexes than standard:
-
-(defvar w32-tty-standard-colors
-  '(("black"          0     0     0     0)
-    ("blue"           1     0     0 52480) ; MediumBlue
-    ("green"          2  8704 35584  8704) ; ForestGreen
-    ("cyan"           3     0 52736 53504) ; DarkTurquoise
-    ("red"            4 45568  8704  8704) ; FireBrick
-    ("magenta"        5 35584     0 35584) ; DarkMagenta
-    ("brown"          6 40960 20992 11520) ; Sienna
-    ("lightgray"      7 48640 48640 48640) ; Gray
-    ("darkgray"       8 26112 26112 26112) ; Gray40
-    ("lightblue"      9     0     0 65535) ; Blue
-    ("lightgreen"    10     0 65535     0) ; Green
-    ("lightcyan"     11     0 65535 65535) ; Cyan
-    ("lightred"      12 65535     0     0) ; Red
-    ("lightmagenta"  13 65535     0 65535) ; Magenta
-    ("yellow"        14 65535 65535     0) ; Yellow
-    ("white"         15 65535 65535 65535))
-"A list of VGA console colors, their indices and 16-bit RGB values.")
-
-
 (defun w32-add-charset-info (xlfd-charset windows-charset codepage)
   "Function to add character sets to display with Windows fonts.
 Creates entries in `w32-charset-info-alist'.