Как я могу постоянно переназначать ключи в Ubuntu 16.04?

23

Это работает для текущей сессии:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

Затем я создал этот файл конфигурации:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Но он не работает после перезагрузки. Как я мог заставить переназначение пережить перезагрузку?

Costales
источник
Просто ответил на это xkbздесь: askubuntu.com/a/960097/554991 .
danwild

Ответы:

15

Я немного использовал 16.04, и он использует sddm в качестве менеджера рабочего стола. Раньше это были LightDM и GDM до этого. Оба его предшественника задокументированы для ~/.Xmodmapавтоматической загрузки, но я не могу найти ничего, явно говорящего о том, что sddm делает.

Поэтому может быть целесообразно просто принудительно загрузить его новым скриптом. Вам просто нужно запустить, xmodmap ~/.Xmodmapи вы можете сделать это несколькими способами:

Есть, вероятно, несколько десятков других способов справиться с этим, по сути, сделать то же самое.

Оли
источник
2
Спасибо за совет! Добавление для запуска не работает и ~ / .xinitrc не завершается. Но добавление "xmodmap ~ / .Xmodmap" в ~ / .bashrc сработало! :)
Косталес
1
Добавление его с помощью графических инструментов запуска (создающих новую запись ~/.config/autostart) работает примерно вдвое меньше времени. Я перезагружался примерно 10 раз и 5 раз команда выполнялась, а остальные 5 раз нет. :-(
Александр Рехштайнер
1
@ Александр Рехштайнер: Кажется, это проблема в Ubuntu 16.04. Я возился с командами запуска и переназначением клавиш, и поведение кажется очень противоречивым. Я не эксперт в такого рода
вещах
6

Я добавил файл /etc/X11/Xsession.d/80_xmodmapс таким содержанием:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Это работает каждый раз.

Стюарт К. Смит
источник
Кажется, что это работает, но это сообщения, которые я получаю в .xsessions-errors: .Xmodmap: 1: плохой keysym в списке модификаторов удаления 'Caps_Lock', нет соответствующих кодов ключей, это мой .Xmodmap: $ cat .Xmodmap remove Lock = код ключа Caps_Lock 9 = Escape keycode 66 = Escape
MaikoID
4

открыть свойства gnome-session. добавить команду и имя. Файл рабочего стола будет создан в ~ / .config / autostart.

remenber: использовать абсолютный путь , например /home/xxx/.Xmodmap. никогда не используйте «~» в качестве домашней директории.

утопический экспресс
источник
2

По моему многолетнему опыту работы с переназначением ключей в Ubuntu, постоянным решением является изменение файла с именем evdevin /usr/share/X11/xkb/keycodes.

Запустите эту команду в командной строке.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

Помните, что gedit - это текстовый редактор Ubuntu, поэтому вы можете использовать nano или vim вместо gedit.

Файл в формате: АЛИАС: КОД. Вы можете поменять местами кнопки, меняя коды разных клавиш. Например, чтобы заменить RCONTROL на RETURN, отредактируйте в evdev две строки:

<RTRN> = 105;

<RCTL> = 36;

Чтобы узнать номер кода для кнопки запуска xevна терминале.

Обратитесь к документации для получения дополнительной информации. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf

Гилберта
источник
1

Перейдите к

/usr/share/X11/xkb/symbols

С привилегиями sudo в редакторе откройте макет, который вы хотите редактировать. Заменить значения.

После перезагрузки изменения будут применены.


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

пример переназначения клавиатуры

quaeched
источник
2
Эти изменения будут перезаписаны при следующем обновлении пакетов, которые владеют этими файлами.
Муру
Это может быть правдой, но я сомневаюсь, что они специально обновляются очень часто. Я был удовлетворен этим решением в течение нескольких месяцев, так как я решил проблему, и ни разу мне не пришлось делать что-то дополнительное. И чтобы предотвратить это, вы можете сохранить файл и заменить его в случае такого события или (что кажется более безопасным) просто заново создать процесс.
quaeched
1

После поиска в Google, я смог устранить неисправность ключей моего ноутбука. Все неисправные клавиши на моем Thinkpad T400 работают нормально после переназначения. Кроме того, он постоянен без дополнительной нагрузки на ядро ​​процессора.

  • Сначала найдите раскладку клавиатуры или код клавиши, используя приведенную ниже команду.

    xevv -event keyboard 
    
  • Например, на моем Thinkpad T400 код ключа обнаружен следующим образом:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Переназначение символьных клавиш «z», «x», «c», «v» путем назначения функциональных клавиш «F6», «F10», «F11», «F12».

  • Измените строки, как показано ниже (сделайте резервную копию файла, прежде чем вносить какие-либо изменения для быстрого отката, если что-то пойдет не так)

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Найдите строки и измените значение, как показано ниже:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Прокомментируйте эти строки или удалите строки:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Сохранить и выйти.

  • Переопределение специальных ключей.

  • Сделайте резервную копию файла, прежде чем вносить изменения в откат, если что-то пойдет не так.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Добавьте или измените строки ниже в функции "xkb_symbols", редактируя "{"

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Сохранить и выйти.

  • Очистить кэш.

    sudo rm -rf /var/lib/xkb/*
    
  • Перезагружать.

Sanalgorithm
источник
Я переназначил сломанную (курсор) клавишу со стрелкой на другую клавишу, используя эту технику. Это просто (xev) и нажмите новую клавишу, чтобы получить его скан-код, затем отредактируйте / usr / share / X11 / xkb / keycodes / evdev, чтобы заменить исходный код клавиши со стрелкой новым, и удалить строку новой клавиши со своей исходной сканкод. Я комментировал, где бы я ни делал изменения, и сохранял резервную копию файла. После перезагрузки все работает отлично, включая комбинации shift / ctrl / alt с новой клавишей со стрелкой. И изменения следует оставить на месте даже при обновлении пакетов и обновлений версий ОС.
Матфея
1

Графический редактор

gnome-tweaks > Клавиатура и мышь> Дополнительные параметры макета

Ключевые карты

Джонатан
источник
0

Поскольку файлы .Xmodmap гораздо проще редактировать, чем xkb, я использую .Xmodmap в качестве «исходного» файла, затем преобразую его в xkb (текущий стандарт) и автоматически загружаю при загрузке, используя метод .bashrc.

Это несколько простых шагов размещены здесь .

Прекрасно работает и использует xkb в будущем, когда поддержка .Xmodmap прекращается.

u2n
источник