Как мне назначить сочетание клавиш, включающее вкладку

Как мне назначить сочетание клавиш, включающее вкладку

Я хотел бы переназначить сочетание клавиш для перехода на следующую/предыдущую вкладку в терминале 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")

Связанный контент