summaryrefslogtreecommitdiff
path: root/keyboard/monctl
diff options
context:
space:
mode:
authorTimmy Keller <tjk@tjkeller.xyz>2024-09-02 08:44:38 -0500
committerTimmy Keller <tjk@tjkeller.xyz>2024-09-02 08:44:38 -0500
commita4373a898e65604f58299c947882f50294dd813f (patch)
treed07fd4eb4ccf9fef1fa8a73d1160b7174c7c317e /keyboard/monctl
parent988cadef2c2e51adbfa64da83ec7d25a8de3d924 (diff)
downloadscripts-a4373a898e65604f58299c947882f50294dd813f.tar.xz
scripts-a4373a898e65604f58299c947882f50294dd813f.zip
various changes over time
Diffstat (limited to 'keyboard/monctl')
-rwxr-xr-xkeyboard/monctl38
1 files changed, 38 insertions, 0 deletions
diff --git a/keyboard/monctl b/keyboard/monctl
new file mode 100755
index 0000000..116974f
--- /dev/null
+++ b/keyboard/monctl
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+display=$2
+input_vcp=0x60
+input_local=0x11
+input_other=0x0f
+power_vcp=0xD6
+power_on=0x01
+power_off=0x05
+sleep_multiplier=.1 # Set this as low as you can get away with
+
+# DDC/CI stuff
+ddcutil="ddcutil --noverify --sleep-multiplier $sleep_multiplier --display $display" # Make sure user is in group i2c
+
+getstate() { $ddcutil getvcp $1 | grep -o '0x[0-9a-f]*' | tail -n1 ; }
+
+in_other() { $ddcutil setvcp $input_vcp $input_other ; }
+in_local() { $ddcutil setvcp $input_vcp $input_local ; }
+pw_on() { $ddcutil setvcp $power_vcp $power_on ; }
+pw_off() { $ddcutil setvcp $power_vcp $power_off ; }
+
+in_toggle() { [ `getstate $input_vcp` = $input_local ] && in_other || in_local ; } # Default to input_local
+pw_toggle() { [ `getstate $power_vcp` = $pw_on ] && pw_off || pw_on ; } # Default to power_on
+
+case $1 in
+ inputother) in_other ;;
+ inputlocal) in_local ;;
+ inputtoggle) in_toggle ;;
+ poweron) pw_on ;;
+ poweroff) pw_off ;;
+ powertoggle) pw_toggle ;;
+ getinput) getstate $input_vcp ;;
+ getpower) getstate $power_vcp ;;
+ *)
+ echo "'$1' is not a recognized option"
+ echo "$(basename "$0") [inputother|inputlocal|inputtoggle|poweron|poweroff|powertoggle] display_num"
+ ;;
+esac