Update -- Reorganise Keybindings
[syinit] / 90-keys.el
index 9d9edb7..1c302fe 100644 (file)
@@ -1,13 +1,13 @@
 ;; 02-keys.el --- Keybindings
 
-;; Copyright (C) 2007 - 2020 Steve Youngs
+;; Copyright (C) 2007 - 2021 Steve Youngs
 
 ;;     Author: Steve Youngs <steve@sxemacs.org>
 ;; Maintainer: Steve Youngs <steve@sxemacs.org>
 ;;    Created: <2007-12-02>
-;; Time-stamp: <Thursday Apr  9, 2020 06:44:18 steve>
+;; Time-stamp: <Monday 12 Apr 2021 13:03:19 (steve)>
 ;;   Download: <https://downloads.sxemacs.org/SYinits/>
-;;   HTMLised: <https://www.sxemacs.org/SYinits/02-keys.html>
+;;   HTMLised: <https://www.sxemacs.org/SYinits/90-keys.html>
 ;;   Git Repo: git clone https://git.sxemacs.org/syinit
 ;;   Keywords: init, compile
 
 ;;     
 
 ;;; Code:
-
 ;:*=======================
 ;:* Global key bindings
-(global-set-key "\C-xw" 'what-line)
+;;  Most global bindings are in this section, but there are a few
+;;  further down where it made sense.
+(global-set-key "\C-xw" #'what-line)
+(global-set-key "\C-xp" #'what-page)
 (global-set-key [f2] 'undo)
-(global-set-key [(super tab)] 'lisp-complete-symbol)
+(global-set-key [(control f2)] 'redo)
+(global-set-key [(hyper tab)] 'lisp-complete-symbol)
 (global-set-key [(meta f3)] 'view-file)
-(global-set-key [f5] "\M-w")
-(global-set-key [f6] "\C-y")
-(global-set-key [f7] 'save-buffer)
-(global-set-key [f8] 'start-kbd-macro)
-(global-set-key [f9] 'end-kbd-macro)
 (global-set-key [(control f8)] 'call-last-kbd-macro)
 (global-set-key [(control f5)] 'sy-extent-kill-save)
-(global-set-key [XF86Copy] #'copy-primary-selection)
-(global-set-key [XF86Cut] #'kill-primary-selection)
-(global-set-key [XF86Paste] #'yank-clipboard-selection)
+(global-set-key [(meta ?W)] 'sy-add-to-kill)
+;;; Primary Selection
+;; Originally I had these on XF86{Copy,Cut,Paste} but I got a new
+;; keyboard and I no longer have those keys defined. :-(
+; (global-set-key [XF86Copy] #'copy-primary-selection)
+; (global-set-key [XF86Cut] #'kill-primary-selection)
+; (global-set-key [XF86Paste] #'yank-clipboard-selection)
+;; I don't like the defaults for #'copy-primary-selection I think in
+;; an Emacs world it's backwards...
+;;    #'copy-region -- `M-w' #'copy-primary-selection -- `C-insert'
+;; So, lets remove the default and put `C-insert' on
+;; #'kill-primary-selection and `M-insert' on #'copy-primary-selection
+(global-set-key [(control insert)] nil)
+(global-set-key [(meta insert)] #'copy-primary-selection)
+(global-set-key [(control insert)] #'kill-primary-selection)
+
+;; Audio keybindings
+(global-set-key [XF86AudioPlay] #'mpd-playpause)
+(global-set-key [XF86AudioStop] #'mpd-stop)
+(global-set-key [XF86AudioNext] #'mpd-next-track)
+(global-set-key [XF86AudioPrev] #'mpd-previous-track)
+(global-set-key [XF86AudioRaiseVolume] #'mpd-volume-up)
+(global-set-key [XF86AudioLowerVolume] #'mpd-volume-down)
+(global-set-key [XF86AudioMute] #'mpd-volume-mute/unmute)
+
+;; comment-region
+(global-set-key '(control f12)  'comment-or-uncomment-region)
+(global-set-key '(meta f12) 'comment-or-uncomment-region)
+
+;; speedbar
+(global-set-key [(f4)] 'speedbar-get-focus)
+
+;; ffap
+(global-set-key [f3] #'find-file-at-point)
+(global-set-key [(control x) ?4 f3] #'ffap-other-window)
+(global-set-key [(control x) ?5 f3] #'ffap-other-frame)
+(global-set-key [(shift button3)] #'ffap-at-mouse)
+(global-set-key [(control shift button3)] #'ffap-menu)
+
+;; DuckDuckGo
+(global-set-key [XF86Search] #'ddg-search)
+(global-set-key [(control XF86Search)] #'ddg-search-region)
+
+;; Misc
+(global-set-key '(control f1) 'match-paren)
+(global-set-key '(control f3) 'elispcomment)
+(global-set-key [(control ?x) ?4 ?i] #'sy-init-file-other-window)
+(global-set-key [(hyper ?n)] #'numpoints)
+
+;; TTY
+(define-key global-tty-map [(control ?c) ?r] #'sy-switch-to-riece)
+
+;:*=======================
+;:* Only when in Sawfish (or not)
+(unless (sawfish-running-p)
+  (global-set-key [XF86Messenger] #'LXQt-riece)
+  (global-set-key [XF86Calendar] #'calendar)
+  (global-set-key [XF86Mail] #'gnus-other-frame))
 
 ;:*=======================
 ;:* compose-key tô t¥pé fünky £ïttlê chãrs
 (setq menu-accelerator-prefix nil)
 (define-key global-map [f10] 'accelerate-menu)
 
-;:*=======================
-;:* Popup window with buffer list ; from XEmacs FAQ (2.61)
-(defun cw-build-buffers ()
-  "Popup buffer menu."
-  (interactive "@")
-  (run-hooks 'activate-menubar-hook)
-  (popup-menu (car (find-menu-item current-menubar '("Buffers")))))
-(global-set-key '(control !) 'cw-build-buffers)
-
 ;:*=======================
 ;:* keymapping to resize frames
 (define-key global-map [(control x) (up)] #'shrink-window)
 ;:*=======================
 ;:* Bind the Euro to a key
 (define-key global-map "\C-ce"
-  (lambda () 
-    (interactive) 
+  (lambda ()
+    (interactive)
     (insert (make-char 'latin-iso8859-15 #x24))))
+;; OK yeah, that's cool and all, but lets do it again but with unicode.
+;; And while we're at it, how about a copyright, registered, trademark,
+;; degree, pound, and yen.
+(defun sy-insert-unicode (c)
+  "Insert unicode character C at point.
+
+Argument C, a character can be one of the following set
+
+    `c' -- Copyright symbol
+    `d' -- Degree symbol
+    `e' -- Euro symbol
+    `p' -- Pound Sterling symbol
+    `r' -- Registered symbol
+    `t' -- Trademark symbol
+    `y' -- Yen symbol"
+  (interactive "*cCharacter [cdeprty]: ")
+  (let ((chars '((?c . #x00a9)    ; copyright
+                (?d . #x00b0)    ; degree
+                (?e . #x20ac)    ; euro
+                (?p . #x00a3)    ; pound
+                (?r . #x00ae)    ; registered
+                (?t . #x2122)    ; trademark
+                (?y . #x00a5)))) ; yen
+    (insert (ucs-to-char (cdr (assoc c chars))))))
+(global-set-key [(control c) u] #'sy-insert-unicode)
 
 ;:*=======================
 ;:* Toggle in/out of eshell
 (define-key global-map [(button5)] 'mwheel-scroll)
 (define-key global-map [(shift button4)] 'mwheel-scroll)
 (define-key global-map [(shift button5)] 'mwheel-scroll)
-(define-key global-map [(button9)] 'beginning-of-buffer)
 (define-key global-map [(button8)] 'end-of-buffer)
-(define-key global-map [(button10)] 'recenter)
+(define-key global-map [(shift button8)] #'scroll-up-command)
+(define-key global-map [(button9)] 'beginning-of-buffer)
+(define-key global-map [(shift button9)] #'scroll-down-command)
+
+;:*=======================
+;:* global, but just in the C-x map
+;; timeclock
+(define-key ctl-x-map "ti" 'timeclock-in)
+(define-key ctl-x-map "to" 'timeclock-out)
+(define-key ctl-x-map "tc" 'timeclock-change)
+(define-key ctl-x-map "tr" 'timeclock-reread-log)
+(define-key ctl-x-map "tu" 'timeclock-update-modeline)
+(define-key ctl-x-map "tw" 'timeclock-when-to-leave-string)
+
+\f
+;:*=======================
+;:* Mode Level Bindings
+;;
+;; Riece (IRC client)
+(define-key riece-command-map (kbd "C-c C") #'sy-riece-clear-unread-chans)
+(define-key riece-command-map (kbd "C-c r")
+  #'sy-riece-relist-chans-clear-blanks)
+(define-key riece-command-map (kbd "C-c m") #'sy-riece-command-mute-user)
+(define-key riece-command-map (kbd "C-b") #'sy-riece-command-ban-user)
+(define-key riece-command-map (kbd "C-o") #'sy-riece-command-quick-op)
+(define-key riece-command-map (kbd "C-c n") #'sy-riece-say-now-playing)
+(define-key riece-command-map (kbd "C-c V") #'sy-riece-say-version)
+(define-key riece-command-map (kbd "C-c s") #'sy-riece-show-off)
+(define-key riece-command-map (kbd "C-c f") #'sy-riece-fuck-you)
+(define-key riece-command-map (kbd "C-c b") #'sy-riece-add-rem-biff-channel)
+(define-key riece-command-map (kbd "C-c ?") #'sy-riece-think)
+(define-key riece-command-map (kbd "C-c R") #'sy-riece-reverse)
+(define-key riece-command-map (kbd "C-c T") #'sy-riece-sxemacs-topic-version-update)
+(define-key riece-command-map (kbd "C-c U") #'sy-riece-sxe-uptime)
+(define-key riece-command-map [a] #'sy-riece-say-all-purpose)
+(define-key riece-command-map (kbd "C-c l") 'sy-riece-cleanup-login)
+
+;; Howm
+;; The howm people are nuts, they bind C-h to scroll-down
+;; Get rid of it and replace with DEL and BACKSPACE
+(define-key howm-menu-mode-map "\C-h" nil)
+(define-key howm-menu-mode-map [delete] #'scroll-down)
+(define-key howm-menu-mode-map [backspace] #'scroll-down)
+(define-key riffle-summary-mode-map "\C-h" nil)
+(define-key riffle-summary-mode-map [delete] #'scroll-other-window-down)
+(define-key riffle-summary-mode-map [backspace] #'scroll-other-window-down)
+(define-key riffle-contents-mode-map "\C-h" nil)
+(define-key riffle-contents-mode-map [delete] #'scroll-down)
+(define-key riffle-contents-mode-map [backspace] #'scroll-down)
+;; Add a binding to show the active todo list
+(global-set-key [(control ?c) ?t] #'howm-list-active-todo)
+(global-set-key [(hyper ?s) ?r] #'snap-record)
+
+;; iswitchb
+(defun sy-iswitchb-keys ()
+  "My keybindings for iswitchb."
+  (define-key iswitchb-mode-map " " 'iswitchb-next-match)
+  (define-key iswitchb-mode-map [(control ?\ )] 'iswitchb-prev-match)
+  (define-key iswitchb-mode-map "\C-a" 'iswitchb-toggle-ignore))
+(add-hook 'iswitchb-define-mode-map-hook #'sy-iswitchb-keys)
+
+;; easypg
+(define-key epa-key-list-mode-map [?O] #'sy-epa-export-key)
+
+;; manual
+(define-key Manual-mode-map [(control return)] #'sy:Manual-follow-xref-kbd)
+(define-key Manual-mode-map [button1] #'Manual-follow-xref)
+
+;; RefTeX
+(define-key reftex-mode-map [(shift button=)] 'reftex-mouse-view-crossref)
+
+;; Fume
+(define-key fume-mode-map [(control button3)] #'mouse-function-menu)
+
+;; dired
+(define-key dired-mode-map [(control ?c) ?p] #'sy-dired-play-audio)
 
+\f
 ;:*=======================
 ;:* Numeric keypad
 (define-key key-translation-map [kp-divide]     [?/])