창 관리자를 위한 X11 특수 키보드 키
Unix X11용 키보드 미디어 키
일명 XF86keysym
키의 이름이 무엇인지 모르는 것은 고통스럽기 때문에 here 키의 목록과 이를 구현하는 몇 가지 유용한 방법입니다. 원본 출처는 하단 및 표시되는 위치에 나열됩니다.
acpi 이벤트 핸들러를 사용하여 볼륨, 밝기 및 기타 일부를 제어할 수도 있습니다.
사용 가능한 모든 X11 미디어 키 이름 목록은 here 을 참조하십시오. 이 파일은 x11 개발 파일과 함께 제공됩니다. 우분투에서는 xorg-dev
패키지에서 얻고 /usr/include/X11/XF86keysym.h
에 있습니다.
i3wm 및 Awesome의 경우 "XK_"부분을 제거합니다. 따라서 XF86XK_MonBrightnessUp
대신 XF86MonBrightnessUp
가 됩니다.
볼륨 조절
펄스오디오 사용하기
i3wm
# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound
멋진 wm
awful.key({ }, "XF86AudioRaiseVolume" , function () awful.spawn("pactl set-sink-volume 0 +5%") end,
{description = "Volume Up", group = "awesome"}),
awful.key({ }, "XF86AudioLowerVolume" , function () awful.spawn("pactl set-sink-volume 0 -5%") end,
{description = "Volume Down", group = "awesome"}),
awful.key({ }, "XF86AudioMute" , function () awful.spawn("pactl set-sink-mute 0 toggle") end,
{description = "Volume Mute", group = "awesome"}),
dwm
#include <X11/XF86keysym.h>
/* Add somewhere in your constants definition section */
static const char *upvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "+5%", NULL };
static const char *downvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "-5%", NULL };
static const char *mutevol[] = { "/usr/bin/pactl", "set-sink-mute", "0", "toggle", NULL };
/* Add to keys[] array. With 0 as modifier, you are able to use the keys directly. */
static Key keys[] = {
{ 0, XF86XK_AudioLowerVolume, spawn, {.v = downvol } },
{ 0, XF86XK_AudioMute, spawn, {.v = mutevol } },
{ 0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol } },
};
/* If you have a small laptop keyboard or don't want to spring your fingers too far away. */
static Key keys[] = {
{ MODKEY, XK_F11, spawn, {.v = downvol } },
{ MODKEY, XK_F9, spawn, {.v = mutevol } },
{ MODKEY, XK_F12, spawn, {.v = upvol } },
};
알사
펄스 오디오 대신 alsa를 사용하려면 amixer 명령을 사용할 수 있습니다. 다음은 볼륨 높이기, 낮추기 및 음소거 토글에 대한 명령입니다. alsa-tools 및 alsa-utils 패키지를 받으십시오.
# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound
awful.key({ }, "XF86AudioRaiseVolume" , function () awful.spawn("pactl set-sink-volume 0 +5%") end,
{description = "Volume Up", group = "awesome"}),
awful.key({ }, "XF86AudioLowerVolume" , function () awful.spawn("pactl set-sink-volume 0 -5%") end,
{description = "Volume Down", group = "awesome"}),
awful.key({ }, "XF86AudioMute" , function () awful.spawn("pactl set-sink-mute 0 toggle") end,
{description = "Volume Mute", group = "awesome"}),
#include <X11/XF86keysym.h>
/* Add somewhere in your constants definition section */
static const char *upvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "+5%", NULL };
static const char *downvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "-5%", NULL };
static const char *mutevol[] = { "/usr/bin/pactl", "set-sink-mute", "0", "toggle", NULL };
/* Add to keys[] array. With 0 as modifier, you are able to use the keys directly. */
static Key keys[] = {
{ 0, XF86XK_AudioLowerVolume, spawn, {.v = downvol } },
{ 0, XF86XK_AudioMute, spawn, {.v = mutevol } },
{ 0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol } },
};
/* If you have a small laptop keyboard or don't want to spring your fingers too far away. */
static Key keys[] = {
{ MODKEY, XK_F11, spawn, {.v = downvol } },
{ MODKEY, XK_F9, spawn, {.v = mutevol } },
{ MODKEY, XK_F12, spawn, {.v = upvol } },
};
ACPI
밝기 및 볼륨
이것은 here에서 가져온 것입니다. acpid를 사용하고 창 관리자를 사용하여 볼륨과 밝기를 제어하려는 경우 다음과 같이 할 수 있습니다.
/etc/acpi/handler.sh
#!/bin/bash
# Default acpi script that takes an entry for all actions
#jack/headphone HEADPHONE unplug
#jack/headphone HEADPHONE plug
case "$1" in
jack/headphone)
case $3 in
plug)
echo "in" > /var/tmp/headphones.log
;;
unplug)
echo "out" > /var/tmp/headphones.log
;;
esac
;;
button/mute)
/usr/local/bin/volume mute
;;
button/volumedown)
/usr/local/bin/volume vdown
;;
button/volumeup)
/usr/local/bin/volume vup
;;
video/brightnessup)
/usr/local/bin/brightness_push up
;;
video/brightnessdown)
/usr/local/bin/brightness_push down
;;
위 파일에서 이벤트 핸들러를 사용하여 $PATH에 있는 사용자 정의 스크립트를 호출합니다. 첫 번째 경우는 헤드폰 잭을 관찰하는 것입니다. 헤드폰을 꽂으면 로그 파일이 생성되고 파일 내용이
in
이면 헤드폰이 연결되어 있고 out은 연결이 해제되어 있음을 의미합니다. 내 볼륨 스크립트는 볼륨 키를 누를 때 해당 파일을 보고 마스터 대신 헤드폰 볼륨을 제어하도록 선택합니다. 이것은 알파인을 완전한 데스크탑으로 실행할 때 내 hp 스트림의 문제를 해결하기 위한 것이었습니다.어쨌든 다음은 호출되는 $PATH(예:/usr/local/bin/)의 스크립트입니다.
#!/bin/bash
refresh_i3status="killall -SIGUSR1 py3status"
headphone=$(cat /var/tmp/headphones.log)
case "$1" in
up)
#sudo -g audio pactl set-sink-volume @DEFAULT_SINK@ +10%;
amixer sset Master 5%+
$refresh_i3status
;;
down)
#sudo -g audio pactl set-sink-volume @DEFAULT_SINK@ -10%;
amixer sset Master 5%-
$refresh_i3status
;;
mute)
#sudo -g audio pactl set-sink-mute @DEFAULT_SINK@ toggle;
amixer sset Master toggle
if [[ $headphone == "in" ]]; then
amixer sset Headphone unmute
else
amixer sset Speaker unmute
fi
$refresh_i3status
;;
esac
#!/bin/bash
# Variables
brightness_dir=/sys/class/backlight/intel_backlight
brightness_file=$brightness_dir/brightness
brightness=$(cat $brightness_file)
actual_brightness=$(cat $brightness_dir/actual_brightness)
max_brightness=$(cat $brightness_dir/max_brightness)
min_brightness=50
n=50
if [[ "$1" == "up" ]]; then
if (( $actual_brightness < $max_brightness )); then
echo $(dc -e "$actual_brightness $n + p") >> $brightness_file;
fi
else
if (( $actual_brightness > $min_brightness )); then
echo $(dc -e "$actual_brightness $n - p") >> $brightness_file;
fi
fi
밝기 조절
xbacklight 포함
밝기를 제어하는 것은 볼륨을 제어하는 것과 비슷합니다.
i3wm
# Screen Brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness
멋진 wm
awful.key({ }, "XF86MonBrightnessUp" , function () awful.spawn("xbacklight inc 5%") end,
{description = "Brighness Up", group = "awesome"}),
awful.key({ }, "XF86MonBrightnessDown" , function () awful.spawn("xbacklight dec 5%") end,
{description = "Brighness Down", group = "awesome"}),
dwm
#include <X11/XF86keysym.h>
/* Add somewhere in your constants definition section */
static const char *upbrightness[] = { "xbacklight", "inc", "5%", NULL };
static const char *downbrightness[] = { "xbacklight", "dec", "5%", NULL };
/* Add to keys[] array. With 0 as modifier, you are able to use the keys directly. */
static Key keys[] = {
{ 0, XF86XK_MonBrightnessDown, spawn, {.v = downbrightness } },
{ 0, XF86XK_MonBrightnessUp, spawn, {.v = upbrightness } },
};
xbacklight 대안
이것은 here에서
xbacklight에 문제가 있거나 마음에 들지 않는 경우 간단한 스크립트를 사용할 수 있습니다. 이 스크립트는
/sys/class/backlight/{your screen}
로 이동하여 현재 밝기를 가져와서 설정된 양만큼 변경합니다.인텔을 사용하지 않는 경우
intel_backlight
부분을 변경해야 합니다. ls /sys/class/backlight
에서 알 수 있습니다. intel_backlight
를 가지고 있는 것으로 교체하십시오.#!/bin/bash
## Very simple way to change brightness without a utility.
## I made this to use with acpi event handlers and my laptop keyboard
## GNU General Public License
## dosborn at vivaldi dot net
# Variables
# brightness_dir= Direcotry containing the backlight file
brightness_dir=/sys/class/backlight/intel_backlight
# brightness_file= the file named brightness in that dir
brightness_file=$brightness_dir/brightness
# brightness= The contents of that file
brightness=$(cat $brightness_file)
# actual_brightness= the actual_brightness file
actual_brightness=$(cat $brightness_dir/actual_brightness)
# max_brightness= the contents of max_brightness
max_brightness=$(cat $brightness_dir/max_brightness)
# min_brightness= how low you want it to get
min_brightness=50
# n= the change, how fast it goes up and down
n=50
## If `brightness_push.sh up` is called then it will go up "n". and 'down' for down.
if [[ "$1" == "up" ]]; then
if (( $actual_brightness < $max_brightness )); then
echo $(dc -e "$actual_brightness $n + p") >> $brightness_file;
fi
else
if (( $actual_brightness > $min_brightness )); then
echo $(dc -e "$actual_brightness $n - p") >> $brightness_file;
fi
fi
## 트랙패드
또한 양식here
여기에서 dw를 생략합니다. 이전과 같지만 키가 다릅니다.
### i3wm
--------
# Touchpad controls
bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad
### 멋진 wm
awful.key({ }, " XF86TouchpadToggle" , function () awful.spawn("/some/path/toggletouchpad.sh") end,
{description = "Prev Track", group = "awesome"}),
#!/bin/bash
if synclient -l | grep "TouchpadOff .*=.*0" ; then
synclient TouchpadOff=1 ;
else
synclient TouchpadOff=0 ;
fi
미디어 플레이어 컨트롤
i3wm
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
#bindsym XF86AudioPlay exec playctl play-pause # To toggle with a single key
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
멋진 wm
awful.key({ }, "XF86AudioPlay" , function () awful.spawn("playerctl play-pause") end,
{description = "Play Pause", group = "awesome"}),
awful.key({ }, "XF86AudioNext" , function () awful.spawn("playerctl next") end,
{description = "Next Track", group = "awesome"}),
awful.key({ }, "XF86AudioPrev" , function () awful.spawn("playerctl previous") end,
{description = "Prev Track", group = "awesome"}),
출처
여기저기서 무작위로 배울 수 있도록 도와주신 모든 분들께 감사드립니다.
Reference
이 문제에 관하여(창 관리자를 위한 X11 특수 키보드 키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wallclocks/x11-special-keyboard-keys-for-window-managers-4no2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)