Рейтинг:1

Как постоянно сопоставлять Capslock с ESC и Ctrl, чтобы он продолжал работать после приостановки/возобновления

флаг us

Я использую следующие строки в моем ~/.xprofile на Ubuntu 20.04 для отображения Капслок к ESC и Ctrl:

# заставить CapsLock вести себя как Ctrl:                                
setxkbmap -опция ctrl:nocaps
# заставить короткое нажатие Ctrl вести себя как Escape:
xcape -e 'Control_L=Escape'

который отлично работает для меня.

Моя проблема в том, что он не выдерживает приостановки/возобновления надежно.Для этого я пробовал 2 разных решения:

1. Через скрипт CapsMap положить в /usr/lib/systemd/системный сон/

#!/бин/баш                                                            
                                                                       
случай "$1" в                                                           
    предварительно)                                                               
      #выполнение кода ПЕРЕД спящим режимом/гибернацией/приостановкой     
    ;;                                                                 
    публиковать)                                                              
      #выполнение кода ПОСЛЕ возобновления                             
      /usr/bin/echo "выполнение: /usr/bin/setxkbmap -option ctrl:nocaps"
      /usr/bin/setxkbmap -опция ctrl:nocaps                           
      /usr/bin/echo "выполнение: /usr/bin/xcape -e 'Control_L=Escape'"  
      /usr/bin/xcape -e 'Control_L=Escape'                             
                                                                       
    ;;                                                                 
эсак                                                                   
                                                                       
выход 0                                                                 

Я сделал скрипт исполняемым с помощью sudo chmod +x capsmap и по логам видно, что он вызывается в нужное время:

$ журналctl
...
Окт 09 13:29:12 nb systemd-sleep[401221]: работа системы возобновлена.
Окт 09 13:29:12 nb ядро: Bluetooth: hci0: Версия устройства 5
Окт 09 13:29:12 ядро ​​nb: Bluetooth: hci0: безопасная загрузка включена
Окт 09 13:29:12 nb ядро: Bluetooth: hci0: блокировка OTP включена
Окт 09 13:29:12 nb ядро: Bluetooth: hci0: блокировка API включена
Окт 09 13:29:12 ядро ​​nb: Bluetooth: hci0: блокировка отладки отключена
Окт 09 13:29:12 nb ядро: Bluetooth: hci0: Минимальная версия прошивки 1 неделя 10 2014
Окт 09 13:29:12 nb ядро: Bluetooth: hci0: Найдено прошивка устройства: intel/ibt-11-5.sfi
Окт 09 13:29:12 nb systemd-sleep[401287]: выполнение: /usr/bin/setxkbmap -option ctrl:nocaps
Окт 09 13:29:12 nb systemd-sleep [401288]: не удается открыть дисплей «по умолчанию»
Окт 09 13:29:12 nb systemd-sleep[401291]: выполнение: /usr/bin/xcape -e 'Control_L=Escape'
Окт 09 13:29:12 nb systemd-sleep[401293]: невозможно подключиться к дисплею X11. $DISPLAY установлен?
Окт 09 13:29:12 nb systemd[1]: systemd-suspend.service: успешно.
Окт 09 13:29:12 nb systemd[1]: Готово Приостановка.
Окт 09 13:29:12 nb systemd[1]: остановлен целевой спящий режим.
Окт 09 13:29:12 nb systemd[1]: Достигнута цель Приостановить.
Окт 09 13:29:12 nb systemd[1]: цель остановлена ​​Приостановить.
...

Однако отображение применяется лишь иногда. Довольно часто, Капслок просто ведет себя нормально.

2. Через сервис systemd

Я добавил служебный файл capsmap.service к и т.д./системд/система/ со следующим содержанием:

[Ед. изм]
Description=Сопоставить Capslock с ESC и Ctrl
После=приостановить.цель

[Оказание услуг]
Тип = ваншот
ExecStart=/usr/local/bin/capsmap
Тайм-аутсек=0
Стандартный вывод = системный журнал

[Установить]
WantedBy=multi-user.target suspend.target

с файлом /usr/местные/бен/capsmap как

#!/бин/баш

# заставить CapsLock вести себя как Ctrl:
/usr/bin/echo "выполнение: /usr/bin/setxkbmap -option ctrl:nocaps"
/usr/bin/setxkbmap -опция ctrl:nocaps

# заставить короткое нажатие Ctrl вести себя как Escape:
/usr/bin/echo "выполнение: /usr/bin/xcape -e 'Control_L=Escape'"
/usr/bin/xcape -e 'Control_L=Escape'

выход 0

затем включил службу с помощью sudo systemctl включить capsmap.service.

Также в этом случае я вижу с журналctl что скрипт выполнился успешно, но нормальный Капслок поведение все еще присутствует.

$journalctl
...
Окт 09 13:07:56 nb systemd[1]: цель остановлена ​​Приостановить.                                                                                                                                                                                                                           
Окт 09 13:07:56 nb NetworkManager[1049]: <info> [1633777676.0331] менеджер: сон: запрошено пробуждение (в спящем режиме: да включено: да)                                                                                                                                                   
Окт 09 13:07:56 nb ModemManager[1137]: система <info> [sleep-monitor] возобновляет работу                                                                                                                                                                                                 
Окт 09 13:07:56 nb NetworkManager[1049]: <info> [1633777676.0332] устройство (enp0s31f6): изменение состояния: активировано -> неуправляемое (причина «спящий», sys-iface-state: «управляемый»)                                                                                                       
Окт 09 13:07:56 nb systemd[1761]: Остановлен целевой Bluetooth.                                                                                                                                                                                                                       
Окт 09 13:07:56 nb upowerd[1344]: обработка события изменения как добавления в /sys/devices/pci0000:00/0000:00:00:14.0/usb1/1-8                          
Окт 09 13:07:56 nb capsmap[378798]: выполнение: /usr/bin/setxkbmap -option ctrl:nocaps                                                                                                                                                                                             
Окт 09 13:07:56 nb systemd[1761]: достигнут целевой Bluetooth.                                                                                                                                                                                                                      
Окт 09 13:07:56 nb NetworkManager[1049]: <info> [1633777676.0498] dhcp4 (enp0s31f6): транзакция DHCP отменена                                                                                                                                                                   
Окт 09 13:07:56 nb capsmap[378799]: не удается открыть дисплей «по умолчанию»                                                                                                                                                                                                         
Окт 09 13:07:56 nb NetworkManager[1049]: <info> [1633777676.0498] dhcp4 (enp0s31f6): состояние изменено привязка -> выполнено                                                                                                                                                                 
Окт 09 13:07:56 nb avahi-daemon[1041]: отзыв записи адреса для 192.168.178.54 на enp0s31f6.                                       
Окт 09 13:07:56 nb avahi-daemon[1041]: выход из группы многоадресной рассылки mDNS на интерфейсе enp0s31f6.IPv4 с адресом 192.168.178.54.                                                                                                                                                      
Окт 09 13:07:56 nb avahi-daemon[1041]: Интерфейс enp0s31f6.IPv4 больше не актуален для mDNS.                                             
Окт 09 13:07:56 nb avahi-daemon[1041]: отзыв записи адреса для fe80::778b:d324:d55d:a503 на enp0s31f6.                                                                                                                                                                     
Окт 09 13:07:56 nb avahi-daemon[1041]: выход из многоадресной группы mDNS на интерфейсе enp0s31f6.IPv6 с адресом fe80::778b:d324:d55d:a503.  
Окт 09 13:07:56 nb avahi-daemon[1041]: Интерфейс enp0s31f6.IPv6 больше не актуален для mDNS.                                                                                                                                                                                      
Окт 09 13:07:56 nb systemd[1]: Начата загрузка/сохранение состояния переключателя отключения RF.                                                                  
Окт 09 13:07:56 nb capsmap[378800]: выполнение: /usr/bin/xcape -e 'Control_L=Escape'                                                                                                                                                                                               
Окт 09 13:07:56 nb NetworkManager[1049]: <info> [1633777676.0545] менеджер: состояние NetworkManager теперь CONNECTED_GLOBAL                 
Окт 09 13:07:56 nb capsmap[378805]: невозможно подключиться к дисплею X11. $DISPLAY установлен?                                                                                                                                                                                            
Окт 09 13:07:56 nb ядро: kauditd_printk_skb: подавлено 9 обратных вызовов                                                                                                                                                                                                             
Окт 09 13:07:56 nb ядро: аудит: тип = 1107 аудит (1633777676.068: 1737): pid = 1047 uid = 103 auid = 4294967295 ses = 4294967295 subj = unconfined msg = 'apparmor = "DENIED" operation = "dbus_signal" bus="system" path="/org/freedesktop/NetworkManager/ActiveConnection/30" interface="org.fr>
                            exe="/usr/bin/dbus-daemon" sauid=103 hostname=? адрес=? терминал=?'                                                                                                                                                                                    
Окт 09 13:07:56 nb ядро: аудит: тип = 1107 аудит (1633777676.068: 1738): pid = 1047 uid = 103 auid = 4294967295 ses = 4294967295 subj = unconfined msg = 'apparmor = "DENIED" operation = "dbus_signal" bus="system" path="/org/freedesktop/NetworkManager/ActiveConnection/30" interface="org.fr>
                            exe="/usr/bin/dbus-daemon" sauid=103 hostname=? адрес=? терминал=?'                                                                                                                                                                                    
Окт 09 13:07:56 nb аудит[1047]: USER_AVC pid=1047 uid=103 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal" bus="system" path=" /org/freedesktop/NetworkManager/ActiveConnection/30" interface="org.freedesktop.NetworkManager.Connect>
                                 exe="/usr/bin/dbus-daemon" sauid=103 hostname=? адрес=? терминал=?'                                                                                                                                                                               
Окт 09 13:07:56 nb аудит[1047]: USER_AVC pid=1047 uid=103 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal" bus="system" path=" /org/freedesktop/NetworkManager/ActiveConnection/30" interface="org.freedesktop.NetworkManager.Connect>
                                 exe="/usr/bin/dbus-daemon" sauid=103 hostname=? адрес=? терминал=?'                                                                                                                                                                               
Окт 09 13:07:56 nb systemd[1]: capsmap.service: успешно.  
...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.