mirror of
https://github.com/flynx/thinkpad-keyboard-brightness.git
synced 2025-10-28 10:40:10 +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
|
NAME := thinkpad-keyboard-brightness
|
||||||
|
|
||||||
|
SBIN_DIR := /usr/sbin
|
||||||
|
CONFIG_DIR := /etc/
|
||||||
SERVICE_DIR := /etc/systemd/system/
|
SERVICE_DIR := /etc/systemd/system/
|
||||||
|
|
||||||
|
SCRIPT := $(NAME)
|
||||||
|
CONFIG := $(NAME).conf
|
||||||
TIMER := $(NAME).timer
|
TIMER := $(NAME).timer
|
||||||
UNIT := $(NAME).service
|
UNIT := $(NAME).service
|
||||||
|
|
||||||
|
SERVICE_FILES := \
|
||||||
|
$(TIMER) \
|
||||||
|
$(UNIT)
|
||||||
|
|
||||||
|
FILES := \
|
||||||
|
$(SERVICE_FILES) \
|
||||||
|
$(SCRIPT) \
|
||||||
|
$(CONFIG)
|
||||||
|
|
||||||
|
|
||||||
.PHONY:install
|
.PHONY:install
|
||||||
install: $(TIMER) $(UNIT)
|
install: $(FILES)
|
||||||
cp -f $? $(SERVICE_DIR)
|
cp -f $(SERVICE_FILES) $(SERVICE_DIR)
|
||||||
|
cp -f $(SCRIPT) $(SBIN_DIR)
|
||||||
|
cp -f $(CONFIG) $(CONFIG_DIR)
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable ${UNIT}
|
systemctl enable ${UNIT}
|
||||||
systemctl enable ${TIMER}
|
systemctl enable ${TIMER}
|
||||||
@ -26,14 +40,21 @@ disable: $(TIMER) $(UNIT)
|
|||||||
systemctl disable ${UNIT}
|
systemctl disable ${UNIT}
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE: this will not remove user config files...
|
||||||
.PHONY:uninstall
|
.PHONY:uninstall
|
||||||
uninstall: disable $(TIMER) $(UNIT)
|
uninstall: disable $(TIMER) $(UNIT)
|
||||||
rm -f \
|
rm -f \
|
||||||
$(SERVICE_DIR)/$(TIMER) \
|
$(SERVICE_DIR)/$(TIMER) \
|
||||||
$(SERVICE_DIR)/$(UNIT)
|
$(SERVICE_DIR)/$(UNIT) \
|
||||||
|
$(SBIN_DIR)/$(SCRIPT)
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY:full-uninstall
|
||||||
|
full-uninstall: uninstall
|
||||||
|
rm -f $(CONFIG_DIR)/$(CONFIG)
|
||||||
|
|
||||||
|
|
||||||
.PHONY:reinstall
|
.PHONY:reinstall
|
||||||
reinstall: uninstall install
|
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]
|
[Service]
|
||||||
Type=exec
|
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
|
User=root
|
||||||
ExecStart=bash -c "(( $(cat ${SENSOR}) < ${THRESHOLD} )) && echo ${VALUE} > ${TRIGGER} || echo 0 > ${TRIGGER}"
|
ExecStart=/usr/sbin/thinkpad-keyboard-brightness
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user