-
Notifications
You must be signed in to change notification settings - Fork 0
/
kbd.lisp
140 lines (120 loc) · 3.93 KB
/
kbd.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
;;; SAMUEL'S STUMPWM CONFIG ::: Key Binds
(in-package :stumpwm)
;;; PREFIX, EOU
; These bindings underpin the keyboard interaction inside stumpwm.
(set-prefix-key (kbd "s-SPC"))
(defun show-key-seq (key seq val)
"Shows the currently active key sequence if in a map
e.g. s-t OR s-f"
(message (print-key-seq (reverse seq))))
(add-hook *key-press-hook* 'show-key-seq)
;;X86
(define-keysym #x1008ff11 "XF86AudioLowerVolume")
(define-keysym #x1008ff12 "XF86AudioMute")
(define-keysym #x1008ff13 "XF86AudioRaiseVolume")
(defun expand-map (name bindings)
(loop for bind in bindings
for keys = (ensure-list (first bind))
for cmd = (second bind)
append (loop for key in keys
collect `(define-key ,name (kbd ,key) ,cmd))))
(defmacro extmap (name bindings)
`(let ((_ "")) ; lambda macro?
,@(expand-map name bindings)))
(defmacro defmap (name bindings)
`(setq ,name
(let ((m (make-sparse-keymap)))
,@(expand-map 'm bindings)
m)))
(extmap *top-map*
( ;; MAPS
("s-o" '*application-map*)
("s-b" '*bluetooth-map*)
("s-t" '*toggle-cmds*)
("s-f" '*frame-cmds*)
("s-g" '*groups-map*)
;; QUALITY OF LIFE
("s-c" "abort")
("s-?" "show-top-map")
("s-RET" "terminal")
("S-s-RET" "terminal new") ; TODO: implement new option in command
("s-n" "pull-hidden-next")
(("s-TAB" "s-p") "pull-hidden-previous"
"an attempt a left-handed 'last window' bind")
;; INPUT BASED (fire away, c-y)
("s-:" "colon"
"fire into command mode")
(("s-d" "s-;") "exec"
"fire into shell execution context")
(("s-D" "s-M-;") "eval"
"fire into cl eval; arbitrary sexps.")
;; SUPER FUNCTION
("s-F2" "redisplay")
("s-F8" "select-display")
(("s-F9" "s-u") "srun ducksearch")
("s-b" "banish"
"send mouse to max x,y on screen")
("s-ESC" "quit"
"quits stumpwm")
("s-=" "vol-up")
("s--" "vol-down")
("s-x" "lock")
;; RECORDING
("SunPrint_Screen" "screenpick") ; printscr ;; TODO: port to CL
("Sys_Req" "screennow") ; SHIFT ^ ;; TODO: port to CL
("s-SunPrint_Screen" "screenrecord") ; SUPER ^ ;; TODO: port to CL
;; bindsym $mod+Scroll_Lock exec --no-startup-id "killall screenkey || screenkey"
;; bindsym $mod+Delete exec $stoprec
;; bindsym XF86Launch1 exec --no-startup-id xset dpms force off
;; NAVIGATION
("s-h" "move-focus left")
("s-j" "move-focus down")
("s-k" "move-focus up")
("s-l" "move-focus right")
;;
("s-H" "move-window left")
("s-J" "move-window down")
("s-K" "move-window up")
("s-L" "move-window right")
;;
("s-M-h" "exchange-direction left")
("s-M-j" "exchange-direction down")
("s-M-k" "exchange-direction up")
("s-M-l" "exchange-direction right")))
(defmap *toggle-cmds*
(("g" "toggle-gaps")
("b" "toggle-gpu")
("w" "toggle-wifi")
("b" "toggle-bluetooth")
("m" "mode-line")
("M" "toggle-mute")))
(defmap *bluetooth-map*
(("o" "bluetooth on")
("O" "bluetooth off")
("b" "bluetooth bose")))
(defmap *application-map*
(("e" "emacs")
("w" "browser")
("t" "terminal")
("s" "spotify")
("h" "cli htop")))
(defmap *frame-cmds*
(("l" "windowlist")
("=" "balance-frames")
("s" "vsplit")
("S" "hsplit")
("r" "iresize")
("f" "fullscreen")
("Q" "only")
("i" "show-window-properties")
("k" "kill")
("0" "select-window-by-number 0")
("1" "select-window-by-number 1")
("2" "select-window-by-number 2")
("3" "select-window-by-number 3")
("4" "select-window-by-number 4")
("5" "select-window-by-number 5")
("6" "select-window-by-number 6")
("7" "select-window-by-number 7")
("8" "select-window-by-number 8")
("9" "select-window-by-number 9")))