;; 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] [?/])