Когда мой экран заблокирован (например, из-за неактивности или путем нажатия Super+L), и я разблокировал его путем ввода моего пароля и нажатия Enter, то последнее нажатие клавиши также получено сфокусированным приложением на теперь разблокированном рабочем столе.
Например, если у меня есть свой открытый браузер, и в настоящее время редактирую комментарий здесь о, Спрашивает Ubuntu и затем быстро блокирует и разблокировала экран, как описано, комментарий становится отправленным прямо после разблокирования, которое не желаемо.
Тестирование поведения с xev
контролируя мои нажатия клавиш, походит, если я нажимаю Enter чрезвычайно вскоре для разблокирования экрана, это не становится полученным на dektop. Однако этого "чрезвычайно вскоре" трудно достигнуть и помнить.
Может так или иначе быть добавленная задержка, например, на экран блокировки так, чтобы это осталось включенным еще для 100 мс или так или пока клавиша Enter не выпущена? Или там другой путь состоит в том, чтобы мешать этому событию клавиатуры пройти?
, Вы могли создать этот сценарий, который вызывается dbus после того, как экран разблокирован. Назовите сценарий от Вашего Приложения Запуска , и он будет всегда работать.
#!/bin/bash
dbus-monitor --session "type=signal,interface=com.canonical.Unity.Session,member=Unlocked" |
while read MSG; do
LOCK_STAT=`echo $MSG | awk '{print $NF}'`
if [[ "$LOCK_STAT" == "member=Unlocked" ]]; then
logger "Screen unlocked"
# Flush keyboard buffer
while read -e -t 1; do : ; done.
fi
done
Примечание это для Единицы в соответствии с Ubuntu 16.04. Ubuntu 14.04 и более ранние версии имеют различные методы. Различные настольные среды могут иметь различные методы также.
Этот код работы для других утилит однако эти #Flush keyboard buffer
раздел является новым и не протестирован.