Могу ли я принудительно очистить экран и игнорировать ввод?

Точка . означает любой символ. Но вы не хотите, чтобы это совпадало с двойной кавычкой; вы хотите, чтобы он соответствовал чему угодно , кроме двойной кавычки. Так что укажите это с помощью класса символов:

sed 's/"[^"]*"/"x"/g'
4
21.09.2018, 22:04
1 ответ

Наконец-то я нашел ответ, который, по крайней мере, работает на моих системах (Lenovo ThinkPad X201 и ThinkPad X201 Tablet,в которых используются панели LVDS ). На самом деле он отключает подсветку, но если у вас нет трансфлективного или отражающего ЖК-дисплея (, что довольно необычно ), это должно быть фактически то же самое, что и выключение ЖК-дисплея.

Сначала я установил Intel GPU Tools(README здесь для получения дополнительной информации ). В Debian это было сделано с помощью:

# apt-get install intel-gpu-tools

Этот пакет содержит программу под названием intel_backlight, которая напрямую взаимодействует с регистрами графических процессоров Intel и, таким образом, не ограничена «безопасным диапазоном» в файловой системе sysfsсовременных ядер Linux, где уровень яркости 0 всегда предполагается быть включенным на низком уровне яркости.

К сожалению, эту программу нужно запускать от имени пользователя root, и она не очень хорошо очищает свои входные данные (просто вслепую atoi()является первым аргументом скрипта и предполагает, что это число ). Я все еще работаю над правильным решением этой проблемы, но на данный момент вы можете либо:

  1. Запустите это как root
  2. Напишите сценарий и конфигурацию acpid, чтобы активировать его при определенном событии ACPI.

Я выбрал второй вариант. Я выбрал комбинацию клавиш, которая acpi_listenопределила запуск события ACPI, но которая уже не была назначена для каких-либо действий на моем ноутбуке. Я выбрал fn+f1. Теоретически, можно было бы также срабатывать на клавишу яркости -вниз, проверять, была ли яркость уже на минимуме, и если да, то выключать подсветку.

Я написал следующие файлы:

/etc/acpi/events/fnf1-toggle-lcd:

event=button/fnf1
action=/etc/acpi/toggle-thinklight-or-tablet-lcd.sh "%e"

/etc/acpi/toggle-thinklight-or-tablet-lcd.sh:

#! /bin/bash
# intel_backlight appears to require root privs.

# is the light on or off?
export INTEL_BACKLIGHT="/usr/bin/intel_backlight"
export light_state=$("$INTEL_BACKLIGHT" | sed 's/current backlight value: //g'|sed 's/%//g')
if [ "$light_state" -eq 0 ]; then # if the backlight is currently off
  # restore brightness level
  cat /root/brightness > /sys/class/backlight/acpi_video0/brightness
else # the backlight is currently on
  # back up current brightness level
  cat /sys/class/backlight/acpi_video0/brightness > /root/brightness
  # turn off backlight
  "$INTEL_BACKLIGHT" 0
fi

Убедитесь, что сценарий оболочки помечен как исполняемый.

Может быть, не совсем то, что хотелось, и я знаю, что опаздываю на вечеринку, но здесь это работает.

Кроме того, на панелях eDP может работать выполнение echo 0 > /sys/class/backlight/acpi_video0/bl_power. Это абсолютно не будет работать на панелях LVDS, потому что, по-видимому, некоторые разработчики ядра посчитали это хорошей идеей.

0
27.01.2020, 20:59

Теги

Похожие вопросы