mirror of
https://github.com/flynx/thinkpad-keyboard-brightness.git
synced 2025-10-28 02:30:09 +00:00
fixed an issue with the sensor returning 0 randomly...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
86ddb5ac80
commit
5cadb52401
27
Makefile
27
Makefile
@ -1,16 +1,30 @@
|
||||
|
||||
NAME := thinkpad-keyboard-brightness
|
||||
|
||||
SBIN_DIR := /usr/sbin
|
||||
CONFIG_DIR := /etc/
|
||||
SERVICE_DIR := /etc/systemd/system/
|
||||
|
||||
SCRIPT := $(NAME)
|
||||
CONFIG := $(NAME).conf
|
||||
TIMER := $(NAME).timer
|
||||
UNIT := $(NAME).service
|
||||
|
||||
SERVICE_FILES := \
|
||||
$(TIMER) \
|
||||
$(UNIT)
|
||||
|
||||
FILES := \
|
||||
$(SERVICE_FILES) \
|
||||
$(SCRIPT) \
|
||||
$(CONFIG)
|
||||
|
||||
|
||||
.PHONY:install
|
||||
install: $(TIMER) $(UNIT)
|
||||
cp -f $? $(SERVICE_DIR)
|
||||
install: $(FILES)
|
||||
cp -f $(SERVICE_FILES) $(SERVICE_DIR)
|
||||
cp -f $(SCRIPT) $(SBIN_DIR)
|
||||
cp -f $(CONFIG) $(CONFIG_DIR)
|
||||
systemctl daemon-reload
|
||||
systemctl enable ${UNIT}
|
||||
systemctl enable ${TIMER}
|
||||
@ -26,14 +40,21 @@ disable: $(TIMER) $(UNIT)
|
||||
systemctl disable ${UNIT}
|
||||
|
||||
|
||||
# NOTE: this will not remove user config files...
|
||||
.PHONY:uninstall
|
||||
uninstall: disable $(TIMER) $(UNIT)
|
||||
rm -f \
|
||||
$(SERVICE_DIR)/$(TIMER) \
|
||||
$(SERVICE_DIR)/$(UNIT)
|
||||
$(SERVICE_DIR)/$(UNIT) \
|
||||
$(SBIN_DIR)/$(SCRIPT)
|
||||
systemctl daemon-reload
|
||||
|
||||
|
||||
.PHONY:full-uninstall
|
||||
full-uninstall: uninstall
|
||||
rm -f $(CONFIG_DIR)/$(CONFIG)
|
||||
|
||||
|
||||
.PHONY:reinstall
|
||||
reinstall: uninstall install
|
||||
|
||||
|
||||
46
thinkpad-keyboard-brightness
Executable file
46
thinkpad-keyboard-brightness
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
if [ -e /etc/thinkpad-keyboard-brightness.conf ] ; then
|
||||
source /etc/thinkpad-keyboard-brightness.conf
|
||||
fi
|
||||
|
||||
if [ -z $SENSOR ] ; then
|
||||
SENSOR=(/sys/bus/iio/devices/iio:device*/in_illuminance_raw)
|
||||
fi
|
||||
SENSOR=${SENSOR[0]}
|
||||
|
||||
if [ -z $TRIGGER ] ; then
|
||||
TRIGGER=(/sys/class/leds/*::kbd_backlight/brightness)
|
||||
fi
|
||||
TRIGGER=${TRIGGER[0]}
|
||||
|
||||
THRESHOLD=${THRESHOLD:-2000}
|
||||
HYSTERESIS=${HYSTERESIS:-200}
|
||||
ATTEMPTS=${ATTEMPTS:-3}
|
||||
VALUE=${VALUE:-1}
|
||||
|
||||
|
||||
|
||||
# read the illuminance value...
|
||||
# NOTE: the sensor sometimes randomly returns 0, this will make this
|
||||
# less probabble to retult in backlight turning on/off randomly...
|
||||
ATTEMPT=0
|
||||
ILLUMINANCE=0
|
||||
while (( $ATTEMPT < $ATTEMPTS )) && (( $ILLUMINANCE == 0 )) ; do
|
||||
ILLUMINANCE=$(cat ${SENSOR})
|
||||
ATTEMPT=$((ATTEMPT + 1))
|
||||
done
|
||||
|
||||
#echo "ILLUMINANCE: $ILLUMINANCE (attempt: $ATTEMPT)"
|
||||
|
||||
STATE=$(cat "$TRIGGER")
|
||||
|
||||
# NOTE: this needs root...
|
||||
if (( $ILLUMINANCE < $THRESHOLD )) && (( $STATE == 0 )) ; then
|
||||
echo "$VALUE" > "$TRIGGER"
|
||||
|
||||
elif (( $ILLUMINANCE > $THRESHOLD + $HYSTERESIS )) ; then
|
||||
echo 0 > "$TRIGGER"
|
||||
fi
|
||||
|
||||
|
||||
11
thinkpad-keyboard-brightness.conf
Normal file
11
thinkpad-keyboard-brightness.conf
Normal file
@ -0,0 +1,11 @@
|
||||
#
|
||||
# SENSOR=/sys/bus/iio/devices/iio:device*/in_illuminance_raw
|
||||
#
|
||||
# TRIGGER=/sys/class/leds/tpacpi::kbd_backlight/brightness
|
||||
#
|
||||
# THRESHOLD=2000
|
||||
#
|
||||
# HESTERISYS=200
|
||||
#
|
||||
# VALUE=1
|
||||
#
|
||||
@ -3,12 +3,8 @@ Description="Turn keyboard backlight on/off based on light sensor"
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
Environment=SENSOR=/sys/bus/iio/devices/iio:device*/in_illuminance_raw
|
||||
Environment=TRIGGER=/sys/class/leds/tpacpi::kbd_backlight/brightness
|
||||
Environment=THRESHOLD=2000
|
||||
Environment=VALUE=1
|
||||
User=root
|
||||
ExecStart=bash -c "(( $(cat ${SENSOR}) < ${THRESHOLD} )) && echo ${VALUE} > ${TRIGGER} || echo 0 > ${TRIGGER}"
|
||||
ExecStart=/usr/sbin/thinkpad-keyboard-brightness
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user