stumpwm/key-mapping.lisp @ 1e75bf5d6f48

More
author Steve Losh <steve@stevelosh.com>
date Wed, 08 May 2024 10:22:28 -0400
parents 4e1d6d6873fe
children cf74bfa5845a
(in-package :stumpwm-user)

;;; Conventions:
;;;
;;; * Hyper-dir: move focus
;;; * Hyper-Shift-dir: move window
;;; * Hyper-Shift-Control-dir: swap window
;;; * Hyper-F*: hardware
;;; * Shift-F*: timers
;;; * Hyper-Super-*: layout
;;; * Hyper-*: miscellaneous
;;; * Super-GAMERMOUSE: duplicate stuff to avoid swapping back


(defmacro define-top-keys (&body keyforms)
  `(progn ,@(loop :for form :in keyforms
                  :collect `(define-key *top-map*
                              (kbd ,(first form))
                              ,(second form)))))


(define-top-keys ;; miscellaneous
  ("H-m" "terminal")
  ("H-M" "mark")
  ("H-SunPageUp" "st-font-up")
  ("H-SunPageDown" "st-font-down")
  ("H-z" "fullscreen")
  ("H-F4" "switch-yubikeys")
  ("H-\\" "pass-personal")
  ("H-|" "generate-password")
  ("s-1" "pass-um-1")
  ("s-2" "pass-um-2")
  ("H-b" "browser")
  ("H-O" "spotify")
  ("H-o" "files")
  ("H-P" "papers")
  ("F26"   "prev")
  ("S-F26" "next")
  ("H-q" "exec lock-screen")
  ("H-y" "screenshot")
  ("H-f" "save-fucked-screenshot")
  ("H-F" "delete-fucked-screenshot")
  ("H-r" "rain")
  ("H-V" "vlc")
  ("H-e" "budget")
  ("H-E" "spend")
  ("S-XF86AudioMute" "terminal-font-size-show")
  ("S-XF86AudioRaiseVolume" "terminal-font-size-down") ; todo unfuck the backwards mapping in qmk
  ("S-XF86AudioLowerVolume" "terminal-font-size-up")
  ("C-BackSpace" "clear-notifications"))

(define-top-keys ;; clipboard
  ("H-c" "show-clipboard-history")
  ("H-C" "clear-clipboard-history")
  ("H-u" "generate-random-uuid")
  ("H-B" "bee-movie-script"))

(define-top-keys ;; movement
  ("H-h" "move-focus* left")
  ("H-j" "move-focus down")
  ("H-k" "move-focus up")
  ("H-l" "move-focus* right")

  ("H-H" "move-window left")
  ("H-J" "move-window down")
  ("H-K" "move-window up")
  ("H-L" "move-window right")

  ("H-1" "gselect 1")
  ("H-2" "gselect 2")
  ("H-3" "gselect 3")
  ("H-4" "gselect 4")
  ("H-5" "gselect 5")
  ("H-6" "gselect 6")

  ("KP_End"       "gselect 1")
  ("KP_Down"      "gselect 2")
  ("KP_Page_Down" "gselect 3")
  ("KP_Left"      "gselect 4")
  ("KP_Begin"     "gselect 5")
  ("KP_Right"     "gselect 6")
  ("KP_Home"      "gselect 7")
  ("KP_Up"        "gselect 8")
  ("KP_Page_Up"   "gselect 9")

  ("H-!" "gmove 1")
  ("H-@" "gmove 2")
  ("H-#" "gmove 3")
  ("H-$" "gmove 4")
  ("H-%" "gmove 5")
  ("H-^" "gmove 6")

  ("C-H-H" "exchange-direction left")
  ("C-H-J" "exchange-direction down")
  ("C-H-K" "exchange-direction up")
  ("C-H-L" "exchange-direction right")

  ("H-`" "next")
  ("S-H-`" "prev")
  ("H-n" "next-in-frame")
  ("H-p" "prev-in-frame")
  ("H-N" "pull-hidden-next")
  ("H-," "pull-from-windowlist"))


(define-top-keys ;; splitting
  ("H-s" "sane-vsplit")
  ("H-v" "sane-hsplit")
  ("H-=" "balance-frames"))

(define-top-keys ;; killing
  ("H-w" "delete")
  ("H-W" "kill")
  ("H-BackSpace" "remove")
  ("S-H-BackSpace" "kill-and-remove")
  ("H-Delete" "gkill"))

(define-top-keys ;; naming
  ("H-'" "title"))

(define-top-keys ;; sound
  ("H-F1" "mute")
  ("H-F2" "volume-down")
  ("H-F3" "volume-up")
  ("XF86AudioMute" "exec mute")
  ("XF86AudioRaiseVolume" "volume-down") ; todo unfuck the backwards mapping in qmk
  ("XF86AudioLowerVolume" "volume-up"))

(define-top-keys ;; screen
  ("H-F5" "rotate-brightness-down")
  ("H-F6" "rotate-brightness-up")
  ("H-F7" "screen-laptop")
  ("H-F8" "screen-external"))

(define-top-keys ;; layout
  ("s-H-o" "only")
  ("s-H-t" "restore-from-file thirds")
  ("s-H-m" "restore-from-file dev")
  ("s-H-s" "restore-from-file streaming")
  ("s-H-w" "restore-from-file work")
  ("s-H-z" "restore-from-file zoom"))

(define-top-keys ;; timers
  ("s-F7"  "tea-timer")
  ("s-F9"  "run-pop-timer")
  ("s-F8"  "set-pop-timer")
  ("s-p"   "posture-start")
  ("s-P"   "posture-stop")
  ("s-y"   "posture-answer-yes")
  ("s-h"   "posture-answer-meh")
  ("s-n"   "posture-answer-no")
  ("s-\\"  "posture-toggle-pause")
  ("s-o"   "posture-snooze"))

(define-top-keys ;; stump
  ("Pause" "terminal") ; jesus christ
  ("H-F9"  "sleep-machine")
  ("H-F10" "toggle-stumptray")
  ("H-F11" "toggle-current-mode-line")
  ("H-F12" "refresh-heads"))


;;; The G A M E R M O U S E:
;;;
;;; +----------+----------+----------+                 _____
;;; |          |    ^     |          |                /     \            +--------+
;;; |          |    |     |          |               |       |           |        |
;;; |          |   move   |          |        group  |       |  group    |        |
;;; +----------+----------+----------+        <----- |       | ----->    |        |
;;; |          |          |          |               |       |           |        |
;;; |  move    |          |   move   |               |       |           |        |
;;; |   <--    |          |   -->    |                \_____/            |  kill  |
;;; +----------+----------+----------+                                   |        |
;;; |          |   move   |          |                                   |        |
;;; |          |    |     |          |              +---------+          |        |
;;; |          |    v     |          |              |         |          |        |
;;; +----------+----------+----------+              |  next   |          |        |
;;; |  split   |  FULL    |  split   |              |         |          +--------+
;;; |   [-]    |  SCREEN  |   [|]    |              +---------+
;;; |          |          |          |              |         |
;;; +----------+----------+----------+              |  prev   |
;;;                                                 |         |
;;;                                                 +---------+
(define-top-keys ;; GAMER MOUSE
  ("s-$" "move-window left")
  ("s-*" "move-window down")
  ("s-@" "move-window up")
  ("s-^" "move-window right")
  ("M-s-Left"  "gprev")
  ("M-s-Right" "gnext")
  ("s-Home" "next-in-frame")
  ("s-End"  "prev-in-frame")
  ("s-+" "sane-hsplit")
  ("s-)" "sane-vsplit")
  ("s-_" "fullscreen") 
  ("s-Delete" "remove")
  )


;; (stumpwm::unbind-remapped-keys)
(define-remapped-keys
  '(("st-256color"
     ("s-c" . "C-C")
     ("s-v" . "C-V")
     ("C-=" . "S-C-SunPageUp")
     ("C--" . "S-C-SunPageDown")
     ("C-0" . "S-C-Home"))
    ("(firefox|Google-chrome|Chromium-browser)"
     ("s-[" . "C-S-Tab")
     ("s-]" . "C-Tab")
     ("C-a" . "Home")
     ("C-e" . "End")
     ;; I always try to hit ctrl-d to kill a browser window because I'm so used
     ;; to terminal windows, and it ends up bookmarking the damn page.  In the
     ;; interest of not having a random collection of bookmarks grow over time,
     ;; I'll just add a mapping to compensate for my stupid brain.
     ("C-d" . "C-w")
     ;; todo debug why this breaks a really fast C-a-k roll
     ;; ("C-a" . "Home")
     ;; ("C-e" . "End")
     ("s-a" . "C-a")
     ("s-d" . "C-d")
     ("s-l" . "C-l")
     ("s-t" . "C-t")
     ("s-w" . "C-w")
     ("s-r" . "C-r")
     ("s-f" . "C-f")
     ("s-z" . "C-z")
     ("s-x" . "C-x")
     ("s-c" . "C-c")
     ("s-v" . "C-v"))
    (""
     ("s-z" . "C-z")
     ("s-x" . "C-x")
     ("s-c" . "C-c")
     ("s-v" . "C-v"))))