4

Когда я нажимаю Ctrl+Alt+F {1..12}, он переключает меня на другой виртуальный терминал.

Даже xte "keydown Control_L" "keydown Alt_L" "key F1" "keyup Alt_L" "keyup Control_L" приводит к переключению на vt вместо отправки этих клавиш в сфокусированное окно.

Варианты использования этого включают (но не ограничиваясь этим) отправку специальных нажатий клавиш VNC или клиентам виртуализации, которые будут обрабатываться системой Clinet / Guest вместо хост-системы. Иногда (как в VirtualBox) приложения явно отображают некоторые специальные альтернативные нажатия клавиш на эти специальные (такие как Ctrl+Alt+Del или Ctrl+Alt+Backspace в VirtualBox), но я хочу чистое и универсальное решение.

3 ответа3

3

Давайте назовем Ctrl+Alt+Fx (где Fx - одна из функциональных кнопок: F1, F2, F3...) srvr.
Есть способ отключить / включить ключи srvr на лету. Под отключением я подразумеваю, что X11 не глотает их, а передает оконному менеджеру (kwin в kde).

Для набора ключей srvr вы запускаете setxkbmap -option srvrkeys:none
Для включения ключей srvr вы запускаете setxkbmap -option
Чтобы проверить, включен ли флаг srvr_ctrl (no_srvr_keys) , запустите setxkbmap -print | grep xkb_symbols

В kde есть возможность выполнять действия с окном (например, выполнить некоторую команду, когда окно получает или теряет фокус). Таким образом, вы можете автоматически отключать ключи srvr, когда окно вашего специального приложения сфокусировано, и автоматически возвращать их обратно, когда оно теряет фокус. Это универсальное решение. Полезно для таких приложений, как TeamViewer, VirtualBox, Chrome Remote Desktop, ipkvm viewer, krdc и так далее.
Если вам интересно, вот мой скрипт, который я использую для этой вещи: https://github.com/Ashark/aten-ip8000/blob/master/srvrkeys

1

Для VirtualBox, попробуйте комбинацию клавиш REL + F1. Здесь REL - это клавиша, используемая для отпускания мыши в окне VirtualBox, обычно это правая клавиша Ctrl или Alt.

0

Невозможно отправить Ctrl+Alt+F [1..12], потому что виртуальные терминалы отделены от рабочего стола, к которому подключен VNC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .