1 ;;; xwem-keydefs.el --- Define standard XWEM keybindings.
3 ;; Copyright (C) 2003-2005 by XWEM Org.
5 ;; Author: Zajcev Evgeny <zevlg@yandex.ru>
6 ;; Created: Fri Dec 12 15:47:42 MSK 2003
7 ;; Keywords: xwem, xlib
8 ;; X-CVS: $Id: xwem-keydefs.el,v 1.12 2005-04-04 19:54:12 lg Exp $
10 ;; This file is part of XWEM.
12 ;; XWEM is free software; you can redistribute it and/or modify it
13 ;; under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation; either version 2, or (at your option)
17 ;; XWEM is distributed in the hope that it will be useful, but WITHOUT
18 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
20 ;; License for more details.
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with XEmacs; see the file COPYING. If not, write to the Free
24 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27 ;;; Synched up with: Not in FSF
37 (require 'xwem-compat)
39 (defmacro xwem-keymap-put-prop (keymap prop value)
40 "In on of xwem KEYMAP put property PROP with VALUE."
41 `(setplist ,keymap (plist-put (symbol-plist ,keymap) ,prop ,value)))
43 (put 'xwem-keymap-put-prop 'lisp-indent-function 2)
46 (defvar xwem-default-parent-map (make-sparse-keymap 'XWEM-default-parent)
47 "Default parent keymap for all override keymaps.")
50 (defvar xwem-global-map (make-sparse-keymap 'XWEM-global-map)
51 "XWEM's global keymap.
54 \\{xwem-global-map}.")
55 (set-keymap-parents xwem-global-map (list xwem-default-parent-map))
59 ;; XWEM keymap prefixes may have properties:
61 ;; * 'cursor - Cursor to use when entering keymap
62 ;; * 'prompt - Prompt to show when entering keymap
66 (xwem-define-prefix-command 'xwem-Hyper-X-prefix t)
67 (defvar xwem-hyp-x-map (symbol-function 'xwem-Hyper-X-prefix)
68 "Keymap for extended (\\<xwem-global-map>\\[xwem-Hyper-X-prefix]) commands.
72 (define-key xwem-global-map (xwem-kbd "H-x") 'xwem-Hyper-X-prefix)
75 (xwem-define-prefix-command 'xwem-help-prefix t)
76 (defvar xwem-help-map (symbol-function 'xwem-help-prefix)
77 "Keymap for help (\\<xwem-global-map>\\[xwem-help-prefix]) commands.
81 (xwem-keymap-put-prop 'xwem-help-prefix 'cursor 'xwem-cursor-help)
82 (xwem-keymap-put-prop 'xwem-help-prefix 'prompt
83 '(concat (single-key-description xwem-last-event) " "
84 (substitute-command-keys
85 "(Type \\<xwem-help-map>\\[xwem-help-for-help] for help)")))
86 (define-key xwem-global-map (xwem-kbd "H-h") 'xwem-help-prefix)
88 ;;;###autoload(autoload 'xwem-root-prefix "xwem-keydefs" "Keymap for root window." nil 'keymap)
89 (xwem-define-prefix-command 'xwem-root-prefix t)
90 (defvar xwem-root-map (symbol-function 'xwem-root-prefix)
91 "Keymap for root window.
95 (set-keymap-parents xwem-root-map (list xwem-default-parent-map))
97 ;;;###autoload(autoload 'xwem-frame-prefix "xwem-keydefs" "Keymap for frames operations." nil 'keymap)
98 (xwem-define-prefix-command 'xwem-frame-prefix t)
99 (defvar xwem-frame-map (symbol-function 'xwem-frame-prefix)
100 "Keymap for frames operations.
104 (set-keymap-parents xwem-frame-map (list xwem-default-parent-map))
107 (xwem-define-prefix-command 'xwem-Hyper-X-4-prefix t)
108 (defvar xwem-hyp-x-4-map (symbol-function 'xwem-Hyper-X-4-prefix)
109 "Keymap for subcommands of \\<xwem-global-map>\\[xwem-Hyper-X-4-prefix].
112 \\{xwem-hyp-x-4-map}")
113 (define-key xwem-global-map (xwem-kbd "H-x 4") 'xwem-Hyper-X-4-prefix)
116 (xwem-define-prefix-command 'xwem-Hyper-X-5-prefix t)
117 (defvar xwem-hyp-x-5-map (symbol-function 'xwem-Hyper-X-5-prefix)
118 "Keymap for subcommands of \\<xwem-global-map>\\[xwem-Hyper-X-5-prefix].
121 \\{xwem-hyp-x-5-map}")
122 (define-key xwem-global-map (xwem-kbd "H-x 5") 'xwem-Hyper-X-5-prefix)
125 (xwem-define-prefix-command 'xwem-Hyper-X-7-prefix t)
126 (defvar xwem-hyp-x-7-map (symbol-function 'xwem-Hyper-X-7-prefix)
127 "Keymap for subcommands of \\<xwem-global-map>\\[xwem-Hyper-X-7-prefix].
130 \\{xwem-hyp-x-7-map}")
131 (define-key xwem-global-map (xwem-kbd "H-x 7") 'xwem-Hyper-X-7-prefix)
134 (xwem-define-prefix-command 'xwem-launcher-prefix t)
135 (defvar xwem-launcher-map (symbol-function 'xwem-launcher-prefix)
136 "Keymap for xwem launcher (\\<xwem-global-map>\\[xwem-launcher-prefix]) commands.
139 \\{xwem-launcher-map}")
140 (define-key xwem-global-map (xwem-kbd "H-a") 'xwem-launcher-prefix)
142 (xwem-define-prefix-command 'xwem-launcher-other-win-prefix)
143 (defvar xwem-launcher-other-win-map
144 (symbol-function 'xwem-launcher-other-win-prefix)
145 "Keymap for launcher in other window (\\<xwem-global-map>\\[xwem-launcher-other-win-prefix]) commands.
148 \\{xwem-launcher-other-win-map}")
149 (define-key xwem-hyp-x-4-map (xwem-kbd "H-a") 'xwem-launcher-other-win-prefix)
151 (xwem-define-prefix-command 'xwem-launcher-other-frame-prefix)
152 (defvar xwem-launcher-other-frame-map (symbol-function 'xwem-launcher-other-frame-prefix)
153 "Keymap for launcher in other frame (\\<xwem-global-map>\\[xwem-launcher-other-frame-prefix]) commands.
156 \\{xwem-launcher-other-frame-map}")
157 (define-key xwem-hyp-x-5-map (xwem-kbd "H-a") 'xwem-launcher-other-frame-prefix)
159 ;; Keyboard macros keymap
160 ;;;###autoload(autoload 'xwem-user-macros-prefix "xwem-keydefs" nil nil 'keymap)
161 (xwem-define-prefix-command 'xwem-user-macros-prefix t)
162 (defvar xwem-user-macros-map (symbol-function 'xwem-user-macros-prefix)
163 "Keymap of user defined keyboard macros (\\<xwem-global-map>\\[xwem-user-macros-prefix]) commands.
166 \\{xwem-user-macros-map}")
167 (set-keymap-default-binding xwem-user-macros-map 'xwem-keymacro-undefined)
168 (define-key xwem-user-macros-map (xwem-kbd "H-h") xwem-prefix-help-command)
169 (define-key xwem-global-map (xwem-kbd "H-m") 'xwem-user-macros-prefix)
171 ;; Window Resizing keymap
172 (xwem-define-prefix-command 'xwem-resize-prefix t)
173 (defvar xwem-hyp-resize-map (symbol-function 'xwem-resize-prefix)
174 "Keymap for window resize (\\<xwem-global-map>\\[xwem-resize-prefix]) commands.
177 \\{xwem-hyp-resize-map}")
178 (define-key xwem-global-map (xwem-kbd "H-r") 'xwem-resize-prefix)
180 (xwem-define-prefix-command 'xwem-Hyper-C-prefix)
181 (defvar xwem-hype-c-map (symbol-function 'xwem-Hyper-C-prefix)
182 "Keymap for H-c commands.
185 \\{xwem-Hyper-C-prefix}")
186 (define-key xwem-global-map (xwem-kbd "H-c") 'xwem-Hyper-C-prefix)
189 ;;; Default bindings for `xwem-global-map'
190 (set-keymap-default-binding xwem-global-map 'xwem-self-insert-or-undefined)
192 (define-key xwem-global-map (xwem-kbd "H-g") xwem-quit-command)
193 (define-key xwem-global-map (xwem-kbd "H-G") 'xwem-kbd-quit)
196 (define-key xwem-global-map (xwem-kbd "H-q") 'xwem-kbd-quote-command)
199 (define-key xwem-help-map (xwem-kbd "H-h") 'xwem-help-for-help)
200 (define-key xwem-help-map (xwem-kbd "b") 'xwem-help-describe-bindings)
201 (define-key xwem-help-map (xwem-kbd "c") 'xwem-help-clients)
202 (define-key xwem-help-map (xwem-kbd "f") 'xwem-help-frames)
203 (define-key xwem-help-map (xwem-kbd "w") 'xwem-help-wins)
204 (define-key xwem-help-map (xwem-kbd "k") 'xwem-help-describe-key)
205 (define-key xwem-help-map (xwem-kbd "h") 'xwem-help)
206 (define-key xwem-help-map (xwem-kbd "H-w") 'xwem-help-where-is)
207 (define-key xwem-help-map (xwem-kbd "H-f") 'xwem-help-function)
208 (define-key xwem-help-map (xwem-kbd "l") 'xwem-show-message-log)
209 (define-key xwem-help-map (xwem-kbd "s") 'xwem-strokes-list)
210 (define-key xwem-help-map (xwem-kbd "r") 'xwem-registers-list)
211 (define-key xwem-help-map (xwem-kbd "H-y") 'xwem-help-cutbuffers)
212 (define-key xwem-help-map (xwem-kbd "m") 'xwem-help-mode)
214 ;; Universal argument
215 (define-key xwem-global-map (xwem-kbd "H-u") 'xwem-universal-argument)
217 (define-key xwem-global-map (xwem-kbd "H--") 'xwem-universal-minus)
218 (define-key xwem-global-map (xwem-kbd "H-0") 'xwem-universal-digit)
219 (define-key xwem-global-map (xwem-kbd "H-1") 'xwem-universal-digit)
220 (define-key xwem-global-map (xwem-kbd "H-2") 'xwem-universal-digit)
221 (define-key xwem-global-map (xwem-kbd "H-3") 'xwem-universal-digit)
222 (define-key xwem-global-map (xwem-kbd "H-4") 'xwem-universal-digit)
223 (define-key xwem-global-map (xwem-kbd "H-5") 'xwem-universal-digit)
224 (define-key xwem-global-map (xwem-kbd "H-6") 'xwem-universal-digit)
225 (define-key xwem-global-map (xwem-kbd "H-7") 'xwem-universal-digit)
226 (define-key xwem-global-map (xwem-kbd "H-8") 'xwem-universal-digit)
227 (define-key xwem-global-map (xwem-kbd "H-9") 'xwem-universal-digit)
230 (define-key xwem-global-map (xwem-kbd "H-x (") 'xwem-keymacro-begin)
231 (define-key xwem-global-map (xwem-kbd "H-x )") 'xwem-keymacro-end)
232 (define-key xwem-global-map (xwem-kbd "H-x e") 'xwem-keymacro-play-last)
233 (define-key xwem-global-map (xwem-kbd "H-x q") 'xwem-keymacro-recursive-edit)
234 (define-key xwem-global-map (xwem-kbd "H-M-c") 'xwem-keymacro-exit-recursive-edit)
235 (define-key xwem-global-map (xwem-kbd "H-x H-k") 'xwem-edmacro-edit-kbd-macro)
237 ;; Moving across windows
238 (define-key xwem-global-map (xwem-kbd "H-x o") 'xwem-other-window)
239 (define-key xwem-global-map (xwem-kbd "H-n") 'xwem-frame-goto-next)
240 (define-key xwem-global-map (xwem-kbd "H-p") 'xwem-frame-goto-prev)
242 (define-key xwem-global-map (xwem-kbd "H-left") 'xwem-winmove-left)
243 (define-key xwem-global-map (xwem-kbd "H-right") 'xwem-winmove-right)
244 (define-key xwem-global-map (xwem-kbd "H-up") 'xwem-winmove-up)
245 (define-key xwem-global-map (xwem-kbd "H-down") 'xwem-winmove-down)
247 (define-key xwem-global-map (xwem-kbd "H-x +") 'xwem-balance-windows)
250 (define-key xwem-global-map (xwem-kbd "H-x 5 5") 'xwem-make-frame)
251 (define-key xwem-global-map (xwem-kbd "H-x 5 b") 'xwem-cl-switch-other-frame)
252 (define-key xwem-global-map (xwem-kbd "H-x 5 r") 'xwem-launch-program-other-frame)
253 (define-key xwem-global-map (xwem-kbd "H-x 5 Z") 'xwem-frame-showroot)
254 (define-key xwem-global-map (xwem-kbd "H-x 5 H-a x") 'xwem-launch-xterm-other-frame)
255 (define-key xwem-global-map (xwem-kbd "H-x 5 H-a m") 'xwem-launch-lupe-other-frame)
257 (define-key xwem-global-map (xwem-kbd "H-x 5 0") 'xwem-frame-destroy)
258 (define-key xwem-global-map (xwem-kbd "H-x 5 1") 'xwem-frame-fit-screen)
259 (define-key xwem-global-map (xwem-kbd "H-x 5 2") 'xwem-frame-sbs-vert-split)
260 (define-key xwem-global-map (xwem-kbd "H-x 5 3") 'xwem-frame-sbs-hor-split)
261 (define-key xwem-global-map (xwem-kbd "H-x 5 n") 'xwem-frame-set-name)
262 (define-key xwem-global-map (xwem-kbd "H-x 5 C-l") 'xwem-frame-lower)
263 (define-key xwem-global-map (xwem-kbd "H-x 5 C-r") 'xwem-frame-raise)
264 (define-key xwem-global-map (xwem-kbd "H-x 5 z") 'xwem-frame-hide)
265 (define-key xwem-global-map (xwem-kbd "H-x H-n") 'xwem-frame-next)
266 (define-key xwem-global-map (xwem-kbd "H-x H-p") 'xwem-frame-previous)
267 (define-key xwem-global-map (xwem-kbd "H-x 5 H-t") 'xwem-transpose-frames)
270 (define-key xwem-global-map (xwem-kbd "H-x 4 0") 'xwem-kill-cl-and-window)
271 (define-key xwem-global-map (xwem-kbd "H-x 4 b") 'xwem-cl-switch-other-win)
272 (define-key xwem-global-map (xwem-kbd "H-x 4 C-o") 'xwem-cl-switch-other-win)
273 (define-key xwem-global-map (xwem-kbd "H-x 4 r") 'xwem-launch-program-other-win)
274 (define-key xwem-global-map (xwem-kbd "H-x 4 H-M-l") 'xwem-cl-switch-to-other-in-other-win)
275 (define-key xwem-global-map (xwem-kbd "H-x 4 H-a x") 'xwem-launch-xterm-other-win)
276 (define-key xwem-global-map (xwem-kbd "H-x 4 H-a m") 'xwem-launch-lupe-other-win)
277 (define-key xwem-global-map (xwem-kbd "H-x 4 H-t") 'xwem-transpose-windows)
279 (define-key xwem-global-map (xwem-kbd "H-o") 'xwem-Hyper-X-4-prefix)
282 (define-key xwem-global-map (xwem-kbd "H-x 7 z") 'xwem-client-iconify)
283 (define-key xwem-global-map (xwem-kbd "H-x 7 Z") 'xwem-client-iconify-every)
284 (define-key xwem-global-map (xwem-kbd "H-x 7 0") 'xwem-client-kill)
285 (define-key xwem-global-map (xwem-kbd "H-x 7 1") 'xwem-client-iconify-others)
286 (define-key xwem-global-map (xwem-kbd "H-x 7 2") 'xwem-client-run-copy)
287 (define-key xwem-global-map (xwem-kbd "H-x 7 4") 'xwem-client-run-copy-other-win)
288 (define-key xwem-global-map (xwem-kbd "H-x 7 5") 'xwem-client-run-copy-other-frame)
289 (define-key xwem-global-map (xwem-kbd "H-x 7 i") 'xwem-client-info)
290 (define-key xwem-global-map (xwem-kbd "H-x 7 C-o") 'xwem-cl-switch-to-other)
291 (define-key xwem-global-map (xwem-kbd "H-x 7 p") 'xwem-cl-pop-to-client)
292 (define-key xwem-global-map (xwem-kbd "H-x 7 t") 'xwem-client-set-title)
293 (define-key xwem-global-map (xwem-kbd "H-x 7 H-t") 'xwem-cl-transpose)
294 (define-key xwem-global-map (xwem-kbd "H-x 7 f") 'xwem-toggle-fullscreen)
296 (define-key xwem-global-map (xwem-kbd "H-=") 'xwem-client-info)
298 (define-key xwem-global-map (xwem-kbd "H-@") 'xwem-client-set-mark)
299 (define-key xwem-global-map (xwem-kbd "H-SPC") 'xwem-client-set-mark)
300 (define-key xwem-global-map (xwem-kbd "H-x H-x") 'xwem-client-exchange-selected-and-mark)
301 (define-key xwem-global-map (xwem-kbd "H-x k") 'xwem-client-query-kill)
303 (define-key xwem-global-map (xwem-kbd "H-x z") 'xwem-client-iconify)
306 (define-key xwem-global-map (xwem-kbd "H-a H-s") 'xwem-launcher-toggle-split-type)
307 (define-key xwem-global-map (xwem-kbd "H-a H-f") 'xwem-launcher-toggle-frame-type)
308 (define-key xwem-global-map (xwem-kbd "H-a l") 'xwem-launch-xlock)
309 (define-key xwem-global-map (xwem-kbd "H-a x") 'xwem-launch-xterm)
310 (define-key xwem-global-map (xwem-kbd "H-a m") 'xwem-launch-lupe) ; Syn for 'm' is magnifier
311 (define-key xwem-global-map (xwem-kbd "H-a e") 'make-frame)
314 (define-key xwem-global-map (xwem-kbd "H-r h") 'xwem-window-enlarge-horizontally)
315 (define-key xwem-global-map (xwem-kbd "H-r v") 'xwem-window-enlarge-vertically)
318 (define-key xwem-global-map (xwem-kbd "H-s") 'xwem-frame-switch-nth)
319 (define-key xwem-global-map (xwem-kbd "H-S") 'xwem-frame-switch-nth-linkage)
321 (define-key xwem-global-map (xwem-kbd "H-x 0") 'xwem-window-delete)
322 (define-key xwem-global-map (xwem-kbd "H-x 3") 'xwem-window-split-horizontally)
323 (define-key xwem-global-map (xwem-kbd "H-x 2") 'xwem-window-split-vertically)
324 (define-key xwem-global-map (xwem-kbd "H-x 1") 'xwem-window-delete-others)
326 (define-key xwem-global-map (xwem-kbd "H-t") 'xwem-cl-transpose)
327 (define-key xwem-global-map (xwem-kbd "H-o H-t") 'xwem-transpose-windows)
328 (define-key xwem-global-map (xwem-kbd "H-x H-t") 'xwem-transpose-frames)
330 (define-key xwem-global-map (xwem-kbd "H-M-l") 'xwem-cl-switch-to-other)
331 (define-key xwem-global-map (xwem-kbd "H-x H-l") 'xwem-switch-other-client)
333 (define-key xwem-global-map (xwem-kbd "H-x b") 'xwem-switch-client)
334 (define-key xwem-global-map (xwem-kbd "H-x a") 'xwem-attach-client)
335 (define-key xwem-global-map (xwem-kbd "H-x H-b") 'xwem-ixwem)
337 (define-key xwem-global-map (xwem-kbd "H-x r") 'xwem-launch-program)
338 (define-key xwem-global-map (xwem-kbd "H-:") 'xwem-eval-expression)
339 (define-key xwem-global-map (xwem-kbd "H-!") 'xwem-shell-command)
340 (define-key xwem-global-map (xwem-kbd "H-M-x") 'xwem-execute-extended-command)
341 (define-key xwem-global-map (xwem-kbd "H-#") 'xwem-mini-calc)
342 (define-key xwem-global-map (xwem-kbd "H-TAB") 'xwem-minibuffer-activate)
344 (define-key xwem-global-map (xwem-kbd "H-f12") 'xwem-misc-make-screenshot)
345 (define-key xwem-global-map (xwem-kbd "H-z") 'xwem-misc-pause)
346 (define-key xwem-global-map (xwem-kbd "H-pause") 'xwem-misc-pause)
349 (define-key xwem-global-map (xwem-kbd "H-x 6") 'xwem-register-win-config)
350 (define-key xwem-global-map (xwem-kbd "H-x 8") 'xwem-register-frame-config)
351 (define-key xwem-global-map (xwem-kbd "H-x /") 'xwem-register-client)
352 (define-key xwem-global-map (xwem-kbd "H-x j") 'xwem-register-jump)
355 (define-key xwem-global-map (xwem-kbd "H-f") 'xwem-forward-application)
356 (define-key xwem-global-map (xwem-kbd "H-b") 'xwem-backward-application)
358 (define-key xwem-global-map (xwem-kbd "H-]") 'xwem-clswi-next)
359 (define-key xwem-global-map (xwem-kbd "H-[") 'xwem-clswi-prev)
360 (define-key xwem-global-map (xwem-kbd "H-}") 'xwem-clswi-next-other-window)
361 (define-key xwem-global-map (xwem-kbd "H-{") 'xwem-clswi-prev-other-window)
362 (define-key xwem-global-map (xwem-kbd "H-x 4 H-]") 'xwem-clswi-next-other-window)
363 (define-key xwem-global-map (xwem-kbd "H-x 4 H-[") 'xwem-clswi-prev-other-window)
364 (define-key xwem-global-map (xwem-kbd "H-o H-]") 'xwem-clswi-next-other-window)
365 (define-key xwem-global-map (xwem-kbd "H-o H-[") 'xwem-clswi-prev-other-window)
368 (define-key xwem-global-map (xwem-kbd "H-w") 'xwem-copy-cutbuffer)
369 (define-key xwem-global-map (xwem-kbd "H-y") 'xwem-paste-cutbuffer)
372 (define-key xwem-global-map (xwem-kbd "H-x H-f") 'xwem-open-file)
373 ;; Making holer in frames
374 (define-key xwem-global-map (xwem-kbd "H-x h") 'xwem-holer-prefix)
376 (define-key xwem-global-map (xwem-kbd "H-W") 'xwem-worklog-prefix)
377 ;; Interactively edit client's property
378 (define-key xwem-global-map (xwem-kbd "H-c H-e") 'xwem-edit-client-properties)
380 ;; Compat layer, must move to xwem-compat.el
383 (define-key xwem-global-map [s-mouse-1] 'xwem-strokes-begin)
384 (define-key xwem-global-map [h-mouse-1] 'xwem-strokes-cmplx-begin))
387 ;; No-need to grab button1/button3
388 (define-key xwem-root-map (xwem-kbd "<button1>") 'xwem-popup-auto-menu)
389 (define-key xwem-root-map (xwem-kbd "<button3>") 'xwem-popup-clients-menu)
392 ;; No-need to grab button1/button3
393 (define-key xwem-frame-map (xwem-kbd "<button1>") 'xwem-frame-on-delim-resize)
394 (put 'xwem-frame-on-delim-resize 'xwem-no-grab t)
395 (define-key xwem-frame-map (xwem-kbd "<button3>") 'xwem-frame-on-delim-menu)
396 (put 'xwem-frame-on-delim-menu 'xwem-no-grab t)
397 ;; Frame imove/iresize
398 (define-key xwem-frame-map (xwem-kbd "Sh-C-button1") 'xwem-frame-imove)
399 (define-key xwem-frame-map (xwem-kbd "Sh-C-button3") 'xwem-frame-iresize)
402 (define-key xwem-default-parent-map (xwem-kbd "M-<button1>") 'xwem-strokes-begin)
403 (define-key xwem-default-parent-map (xwem-kbd "H-<button1>") 'xwem-strokes-cmplx-begin)
407 (provide 'xwem-keydefs)
409 ;;; xwem-keydefs.el ends here