Не позволяйте мыши разбудить дисплеи из режима ожидания

12

Мне нравится переводить дисплеи в режим энергосбережения / ожидания, когда я на некоторое время покидаю компьютер. Было бы хорошо, если бы не сверхчувствительная мышь. Иногда драйвер читает какое-то движение, которое не видно невооруженным глазом (то есть курсор), и это нарушает энергосбережение. Было бы ждать еще 10 минут, прежде чем вернуться в режим ожидания.

Мой обходной путь - следующий скрипт, связанный с C-S-q:

xlock -startCmd 'xset dpms 2 2 2' -endCmd 'xset dpms 600 1200 1300' -mode blank -echokeys -timeelapsed +usefirst

Используя xsetI, я устанавливаю значения в 2 секунды, прежде чем перейти в режим ожидания. Во всяком случае, это нехорошо. Иногда есть интересные состояния, которые я хочу прочитать, прежде чем вводить пароль. Я мог бы держать курсор движущимся, но он грязный. (Кстати, опция xlock mousemotionне помогает - она ​​просто скрывает курсор, но дисплеи все же загораются .)

Итак, вопрос: есть ли способ заставить дисплеи переходить в режим ожидания и оставаться там до тех пор, пока не будет нажата клавиша клавиатуры? Я использую gentoo и недавний Xorg, но надеюсь, что ответ не должен быть специфичным для дистрибутива.

В основном ответ может быть таким же простым, как включить / отключить мышь в командной строке ? Думаю, это бы сработало, если бы DPMS не знала эту идею.

nperson325681
источник
1
Если проблема заключается в аппаратном обеспечении, то решением может быть аппаратное обеспечение - переверните мышь, пока не захотите ее использовать. (Хорошо, это было саркастично, но вы поняли).
new123456
Неплохое
Даже самые чувствительные оптические мыши не будут регистрировать никаких движений без какого-либо объекта в пределах дюйма или около того от датчика. Если это механическая мышь, просто вытолкните мяч, чтобы добиться того же эффекта.
Shinrai
1
Эх. Давайте подумаем о чем-то, что не требует щелчка мышью. :)
nperson325681
Нет, ты прав, это хороший вопрос (и поэтому я проголосовал за него). Но я согласен с @ new123456, что иногда механическое решение проще (и может быть, что никто не придет к вам по этому поводу - я не парень из Linux, так что я точно не могу).
Shinrai

Ответы:

5

На сайте Unix SE есть отличный пост @pbm, который освещает эту проблему.

Короче говоря, сначала используйте, xinput listчтобы получить идентификатор устройства для вашей мыши, а затем используйте

xinput --set-prop [ID#] "Device Enabled" "0"

и

xinput --set-prop [ID#] "Device Enabled" "1"

отключить и включить мышь.

Я только что проверил это здесь, отключив мышь, а затем позвонив xset dpms force standby. Размахивание мышью в течение нескольких секунд ничего не мешало экрану, но нажатие одной клавиши работало нормально. Используя вторую команду, вы вернули мышь в нормальное состояние, включая настройку «Постоянное замедление», которую мне установили мои скрипты запуска по умолчанию.

Вы должны быть в состоянии передать эти две команды к -startCmdи -endCmdопций , xlockчтобы получить то , что вы после этого .

Пол Уиттакер
источник
1
Вместо использования параметра --set-prop вместе со свойством «Device Enabled / Disabled» можно также использовать параметры --enable и --disable, например, xinput --enable [device] и xinput --disable [device] ,
Thebodzio
4

Я делаю это так в Ubuntu:

#!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Некоторые заметки:

  • Я также выключаю монитор.
  • Лучше использовать полное имя вместо ID.

Я надеюсь, что это помогает.

MILO
источник
Выглядит хорошо, но я не использую dbus или gnome, поэтому не буду пробовать.
nperson325681