diff options
author | Ubuntu <ubuntu@cert-jenkins-slave-1-201406-15260.maas> | 2021-11-07 16:31:32 +0000 |
---|---|---|
committer | Ubuntu <ubuntu@cert-jenkins-slave-1-201406-15260.maas> | 2021-11-07 16:31:32 +0000 |
commit | 76c8334e9a0ad8f14930c1588e4b47a15a6c992a (patch) | |
tree | 28846f3daef4c0aa996fb4fae9e789dc43b3ad83 | |
parent | cdd6f886d5265b6f41b1f189899e74ffd078dbe8 (diff) | |
parent | b33f9c0fb2d95681bcf75975861e26236668e75b (diff) |
Merge #410367 from ~kchsieh/plainbox-provider-checkbox/+git/plainbox-provider-checkbox:screenoff
Change: Use key event to simulate screen off
-rwxr-xr-x | bin/screenoff.sh | 35 | ||||
-rw-r--r-- | units/power-management/jobs.pxu | 10 | ||||
-rw-r--r-- | units/power-management/packaging.pxu | 4 |
3 files changed, 42 insertions, 7 deletions
diff --git a/bin/screenoff.sh b/bin/screenoff.sh new file mode 100755 index 0000000..8a565c7 --- /dev/null +++ b/bin/screenoff.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +while read -r line; +do + if [ "${line:0:7}" = "N: Name" ]; then + name="${line:9:-1}" + fi + if [ "${line:0:8}" = "S: Sysfs" ] && [ "$keyboard" -eq 1 ]; then + sysfs="${line:9}" + break + fi + if [ "$name" = "AT Translated Set 2 keyboard" ]; then + keyboard=1 + else + keyboard=0 + fi +done </proc/bus/input/devices + +event_sysfs=$(find "/sys$sysfs" -name "event*") +event_idx=$(echo "$event_sysfs" | awk -F/ '{print $NF}') +device="/dev/input/$event_idx" + +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 219 +evemu-event --sync "${device}" --type EV_KEY --code KEY_LEFTMETA --value 1 +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 38 +evemu-event --sync "${device}" --type EV_KEY --code KEY_L --value 1 +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 38 +evemu-event --sync "${device}" --type EV_KEY --code KEY_L --value 0 +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 219 +evemu-event --sync "${device}" --type EV_KEY --code KEY_LEFTMETA --value 0 +sleep "$1" +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 28 +evemu-event --sync "${device}" --type EV_KEY --code KEY_ENTER --value 1 +evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 28 +evemu-event --sync "${device}" --type EV_KEY --code KEY_ENTER --value 0 diff --git a/units/power-management/jobs.pxu b/units/power-management/jobs.pxu index 726b4ae..d449564 100644 --- a/units/power-management/jobs.pxu +++ b/units/power-management/jobs.pxu @@ -366,15 +366,13 @@ unit: job plugin: shell requires: cpuinfo.cpu_lpi_file in ('low_power_idle_cpu_residency_us', 'package_cstate_show') - package.name == 'x11-xserver-utils' sleep.mem_sleep == 's2idle' + package.name == 'evemu-tools' command: cpu_lpi_file=$(cpuinfo_resource.py | grep cpu_lpi_file | awk '{ print $2 }') if [ "$cpu_lpi_file" == "low_power_idle_cpu_residency_us" ]; then before=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us) - xset dpms force off - sleep 20 - xset dpms force on + screenoff.sh 20 after=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us) residency=$((after-before)) echo "/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us after/before screen off is $residency" @@ -382,9 +380,7 @@ command: echo "The system doesn't have hardware-based residency counter." echo "please check https://www.uefi.org/sites/default/files/resources/Intel_ACPI_Low_Power_S0_Idle.pdf" before=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }') - xset dpms force off - sleep 20 - xset dpms force on + screenoff.sh 20 after=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }') residency=$((after-before)) echo "/sys/kernel/debug/pmc_core/package_cstate_show after/before screen off is $residency" diff --git a/units/power-management/packaging.pxu b/units/power-management/packaging.pxu new file mode 100644 index 0000000..a03242e --- /dev/null +++ b/units/power-management/packaging.pxu @@ -0,0 +1,4 @@ +# This is to install evemu-tools for the screen lock key event simulation +unit: packaging meta-data +os-id: debian +Depends: evemu-tools |