Нет необходимости закрывать и повторно открывать или перезагружать терминал! Хотя перезагрузка будет работать, это неправильный способ!
Вам просто нужно очистить / стереть буфер прокрутки терминала . Для этого просто используйте команду ниже:
$ echo -ne '\0033\0143'
Я давно не использовал Fedora или Gnome (или XFCE) для этой цели. Но переназначение клавиш для функций происходит на нескольких уровнях, и, по моему скромному мнению, делать это на уровне WM проблематично. Нажатия клавиш / коды поступают от ядра (из аппаратных прерываний и т. Д.) В Xorg, который нумерует все из них и передает обратно приложениям (независимо от того, передает все из них приложениям. это отдельная история).
Приложения, которым Xorg передает коды клавиш, включают WM (XFCE, Gnome или даже KDE) и окна, открываемые этими приложениями. Что делают такие инструменты, как настольные приложения для раскладки клавиатуры, так это то, что они подключаются к конфигурации кода клавиш Xorg. Либо путем создания новых клавиатур ( setxkbmap
), изменения ключей ( xmodmap
) или даже переназначения в памяти перед повторной отправкой кода в окна (IME).
Если мы сами задействуем коды клавиш Xorg, мы сможем настроить клавиатуру для любой системы (то есть, на которой работает Xorg). Я буду использовать свою собственную клавиатуру:
На схеме показана клавиша, которую я буду использовать в качестве примера, с музыкальной нотой. Мы сделаем так, чтобы эта клавиша работала как стрелка вверх.
Сначала давайте посмотрим, как Xorg видит мою клавиатуру:
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ USB 2.0 Camera id=11 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
Ну да, я предполагаю, что моя клавиша (музыкальная нота) находится в «Дополнительные кнопки ноутбука Asus». Это означает, что он находится под виртуальной клавиатурой.Хорошо, это означает, что я могу использовать xev
следующим образом, чтобы найти его код клавиши:
xev -event keyboard
Если бы он не был частью виртуальной клавиатуры, мне нужно было бы пройти все события (включая события мыши), которые Было бы трудно найти, не невозможно, но трудно. Затем я нажимаю клавишу музыкальной ноты во время работы xev
и обнаруживаю, что Xorg понимает это следующим образом:
KeyPress event, serial 28, synthetic NO, window 0x1a00001,
root 0x496, subw 0x0, time 32080036, (381,333), root:(382,352),
state 0x0, keycode 234 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Хорошо, это означает, что это ключевой код 234. Это также показывает, что он сопоставлен с XF86AudioMedia
, который ничего не делает с моим WM (xmonad, потому что он игнорирует большую часть стандарта XF86). Но в любом случае у нас есть ключ, который нужно переназначить. Для этого мы делаем:
xmodmap -e 'keycode 234 = Up NoSymbol Up'
И моя музыкальная нота работает как стрелка вверх. Более того, это не зависит от WM. Чтобы он работал при перезагрузке, вам нужно поместить выражение xmodmap
в файл ~ / .Xmodmap
:
keycode 234 = Up NoSymbol Up
и запустить
xmodmap ~/.Xmodmap
во время инициализации WM. Другой вопрос, какие файлы ~ / .xprofile
, ~ / .xinitrc
, ~ / .profile
, другие файлы запускаются во время инициализации XFCE. WM особенно не стандартизированы относительно того, какие файлы запускать. Однако вы всегда можете запустить это вручную.
Файл .Xmodmap
содержит отображение, по одному на каждую строку, и поэтому может использоваться для переназначения нескольких ключей. ! Метка
- это индикатор комментария в этом файле.
Для начала давайте разберемся, почему мне нужно было написать Up NoSymbol Up
вместо просто Up
.На самом деле мне не нужно было, но обычно дают как минимум три (иногда четыре) сопоставления для ключа. Сопоставление означает действие, которое нужно предпринять, когда ключ:
= <key pressed> <shift+key> <ctrl+key> <ctrl+shift+key>
(Обратите внимание, что Ctrl + Up
плохо работает в некоторых приложениях, из-за этого этот пример не так хорош.)
ОК, поэтому мы переназначили один ключ. Но как найти правильное действие для переназначения ключей. Стрелки простые: вверх, вниз, влево, вправо;буквы также просто переназначаются, добавляя букву в качестве аргумента. Но как насчет того XF86AudioMedia
, которое у нас было раньше? Или как сделать кнопку кнопкой спящего режима или питания?
Чтобы получить текущие сопоставления, выполните:
xmodmap -pke
Он печатает очень длинный список, включая несколько XF86
модификаторов (например, XF86Sleep
, XF86PowerOff
, XF86WebCam
). Их можно добавить к любой клавише, как мы это делали со стрелкой вверх выше. А полный список можно найти в исходном коде Xorg .
К сожалению, как и в комментарии к источнику:
X.Org не будет добавлять символы ключей XF86, хотя они приняты и считаются "стандартной" частью Определения X-ключей. XFree86 никогда должным образом не комментировал эти ключевые символы, поэтому мы приложили все усилия, чтобы объяснить семантическое значение этих ключей.
XFree86 удалил свои почтовые архивы того периода, что могло пролить больше света на некоторые из этих определений. До тех пор, пока мы не воскресим эти архивы, они будут из памяти и использования.
Может быть трудно найти точное назначение каждого из них. И из-за отсутствия четко определенного стандарта WM реализуют только некоторые из этих сопоставлений. И разные WM реализуют разное отображение. Более того, некоторые WM имеют инструменты настройки того, что делают эти сопоставления, а другие нет. Некоторые WM игнорируют почти все эти сопоставления.
Один из способов проверить, поддерживает ли ваш WM конкретное отображение, - это попробовать.Например, я попробую XF86XK_ToDoList
, сначала удалив XK
из определения и переназначив неиспользуемый код клавиши:
xmodmap -e 'keycode 248 = XF86_ToDoList'
И использую xdotool
для создания нажатия клавиш такого ключевого кода:
xdotool keydown 248
xdotool keyup 248
Моя WM определенно не поддерживает XF86_ToDoList
, поскольку ничего не произошло (на самом деле я не думаю, что какая-либо WM поддерживает эту).
Затем вы можете выполнить поиск функций, которые вам нужны для ваших ключей, и переназначить их, как только вы обнаружите функциональность. Конечно, с учетом того, что XFCE его поддерживает.
Если вы меняете клавиатуру с одного языка на другой, используя setxkbmap
или инструмент, вызывающий setxkbmap
за кулисами, сопоставление будет отменено. IME хороши, поскольку они работают независимо от Xorg.
Отображение работает, когда вы вошли в систему. Вы можете создать клавиши включения питания
Будьте осторожны при тестировании чего-то вроде XF86PowerOff
, вы можете случайно выполнить принудительную перезагрузку.
Fedora поддерживает переключение сред рабочего стола , если вы хотите установить весь рабочий стол xfce:
yum groupinstall 'Xfce Desktop'
На экране входа вы сможете выбрать рабочий стол xfce.
Если вы хотите придерживаться Gnome, вы можете установить части xfce. Попробуйте:
yum search xfce
Найдите любые утилиты xfce, которые кажутся связанными с клавиатурой, и установите их.