「キーボードバックライト」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 細 (→Asus) |
Kusanaginoturugi (トーク | 投稿記録) (→On GNOME: 飜訳) |
||
(2人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
[[Category:キーボード]] |
[[Category:キーボード]] |
||
− | [[en: |
+ | [[en:Keyboard backlight]] |
+ | キーボードのバックライトの輝度レベルを制御するには、さまざまな方法があります。 |
||
− | == 任意のベンダー == |
||
+ | == 全メーカー共通 == |
||
− | あなたは [[D-Bus]] インタフェース経由でコンピューターのキーボードのバックライトを制御することができます。これを使用する利点は、デバイスファイルへの変更が必要なく、ベンダーにとらわれないことです。 |
||
+ | 明るさのレベルを管理する方法はさまざまで、{{Pkg|brightnessctl}} や {{Pkg|light}} など、これを実現するためのヘルパーツールもさまざまです。 |
||
− | 以下に[[Python]] 3 での実装例を示します。 |
||
+ | |||
− | {{ic|/usr/local/bin/}} にスクリプトを置き、実行可能にします。 |
||
+ | {{ic|sys}} 疑似ファイルシステムは、キーボードバックライトへのインタフェースを公開します。現在の輝度レベルは {{ic|/sys/class/leds/tpacpi::kbd_backlight/brightness}} を読むことで得られます。例えば、最大の輝度レベルを得るには、以下のようにします。 |
||
− | その後、実行するには、{{ic|/usr/local/bin/kb-light.py +}} と {{ic|/usr/local/bin/kb-light.py -}} に対してキーボードショートカットをマップして キーボードのバックライトレベルを増減します。 |
||
+ | |||
+ | $ cat /sys/class/leds/tpacpi::kbd_backlight/max_brightness |
||
+ | |||
+ | 明るさを 1 に設定する |
||
+ | |||
+ | # echo 1 > /sys/class/leds/tpacpi::kbd_backlight/brightness |
||
+ | |||
+ | {{ic|brightnessctl}} を使用する場合、{{ic|brightnessctl --list}} で使用可能な輝度調整のリストを取得し、次に kbd のバックライト情報を表示することができます。 |
||
+ | |||
+ | $ brightnessctl --device='tpacpi::kbd_backlight' info |
||
+ | |||
+ | これより、絶対値と相対値(%)で現在値、絶対値での最大値が表示されます。別の値を設定する場合 |
||
+ | |||
+ | $ brightnessctl --device='tpacpi::kbd_backlight' set 1 |
||
+ | |||
+ | === xset === |
||
+ | |||
+ | キーボードメーカーによっては、{{Pkg|brightnessctl}} や {{Pkg|light}} が認識しないものもありますが、Xorg を実行していれば {{Pkg|xorg-xset}} を使ってそのライトを制御することができます。 |
||
+ | |||
+ | 最初のパラメータ {{ic|led}} は点灯、{{ic|-led}} は消灯、{{ic|NUMBER}} パラメータは 1 から 32 までの整数(各数値はシステム内の led に対応、キーボードは一般に 3 番のようです)、または 'on' と 'off' (on はすべてのライトを点灯、off はすべてのライトを消灯) を受け取ります。 |
||
+ | |||
+ | ライトを点灯させる |
||
+ | |||
+ | $ xset led NUMBER |
||
+ | |||
+ | ライトを消灯させる |
||
+ | |||
+ | $ xset -led NUMBER |
||
+ | |||
+ | === D-Bus === |
||
+ | [[D-Bus]] インタフェース経由でコンピュータのキーボードのバックライトを制御することができます。D-Bus を使用する利点は、デバイスファイルへの変更が必要なく、全てのメーカーで使えることです。 |
||
+ | |||
+ | 以下に [[Python]] 3 での実装例を示します。{{ic|/usr/local/bin/}} にスクリプトを置き、実行可能にします。{{ic|/usr/local/bin/kb-light.py +}} や {{ic|/usr/local/bin/kb-light.py -}} を実行するキーボードショートカットを作成することでキーボードの輝度を変えることができます。 |
||
{{hc|/usr/local/bin/kb-light.py|<nowiki> |
{{hc|/usr/local/bin/kb-light.py|<nowiki> |
||
45行目: | 78行目: | ||
print("Script takes exactly one argument.", len(argv[1:]), "arguments provided.")</nowiki>}} |
print("Script takes exactly one argument.", len(argv[1:]), "arguments provided.")</nowiki>}} |
||
+ | Alternatively the following bash one-liner will set the backlight to the value specified in the ''argument'': |
||
− | == Asus == |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | setKeyboardLight () { |
||
+ | dbus-send --system --type=method_call --dest="org.freedesktop.UPower" "/org/freedesktop/UPower/KbdBacklight" "org.freedesktop.UPower.KbdBacklight.SetBrightness" int32:$1 |
||
+ | }</nowiki> |
||
+ | }} |
||
+ | |||
+ | ==== GNOME ==== |
||
+ | |||
+ | 以下は、ターミナルから実行するか、キーバインディングにマッピングすることができます。 |
||
+ | |||
+ | $ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepUp |
||
+ | $ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepDown |
||
+ | |||
+ | ==== On MATE ==== |
||
+ | |||
+ | {{Style|Informal and unclear description. No relevance to MATE.}} |
||
+ | |||
+ | In case you use [[MATE]] environment you might get tired with repeated lighting keyboard backlight while logging in, unlocking screen or waking up dimmed display. Following setup prevent from automatic lighting up during any action. The only triggers remain plugging in the adapter and fresh boot. After that you can control keyboard backlight only via hotkeys (eg. ThinkPad Fn + spacebar). |
||
+ | |||
+ | To prevent automatic lighting up just edit file {{ic|/usr/share/dbus-1/system.d/org.freedesktop.UPower.conf}} as follows (two occurrences of "deny"): |
||
+ | |||
+ | {{hc|/usr/share/dbus-1/system.d/org.freedesktop.UPower.conf|<nowiki> |
||
+ | <?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- --> |
||
+ | <!DOCTYPE busconfig PUBLIC |
||
− | {{Warning|以下の方法は推奨されていません。これは、キーボードのバックライトデバイスファイルにグローバルな書き込み可能なパーミッションを提供します。つまり、すべてのユーザーがコントロールできます。}} |
||
+ | "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" |
||
− | キーボードバックライトファイルは、通常、編集からロックアウトされます。 起動時にこのファイルのロックを解除するには、[[systemd]] サービスを作成する必要があります。 |
||
+ | "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> |
||
+ | <busconfig> |
||
+ | <!-- Only root can own the service --> |
||
+ | <policy user="root"> |
||
+ | <allow own="org.freedesktop.UPower"/> |
||
+ | </policy> |
||
+ | <policy context="default"> |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
− | {{hc|/usr/lib/systemd/system/asus-kbd-backlight.service|<nowiki> |
||
+ | send_interface="org.freedesktop.DBus.Introspectable"/> |
||
− | [Unit] |
||
− | Description=Asus Keyboard Backlight |
||
− | Wants=systemd-backlight@leds:asus::kbd_backlight.service |
||
− | After=systemd-backlight@leds:asus::kbd_backlight.service |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
− | [Service] |
||
+ | send_interface="org.freedesktop.DBus.Peer"/> |
||
− | Type=oneshot |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
− | RemainAfterExit=yes |
||
+ | send_interface="org.freedesktop.DBus.Properties"/> |
||
− | ExecStart=/bin/chmod 666 /sys/class/leds/asus::kbd_backlight/brightness |
||
+ | <allow send_destination="org.freedesktop.UPower.Device" |
||
+ | send_interface="org.freedesktop.DBus.Properties"/> |
||
+ | <deny send_destination="org.freedesktop.UPower.KbdBacklight" |
||
+ | send_interface="org.freedesktop.DBus.Properties"/> |
||
+ | <allow send_destination="org.freedesktop.UPower.Wakeups" |
||
+ | send_interface="org.freedesktop.DBus.Properties"/> |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
− | [Install] |
||
+ | send_interface="org.freedesktop.UPower"/> |
||
− | WantedBy=multi-user.target</nowiki>}} |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
− | キーボードのバックライトチェンジャースクリプトを使用できるようになりました。 例えば、[[ASUS G55VW#keyboard backlight script]]. |
||
+ | send_interface="org.freedesktop.UPower.Device"/> |
||
+ | <deny send_destination="org.freedesktop.UPower" |
||
+ | send_interface="org.freedesktop.UPower.KbdBacklight"/> |
||
+ | <allow send_destination="org.freedesktop.UPower" |
||
+ | send_interface="org.freedesktop.UPower.Wakeups"/> |
||
+ | </policy> |
||
+ | </busconfig> |
||
+ | </nowiki>}} |
2022年1月6日 (木) 13:26時点における最新版
キーボードのバックライトの輝度レベルを制御するには、さまざまな方法があります。
全メーカー共通
明るさのレベルを管理する方法はさまざまで、brightnessctl や light など、これを実現するためのヘルパーツールもさまざまです。
sys
疑似ファイルシステムは、キーボードバックライトへのインタフェースを公開します。現在の輝度レベルは /sys/class/leds/tpacpi::kbd_backlight/brightness
を読むことで得られます。例えば、最大の輝度レベルを得るには、以下のようにします。
$ cat /sys/class/leds/tpacpi::kbd_backlight/max_brightness
明るさを 1 に設定する
# echo 1 > /sys/class/leds/tpacpi::kbd_backlight/brightness
brightnessctl
を使用する場合、brightnessctl --list
で使用可能な輝度調整のリストを取得し、次に kbd のバックライト情報を表示することができます。
$ brightnessctl --device='tpacpi::kbd_backlight' info
これより、絶対値と相対値(%)で現在値、絶対値での最大値が表示されます。別の値を設定する場合
$ brightnessctl --device='tpacpi::kbd_backlight' set 1
xset
キーボードメーカーによっては、brightnessctl や light が認識しないものもありますが、Xorg を実行していれば xorg-xset を使ってそのライトを制御することができます。
最初のパラメータ led
は点灯、-led
は消灯、NUMBER
パラメータは 1 から 32 までの整数(各数値はシステム内の led に対応、キーボードは一般に 3 番のようです)、または 'on' と 'off' (on はすべてのライトを点灯、off はすべてのライトを消灯) を受け取ります。
ライトを点灯させる
$ xset led NUMBER
ライトを消灯させる
$ xset -led NUMBER
D-Bus
D-Bus インタフェース経由でコンピュータのキーボードのバックライトを制御することができます。D-Bus を使用する利点は、デバイスファイルへの変更が必要なく、全てのメーカーで使えることです。
以下に Python 3 での実装例を示します。/usr/local/bin/
にスクリプトを置き、実行可能にします。/usr/local/bin/kb-light.py +
や /usr/local/bin/kb-light.py -
を実行するキーボードショートカットを作成することでキーボードの輝度を変えることができます。
/usr/local/bin/kb-light.py
#!/usr/bin/env python3 # coding: utf-8 from sys import argv import dbus def kb_light_set(delta): bus = dbus.SystemBus() kbd_backlight_proxy = bus.get_object(org.freedesktop.UPower, /org/freedesktop/UPower/KbdBacklight) kbd_backlight = dbus.Interface(kbd_backlight_proxy, org.freedesktop.UPower.KbdBacklight) current = kbd_backlight.GetBrightness() maximum = kbd_backlight.GetMaxBrightness() new = max(0, current + delta) if new >= 0 and new <= maximum: current = new kbd_backlight.SetBrightness(current) # Return current backlight level percentage return 100 * current / maximum if __name__ == __main__: if len(argv[1:]) == 1: if argv[1] == "--up" or argv[1] == "+": # ./kb-light.py (+|--up) to increment print(kb_light_set(1)) elif argv[1] == "--down" or argv[1] == "-": # ./kb-light.py (-|--down) to decrement print(kb_light_set(-1)) else: print("Unknown argument:", argv[1]) else: print("Script takes exactly one argument.", len(argv[1:]), "arguments provided.")
Alternatively the following bash one-liner will set the backlight to the value specified in the argument:
setKeyboardLight () { dbus-send --system --type=method_call --dest="org.freedesktop.UPower" "/org/freedesktop/UPower/KbdBacklight" "org.freedesktop.UPower.KbdBacklight.SetBrightness" int32:$1 }
GNOME
以下は、ターミナルから実行するか、キーバインディングにマッピングすることができます。
$ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepUp $ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepDown
On MATE
In case you use MATE environment you might get tired with repeated lighting keyboard backlight while logging in, unlocking screen or waking up dimmed display. Following setup prevent from automatic lighting up during any action. The only triggers remain plugging in the adapter and fresh boot. After that you can control keyboard backlight only via hotkeys (eg. ThinkPad Fn + spacebar).
To prevent automatic lighting up just edit file /usr/share/dbus-1/system.d/org.freedesktop.UPower.conf
as follows (two occurrences of "deny"):
/usr/share/dbus-1/system.d/org.freedesktop.UPower.conf
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- --> <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> <busconfig> <!-- Only root can own the service --> <policy user="root"> <allow own="org.freedesktop.UPower"/> </policy> <policy context="default"> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.DBus.Introspectable"/> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.DBus.Peer"/> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.DBus.Properties"/> <allow send_destination="org.freedesktop.UPower.Device" send_interface="org.freedesktop.DBus.Properties"/> <deny send_destination="org.freedesktop.UPower.KbdBacklight" send_interface="org.freedesktop.DBus.Properties"/> <allow send_destination="org.freedesktop.UPower.Wakeups" send_interface="org.freedesktop.DBus.Properties"/> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower"/> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower.Device"/> <deny send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower.KbdBacklight"/> <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower.Wakeups"/> </policy> </busconfig>