Mercurial > hg > xemacs-beta
diff lisp/x-win-sun.el @ 253:157b30c96d03 r20-5b25
Import from CVS: tag r20-5b25
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:20:27 +0200 |
parents | 434959a2fba3 |
children | c5d627a313b1 |
line wrap: on
line diff
--- a/lisp/x-win-sun.el Mon Aug 13 10:20:01 2007 +0200 +++ b/lisp/x-win-sun.el Mon Aug 13 10:20:27 2007 +0200 @@ -1,7 +1,7 @@ ;;; x-win-sun.el --- runtime initialization for Sun X servers and keyboards ;; Copyright (C) 1993, 1994 Free Software Foundation, Inc. -;; Authors: jwz@netscape.com, wing@666.com, mrb@eng.sun.com +;; Authors: jwz, ben, martin ;; Keywords: terminals ;; This file is part of XEmacs. @@ -66,121 +66,121 @@ (defun x-win-init-sun () -(defun x-remap-keysyms-using-function-key-map (from-key to-key) - (dolist (prefix '(() (shift) (control) (meta) (alt) - (shift control) (shift alt) (shift meta) - (control alt) (control meta) (alt meta) - (shift control alt) (shift control meta) - (shift alt meta) (control alt meta) - (shift control alt meta))) - (define-key function-key-map - (append prefix (list from-key)) - (vector (append prefix (list to-key)))))) + (defun x-remap-keysyms-using-function-key-map (from-key to-key) + (dolist (prefix '(() (shift) (control) (meta) (alt) + (shift control) (shift alt) (shift meta) + (control alt) (control meta) (alt meta) + (shift control alt) (shift control meta) + (shift alt meta) (control alt meta) + (shift control alt meta))) + (define-key function-key-map + (append prefix (list from-key)) + (vector (append prefix (list to-key)))))) - ;; help is ok - ;; num_lock is ok - ;; up is ok - ;; left is ok - ;; right is ok - ;; kp-add is ok - ;; down is ok - ;; insert is ok - ;; delete is ok - ;; kp-enter is ok -;; Sun Function keys -(loop for (x-name from-key to-key) in - `(("F21" f21 pause) - ("F22" f22 print) - ("F23" f23 scroll_lock) + ;; help is ok + ;; num_lock is ok + ;; up is ok + ;; left is ok + ;; right is ok + ;; kp-add is ok + ;; down is ok + ;; insert is ok + ;; delete is ok + ;; kp-enter is ok + ;; Sun Function keys + (loop for (from-key to-key) in + `((f21 pause) + (f22 print) + (f23 scroll_lock) - ;; X11 R6 mappings - ("SunProps" SunProps props) - ("SunFront" SunFront front) - ("SunOpen" SunOpen open) - ("SunFind" SunFind find) - ("Cancel" cancel stop) - ("Undo" Undo undo) - ("SunCopy" SunCopy copy) - ("SunPaste" SunPaste paste) - ("SunCut" SunCut cut) + ;; X11 R6 mappings + (SunProps props) + (SunFront front) + (SunOpen open) + (SunFind find) + (cancel stop) + (Undo undo) + (SunCopy copy) + (SunPaste paste) + (SunCut cut) - ("F13" f13 props) - ("F14" f14 undo) - ("F15" f15 front) - ("F16" f16 copy) - ("F17" f17 open) - ("F18" f18 paste) - ("F19" f19 find) - ("F20" f20 cut) + (f13 props) + (f14 undo) + (f15 front) + (f16 copy) + (f17 open) + (f18 paste) + (f19 find) + (f20 cut) - ("F25" f25 kp-divide) - ("F26" f26 kp-multiply) - ("F31" f31 kp-5) + (f25 kp-divide) + (f26 kp-multiply) + (f31 kp-5) - ;; Map f33 and r13 to end or kp-end - ,@(cond - ((not (x-keysym-on-keyboard-sans-modifiers-p "End")) - '(("F33" f33 end) - ("R13" r13 end))) - ((not (x-keysym-on-keyboard-sans-modifiers-p "KP_End")) - '(("F33" f33 kp-end) - ("R13" r13 kp-end)))) + ;; Map f33 and r13 to end or kp-end + ,@(cond + ((not (x-keysym-on-keyboard-sans-modifiers-p 'end)) + '((f33 end) + (r13 end))) + ((not (x-keysym-on-keyboard-sans-modifiers-p 'kp-end)) + '((f33 kp-end) + (r13 kp-end)))) - ,@(if (x-keysym-on-keyboard-sans-modifiers-p "F36") - '(("F36" f36 stop) - ("F37" f37 again))) + ,@(when (x-keysym-on-keyboard-sans-modifiers-p 'f36) + '((f36 stop) + (f37 again))) - ;; Type 4 keyboards have a real kp-subtract and a f24 labelled `=' - ;; Type 5 keyboards have no key labelled `=' and a f24 labelled `-' - ,@(when (x-keysym-on-keyboard-sans-modifiers-p "F24") - `(("F24" f24 ,(if (x-keysym-on-keyboard-sans-modifiers-p "KP_Subtract") - 'kp-equal - 'kp-subtract)))) + ;; Type 4 keyboards have a real kp-subtract and a f24 labelled `=' + ;; Type 5 keyboards have no key labelled `=' and a f24 labelled `-' + ,@(when (x-keysym-on-keyboard-sans-modifiers-p 'f24) + `((f24 ,(if (x-keysym-on-keyboard-sans-modifiers-p 'kp-subtract) + 'kp-equal + 'kp-subtract)))) - ;; Map f27 to home or kp-home, as appropriate - ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p "Home")) - '(("F27" f27 home))) - ((not (x-keysym-on-keyboard-sans-modifiers-p "KP_Home")) - '(("F27" f27 kp-home)))) + ;; Map f27 to home or kp-home, as appropriate + ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p 'home)) + '((f27 home))) + ((not (x-keysym-on-keyboard-sans-modifiers-p 'kp-home)) + '((f27 kp-home)))) - ;; Map f29 to prior or kp-prior, as appropriate - ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p "Prior")) - '(("F29" f29 prior))) - ((not (x-keysym-on-keyboard-sans-modifiers-p "KP_Prior")) - '(("F29" f29 kp-prior)))) + ;; Map f29 to prior or kp-prior, as appropriate + ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p 'prior)) + '((f29 prior))) + ((not (x-keysym-on-keyboard-sans-modifiers-p 'kp-prior)) + '((f29 kp-prior)))) - ;; Map f35 to next or kp-next, as appropriate - ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p "Next")) - '(("F35" f35 next))) - ((not (x-keysym-on-keyboard-sans-modifiers-p "KP_Next")) - '(("F35" f35 kp-next)))) + ;; Map f35 to next or kp-next, as appropriate + ,@(cond ((not (x-keysym-on-keyboard-sans-modifiers-p 'next)) + '((f35 next))) + ((not (x-keysym-on-keyboard-sans-modifiers-p 'kp-next)) + '((f35 kp-next)))) - ,@(cond ((x-keysym-on-keyboard-sans-modifiers-p "apRead") ; SunOS 4.1.1 - '(("apRead" apRead f11) ("apEdit" apEdit f12))) - ((x-keysym-on-keyboard-sans-modifiers-p "SunF36") ; SunOS 5 - '(("SunF36" SunF36 f11) - ("SunF37" SunF37 f12) - ("F11" f11 stop) - ("F12" f12 again)))) - ) - do (when (x-keysym-on-keyboard-sans-modifiers-p x-name) - (x-remap-keysyms-using-function-key-map from-key to-key))) + ,@(cond ((x-keysym-on-keyboard-sans-modifiers-p 'apRead) ; SunOS 4.1.1 + '((apRead f11) (apEdit f12))) + ((x-keysym-on-keyboard-sans-modifiers-p 'SunF36) ; SunOS 5 + '((SunF36 f11) + (SunF37 f12) + (f11 stop) + (f12 again)))) + ) + do (when (x-keysym-on-keyboard-sans-modifiers-p from-key) + (x-remap-keysyms-using-function-key-map from-key to-key))) -(unintern 'x-remap-keysyms-using-function-key-map) + (unintern 'x-remap-keysyms-using-function-key-map) ;; for each element in the left column of the above table, alias it ;; to the thing in the right column. Then do the same for many, but ;; not all, modifier combinations. ;; ;; (Well, we omit hyper and super. #### Handle this some other way!) -; (while mapping -; (let ((mods '(() (shift) (control) (meta) (alt)))) -; (while mods -; (let ((k1 (vector (append (car mods) (list (car (car mapping)))))) -; (k2 (vector (append (car mods) (list (cdr (car mapping))))))) -; (define-key global-map k1 k2)) -; (setq mods (cdr mods)))) -; (setq mapping (cdr mapping)))) + ;; (while mapping + ;; (let ((mods '(() (shift) (control) (meta) (alt)))) + ;; (while mods + ;; (let ((k1 (vector (append (car mods) (list (car (car mapping)))))) + ;; (k2 (vector (append (car mods) (list (cdr (car mapping))))))) + ;; (define-key global-map k1 k2)) + ;; (setq mods (cdr mods)))) + ;; (setq mapping (cdr mapping)))) ;;; I've extended keyboard-translate-table to work over keysyms. ;;; [FSF Emacs has something called `system-key-alist' that is @@ -188,71 +188,71 @@ ;;; it's brain-dead in the typically FSF way, and associates *numbers* ;;; (who knows where the hell they come from?) with symbols.] --ben -;;; And I've made it into a function which is NOT called by default --mrb +;;; And I've made it into a function which is NOT called by default --martin -(defun sun-x11-keyboard-translate () - "Remap Sun's X11 keyboard. + (defun sun-x11-keyboard-translate () + "Remap Sun's X11 keyboard. Keys with names like `f35' are remapped, at a low level, to more mnemonic ones,like `kp-3'." - (interactive) + (interactive) - (keyboard-translate - 'f11 'stop ; the type4 keyboard Sun/MIT name - 'f36 'stop ; the type5 keyboard Sun name - 'cancel 'stop ; R6 binding - 'f12 'again ; the type4 keyboard Sun/MIT name - 'f37 'again ; the type5 keyboard Sun name - 'f13 'props ; - 'SunProps 'props ; R6 binding - 'f14 'undo ; - 'f15 'front ; - 'SunFront 'front ; R6 binding - 'f16 'copy ; - 'SunCopy 'copy ; R6 binding - 'f17 'open ; - 'SunOpen 'open ; R6 binding - 'f18 'paste ; - 'SunPaste 'paste ; R6 binding - 'f19 'find ; - 'f20 'cut ; - 'SunCut 'cut ; R6 binding - ;; help is ok - 'f21 'pause - 'f22 'prsc - 'f23 'scroll - ;; num_lock is ok - ;;'f24 'kp-equal) ; type4 only! - 'f25 'kp-divide ; - 'f26 'kp-multiply ; - 'f24 'kp-subtract ; type5 only! - 'f27 'kp-7 ; - ;; up is ok - 'f29 'kp-9 - ;; left is ok - 'f31 'kp-5 - ;; right is ok - ;; kp-add is ok - 'f33 'kp-1 ; the Sun name - 'r13 'end ; the MIT name - ;; down is ok - 'f35 'kp-3 - ;; insert is ok - ;; delete is ok - ;; kp-enter is ok - 'SunF36 'f11 ; Type 5 keyboards - 'SunF37 'f12 ; Used to be Stop & Again - )) + (keyboard-translate + 'f11 'stop ; the type4 keyboard Sun/MIT name + 'f36 'stop ; the type5 keyboard Sun name + 'cancel 'stop ; R6 binding + 'f12 'again ; the type4 keyboard Sun/MIT name + 'f37 'again ; the type5 keyboard Sun name + 'f13 'props ; + 'SunProps 'props ; R6 binding + 'f14 'undo ; + 'f15 'front ; + 'SunFront 'front ; R6 binding + 'f16 'copy ; + 'SunCopy 'copy ; R6 binding + 'f17 'open ; + 'SunOpen 'open ; R6 binding + 'f18 'paste ; + 'SunPaste 'paste ; R6 binding + 'f19 'find ; + 'f20 'cut ; + 'SunCut 'cut ; R6 binding + ;; help is ok + 'f21 'pause + 'f22 'prsc + 'f23 'scroll + ;; num_lock is ok + ;;'f24 'kp-equal) ; type4 only! + 'f25 'kp-divide ; + 'f26 'kp-multiply ; + 'f24 'kp-subtract ; type5 only! + 'f27 'kp-7 ; + ;; up is ok + 'f29 'kp-9 + ;; left is ok + 'f31 'kp-5 + ;; right is ok + ;; kp-add is ok + 'f33 'kp-1 ; the Sun name + 'r13 'end ; the MIT name + ;; down is ok + 'f35 'kp-3 + ;; insert is ok + ;; delete is ok + ;; kp-enter is ok + 'SunF36 'f11 ; Type 5 keyboards + 'SunF37 'f12 ; Used to be Stop & Again + )) - + ;;; OpenWindows-like "find" processing. ;;; As far as I know, the `find' key is a Sunism, so we do that binding ;;; here. This is the only Sun-specific keybinding. (The functions ;;; themselves are in x-win.el in case someone wants to use them when ;;; not running on a Sun display.) -(define-key global-map 'find 'ow-find) -(define-key global-map '(shift find) 'ow-find-backward) + (define-key global-map 'find 'ow-find) + (define-key global-map '(shift find) 'ow-find-backward) -) + ) ;;; x-win-sun.el ends here