EXWM でファンクションキーの設定
5 min readMar 11, 2018
「ウィンドウマネージャを EXWM にしてみた」に書いたとおり、EXWM を使っている。
タイル型ウィンドウマネージャでは、音量の調整やディスプレイの明るさの調整などの基本的な機能は、自分で定義しないといけないようで、EXWM でもそういうことになった。
EXWM の設定は、Emacs の設定として書く。
明るさ調節機能を定義
xbacklight
を使って明るさを調節する。要インストール。また、Backlight — ArchWiki に記載の xorg.conf
定義を準備しないと xbacklight
が動かなかった。
定数とコマンドを定義
(defconst taiju/monitor-brightness-modifier 10)(defun taiju/monitor-brightness-down ()
(interactive)
(start-process-shell-command
"xbacklignt-dec"
nil
(format "xbacklight -dec %d" taiju/monitor-brightness-modifier)))(defun taiju/monitor-brightness-up ()
(interactive)
(start-process-shell-command
"xbacklignt-inc"
nil
(format "xbacklight -inc %d" taiju/monitor-brightness-modifier)))
キーバインドを定義
ファンクションキーにそのまま割り当てる。
(global-set-key (kbd "<XF86MonBrightnessDown>") #'taiju/monitor-brightness-down)
(global-set-key (kbd "<XF86MonBrightnessUp>") #'taiju/monitor-brightness-up)
音量調節機能を定義
amixer コマンドを使って音量を調節する。
定数とコマンドを定義
amixer
で Master をミュートしてから、アンミュートすると、ヘッドフォンやスピーカーはミュートのままになってしまうため、Master をアンミュートする時は、Headphone と Speaker もアンミュートするようにする。
(defconst taiju/audio-volume-modifier 3)(defun taiju/audio-toggle ()
(interactive)
(start-process-shell-command
"audio-toggle"
nil
"amixer -c 0 sset Master toggle | grep -q '\\[on\\]' && amixer -c 0 sset Headphone unmute && amixer -c 0 sset Speaker unmute"))(defun taiju/audio-lower-volume ()
(interactive)
(start-process-shell-command
"audio-lower-volume"
nil
(format "amixer -c 0 set Master %d%%-" taiju/audio-volume-modifier)))(defun taiju/audio-raise-volume ()
(interactive)
(start-process-shell-command
"audio-raise-volume"
nil
(format "amixer -c 0 set Master %d%%+" taiju/audio-volume-modifier)))(defun taiju/audio-mic-toggle ()
(interactive)
(start-process-shell-command
"audio-mic-toggle"
nil
"amixer -c 0 sset Capture toggle"))
キーバインドを定義
ファンクションキーにそのまま割り当てる。
(global-set-key (kbd "<XF86AudioMute>") #'taiju/audio-toggle)
(global-set-key (kbd "<XF86AudioLowerVolume>") #'taiju/audio-lower-volume)
(global-set-key (kbd "<XF86AudioRaiseVolume>") #'taiju/audio-raise-volume)
(global-set-key (kbd "<XF86AudioMicMute>") #'taiju/audio-mic-toggle)
EXWM の設定
上記のままだと、Emacs 内では機能するものの、個別に立ち上げたアプリケーション(Google Chrome など)で機能しないため、プレフィクスキーにする。(本来の用途とことなるので若干微妙な感じはする)
(cl-loop for k in '(XF86AudioMute
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86AudioMicMute
XF86MonBrightnessDown
XF86MonBrightnessUp)
do (cl-pushnew k exwm-input-prefix-keys))