창 관리자를 위한 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 패키지를 받으십시오.
  • 믹서 세트 마스터 5%+
  • 믹서 세트 마스터 5%-
  • 믹서 세트 마스터 토글

  • 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"}),
    
    


  • 터치패드를 토글하기 위한 스크립트 toggletouchpad.sh에는 다음 내용이 있어야 합니다.

  • #!/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"}),
    



    출처


  • https://gist.github.com/palopezv/efd34059af6126ad970940bcc6a90f2e
  • https://cgit.freedesktop.org/xorg/proto/x11proto/tree/XF86keysym.h
  • https://git.sr.ht/~djorborn/acpi_volume_brightness
  • https://gist.github.com/djorborn/02363a376f25b4147de06e5a53647bcd
  • https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html

  • 여기저기서 무작위로 배울 수 있도록 도와주신 모든 분들께 감사드립니다.

    좋은 웹페이지 즐겨찾기