螢幕亮度快速鍵

  1. MSI PS 42 鍵盨 Fn+Up 增加亮度,Fn+Down 降低亮度,Fn+Up 不但無法工作,而且 Fn+Down 一按就降低亮度到全黑,即使再按 Fn+Up 也無法叫醒。查看 /var/log/messages Fn+Up (e078), Fn+Down (e077) keycodes 沒有對應。
    [root@dywmsi ~]# tail -4 /var/log/messages
    Jun 13 06:42:26 dywmsi kernel: atkbd serio0: Unknown key released (translated set 2, code 0xf7 on isa0060/serio0).
    Jun 13 06:42:26 dywmsi kernel: atkbd serio0: Use 'setkeycodes e077 <keycode>' to make it known.
    Jun 13 06:42:27 dywmsi kernel: atkbd serio0: Unknown key released (translated set 2, code 0xf8 on isa0060/serio0).
    Jun 13 06:42:27 dywmsi kernel: atkbd serio0: Use 'setkeycodes e078 <keycode>' to make it known.
    
  2. xmodmap 查詢有關 brightness 的 keycodes。
    [root@dywmsi ~]# xmodmap -pke | grep -i bright
    keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
    keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
    keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
    
  3. 設定 Fn+Up (e078) 的 keycode 233, Fn+Down (e077) keycode 232。
    [root@dywmsi ~]# setkeycodes e078 233
    [root@dywmsi ~]# setkeycodes e077 232
    
  4. 將 Fn+Up 及 Fn+Down 寫入開機執行腳本 rc.local,雖然測試結果還是無效,但不會再產生錯誤訊息。
    [root@dywmsi ~]# vim /etc/rc.d/rc.local 
    [root@dywmsi ~]# tail -2 /etc/rc.d/rc.local 
    setkeycodes e078 233
    setkeycodes e077 232
    
  5. 由於 Xorg 使用的 Driver 是 modesetting,不是 Intel,調整亮度的 xbacklight 無法使用。要使用 xrandr 調整亮度,其參數必須隨亮度大小改變,無法固定。因此,自行撰寫腳本 xbacklight.sh 放在 /usr/bin,以目前亮度固定增減比率做調整:
    [root@dywmsi ~]# cat /usr/bin/xbacklight.sh 
    #!/bin/bash
    max=$(cat /sys/class/backlight/intel_backlight/max_brightness)
    actual=$(cat /sys/class/backlight/intel_backlight/actual_brightness)
    [[ $1 =~ inc ]] && brightness=$((actual*2)) 
    [[ $1 =~ dec ]] && brightness=$((actual/2))
    [[ $brightness -gt $max ]] && brightness=$max
    [[ $brightness -le 0 ]] && brightness=1
    sudo sh -c "echo $brightness > /sys/class/backlight/intel_backlight/brightness"
    
  6. 圖形界面自訂 Fn+Up 及 Fn+Down 快速鍵,執行 xbacklight.sh。
    System -> Preference -> Keyboard Shortcuts
    Add
    Custom Shortcuts
    BrightnessUp XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
    BrightnessDown XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
    
  7. BrightnessUp 及 BrightnessDown 的執行命令分別為:
    BrightnessUp:  /usr/bin/xbacklight.sh inc
    BrightnessDown:  /usr/bin/xbacklight.sh dec