Для 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 и могу сказать, что это работает, но с некоторыми оговорками:
- это работает медленно (на моем довольно старом ПК)
- во время выполнения скрипта лучше не нажимать какие-либо клавиши
- иногда это может не сработать
- иногда он может войти в бесконечный цикл. Поэтому лучше добавить в скрипт проверку, что скрипт уже запущен.
В общем, если вы не часто используете эту комбинацию, то это решение может подойти вам.
Но, возможно, кто-то найдет лучшее и более стабильное решение.
Надеюсь, эта идея кому-нибудь поможет.