Альтернатива клавиатурному приложению Fedora gnome

Нет необходимости закрывать и повторно открывать или перезагружать терминал! Хотя перезагрузка будет работать, это неправильный способ!

Вам просто нужно очистить / стереть буфер прокрутки терминала . Для этого просто используйте команду ниже:

$ echo -ne '\0033\0143'
3
01.03.2017, 05:16
2 ответа

Я давно не использовал Fedora или Gnome (или XFCE) для этой цели. Но переназначение клавиш для функций происходит на нескольких уровнях, и, по моему скромному мнению, делать это на уровне WM проблематично. Нажатия клавиш / коды поступают от ядра (из аппаратных прерываний и т. Д.) В Xorg, который нумерует все из них и передает обратно приложениям (независимо от того, передает все из них приложениям. это отдельная история).

Приложения, которым Xorg передает коды клавиш, включают WM (XFCE, Gnome или даже KDE) и окна, открываемые этими приложениями. Что делают такие инструменты, как настольные приложения для раскладки клавиатуры, так это то, что они подключаются к конфигурации кода клавиш Xorg. Либо путем создания новых клавиатур ( setxkbmap ), изменения ключей ( xmodmap ) или даже переназначения в памяти перед повторной отправкой кода в окна (IME).

Если мы сами задействуем коды клавиш Xorg, мы сможем настроить клавиатуру для любой системы (то есть, на которой работает Xorg). Я буду использовать свою собственную клавиатуру:

enter image description here

На схеме показана клавиша, которую я буду использовать в качестве примера, с музыкальной нотой. Мы сделаем так, чтобы эта клавиша работала как стрелка вверх.

Сначала давайте посмотрим, как 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 , вы можете случайно выполнить принудительную перезагрузку.

1
27.01.2020, 21:30

Fedora поддерживает переключение сред рабочего стола , если вы хотите установить весь рабочий стол xfce:

yum groupinstall 'Xfce Desktop'

На экране входа вы сможете выбрать рабочий стол xfce.

Если вы хотите придерживаться Gnome, вы можете установить части xfce. Попробуйте:

yum search xfce

Найдите любые утилиты xfce, которые кажутся связанными с клавиатурой, и установите их.

0
27.01.2020, 21:30

Теги

Похожие вопросы