Для Ubuntu 18.04.
Я боровся з цією проблемою два дні. Я спробував усі перераховані тут методи раніше. І схоже, я придумав рішення. Але він дуже нестабільний і має помилок.
Основна ідея така: у системних налаштуваннях ви можете вказати команду, яка починається комбінацією клавіш Ctrl+ Shift+ U.
Примітка: якщо вказати false
як команду, комбінація взагалі не буде працювати.
Однак ми можемо вказати шлях до сценарію як команду, в якій будемо імітувати натискання тієї ж комбінації клавіш.
Щоб імітувати натискання клавіш, я спробував xdotool
( apt install xdotool
) і xte
( apt install xautomation
). Обидва варіанти були нестабільними. Однак xte
для мене виявилося більш гнучким.
Приклад с xte
- Створіть файл
/home/username/shortcut.sh
- Додати дозвіл на виконання:
chmod u+x /home/username/shortcut.sh
- Вкажіть шлях до сценарію як команду для комбінації клавіш Ctrl+ Shift+ Uу налаштуваннях клавіатури
Ось приклад сценарію:
#!/bin/sh
# Make a small delay in order to have time to release the keys.
sleep 0.2
# Simulate the release of just pressed keys, if they are still pressed.
xte 'keyup u' 'keyup Shift_L' 'keyup Control_L'
# Hack: Caps_Lock is used so that the system does not intercept this combination.
# You can try to remove it if it hinders you.
xte 'key Caps_Lock'
# Simulate pressing a key combination
xte 'keydown Shift_L' 'keydown Control_L' 'key u'
# Simulate releasing a key combination
xte 'keyup Shift_L' 'keyup Control_L'
# Restore Caps_Lock to the previous state.
xte 'key Caps_Lock'
Я перевірив це в PhpStorm 2018.2 EAP Build # PS-182.3458.35, і можу сказати, що він працює, але з деякими застереженнями:
- це працює повільно (на моєму досить старому ПК)
- під час виконання сценарію краще не натискати жодної клавіші
- іноді це може не спрацювати
- іноді він може увійти в нескінченну петлю. Тому краще додати чек до сценарію, що сценарій вже запущений.
Взагалі, якщо ви не часто використовуєте цю комбінацію, то це рішення вам може підійти.
Але, напевно, хтось придумає краще і стабільніше рішення.
Я сподіваюся, що ця ідея комусь допоможе.