Use percentage-based step for keyboard backlight brightness (#5135)
This commit is contained in:
@@ -23,14 +23,19 @@ fi
|
|||||||
max_brightness="$(brightnessctl -d "$device" max)"
|
max_brightness="$(brightnessctl -d "$device" max)"
|
||||||
current_brightness="$(brightnessctl -d "$device" get)"
|
current_brightness="$(brightnessctl -d "$device" get)"
|
||||||
|
|
||||||
# Calculate step as one unit (keyboards typically have discrete levels like 0-3).
|
# Calculate step as 10% of max brightness. Keyboards with many levels (e.g. 512)
|
||||||
|
# need larger steps; keyboards with few levels (e.g. 3) fall back to step=1.
|
||||||
|
step=$(( max_brightness / 10 ))
|
||||||
|
(( step < 1 )) && step=1
|
||||||
|
|
||||||
if [[ $direction == "cycle" ]]; then
|
if [[ $direction == "cycle" ]]; then
|
||||||
new_brightness=$(( (current_brightness + 1) % (max_brightness + 1) ))
|
new_brightness=$(( current_brightness + step ))
|
||||||
|
(( new_brightness > max_brightness )) && new_brightness=0
|
||||||
elif [[ $direction == "up" ]]; then
|
elif [[ $direction == "up" ]]; then
|
||||||
new_brightness=$((current_brightness + 1))
|
new_brightness=$(( current_brightness + step ))
|
||||||
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
||||||
else
|
else
|
||||||
new_brightness=$((current_brightness - 1))
|
new_brightness=$(( current_brightness - step ))
|
||||||
(( new_brightness < 0 )) && new_brightness=0
|
(( new_brightness < 0 )) && new_brightness=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user