
Я хотел бы переназначить сочетание клавиш для перехода на следующую/предыдущую вкладку в терминале XFCE с Ctrl+ PgDn/ PgUpна Ctrl+ Tab/ Ctrl+ Shift+ Tab. Похоже, это не работает ни при редактировании accels.scm
, ни при интерактивном изменении сочетания клавиш путем наведения курсора на меню и нажатия нужной комбинации клавиш.
Другие клавиши работают нормально, Tabпроблема только в сочетаниях клавиш, которые это включают. Я предполагаю, что они специальные для GTK и даже не достигают приложения. Есть ли способ переопределить это?
решение1
Клавишу Tab нельзя использовать для сочетаний клавиш, по крайней мере в терминале Xfce.
Прямые ответы
[...] проблема только в сочетаниях клавиш, включающих Tab. Я предполагаю, что они являются специальными для GTK и даже не доходят до приложения.
Ваше предположение верно. Ограничение фактически распространяется на прикладные программы GTK+, и Xfce Terminal — одно из них. И это не только сочетания клавиш, включающие клавишу Tab, но и несколько других клавиш, например PageUp, PageDown, F10, которые нельзя использовать по отдельности (без клавиши-модификатора).
Есть ли способ это обойти?
Скорее всего, нет, хотя обходной путь может существовать. Лучший способ — поискать альтернативы клавише Tab или использовать другие прикладные программы, которые ее поддерживают. См. также следующие объяснения.
Объяснено авторами
Во-первых, есть датированныйошибка 3524который сообщил "Сочетания клавиш для перехода на следующую/предыдущую вкладку ничего не делают". Наиболее релевантный комментарий был процитирован ниже.
[Комментарий 9: Ник Шермер 2009-10-10 13:49:08 CEST]
Xfwm и терминал используют разные способы обработки ускорителей (xfwm напрямую из x, терминал полагается на gtk). в gtk обрабатывается как недопустимый ускоритель, поэтому для «исправления» этого терминала будет проверяться, является ли ускоритель допустимым, прежде чем устанавливать его. В результате нажатие с этого момента ничего не будет делать в редакторе сочетаний клавиш.
Во-вторых, есть датированныйпост на Stack Overflowкоторый спрашивал "PyGTK: разрешить использование Tab в AccelGroup". Соответствующая часть вопроса была процитирована ниже.
При использовании gtk.AccelGroup любая комбинация с символом Tab недействительна. Теперь я понимаю, что навигация по пользовательскому интерфейсу осуществляется с помощью этой клавиши [...]
Объяснено документацией
Что касается «навигации по пользовательскому интерфейсу с помощью этой клавиши», документация разработчиков GNOME отметила этот вопрос в темеВвод с клавиатурыкак указано ниже.
Навигация с помощью клавиатуры
[...] Tab— стандартная клавиша для перемещения по интерфейсу GTK+ и GNOME.
Кроме того, сочетания клавиш, использующие клавишу Tab, имеют специальные функции.
Стандартные навигационные клавиши
Tabи Shift+ Tab Перемещает фокус клавиатуры на следующий/предыдущий элемент управления
Ctrl+ Tabи Shift+ Ctrl+ Tab Перемещает фокус клавиатуры из внешнего виджета на следующий/предыдущий элемент управления в тех ситуациях, когда только клавиша Tab имеет другую функцию
Ctrl+ Tabи Shift+ Ctrl+ Tab Перемещает фокус клавиатуры на следующую/предыдущую группу элементов управления
Поэтому предыдущие комментарии теперь имеют смысл.
Исправленный ответ (2017-04-04)
Несмотря на то, что клавиша Tab распознается ^I
в командной строке оболочкиавтодополнение табуляции, это имеет наименьшее значение из-за невозможности использования клавиши Tab в качестве сочетания клавиш в графических приложениях.
Почему клавиша Tab не может быть использована в качестве сочетания клавиш? Причина проста: клавиша Tab и ее комбинации зарезервированы GTK+ и GNOME.
Несмотря на то, что GNOME Terminal через GSettings позволяет использовать клавишу Tab для сочетаний клавиш, на данный момент не существует эквивалентного хака для Xfce Terminal через Xfconf.
решение2
Я назначаю сочетание клавиш «Tab» с помощью утилиты autokey. Например, использую Tab для переключения между правой и левой панелью в Nemo File Commander.
Linux Mint 20 Немо 4.6.5
Необходимо установить в AutoKey: Горячая клавиша: Окно Фильтр: nemo
----- Пример скрипта ---# Привязать клавишу Tab к панели переключения (клавиша F6)
keyboard.send_key("<f6>")
time.sleep(0.1)
keyboard.send_key("Tab")
решение3
Это работает в xfce4-terminal 0.8.9.1 (Xfce 4.14)
- редактирование.config/xfce4/terminal/accels.scm
(gtk_accel_path "<Actions>/terminal-window/next-tab" "<Primary>Tab")
(gtk_accel_path "<Actions>/terminal-window/prev-tab" "<Primary><Shift>Tab")