Постоянный xmodmap в Ubuntu 13.04

Я не могу запустить xmodmap при входе в Ubuntu 13.04.

У меня есть файл с именем .Xmodmap в моей домашней папке, который содержит нужные сопоставления. Если я запускаю его вручную, он отлично работает, поэтому там нет ошибок. Чтобы запустить его при запуске, я попытался:

Используя различные .xinitrc, содержащие одну из следующих команд: xmodmap .Xmodmap xmodmap ~/.Xmodmap /usr/bin/xmodmap /home/NAME/.Xmodmap if [ -s ~/.Xmodmap ]; then xmodmap ~/.Xmodmap fi Используя .Xresources вместо .xinitrc с теми же изменениями. Установка его в качестве приложения для запуска.

Ничего из этого не сделано в Ubuntu 13.04 (64-разрядная версия). Я также видел несколько идей о глобальном изменении сопоставлений клавиатуры, но большинство из них не были применимы в Ubuntu 13.04 (т. Е. Соответствующие файлы не существовали там, где они указаны), и я предпочитаю вообще не касаться глобальных настроек.

1
задан 19 September 2013 в 12:29

8 ответов

Для меня конфигурация xkb слишком сложна, если вы хотите переназначить 1 или 2 ключа способом, недоступным в настройках системы. Кроме того, решение должно оставаться на стороне пользователя без редактирования «/ usr / share / X11 / xkb / symbols /» и т. Д. Принудительная загрузка «xmodmap ~ / .Xmodmap» с использованием приложений для запуска работает только до тех пор, пока вы не приостановите, не измените пользователей или изменить раскладку клавиатуры. Итак, как предлагает голокорнер, с найденными фрагментами кода, я сделал скрипт python для загрузки при запуске сеанса, который перезагружает «~ / .Xmodmap», когда это необходимо.

Проверьте отчет об ошибке # 1243642 ( комментарий № 6) и загрузите его здесь.

11
ответ дан 24 May 2018 в 19:37
  • 1
    Все еще работает с 15.10 :-) Спасибо! – lalomartins 11 February 2016 в 19:42
  • 2
    Ссылка на этот легендарный скрипт, кажется, сломана. Может ли кто-нибудь поставить его на github? – Epigene 28 January 2017 в 13:07
  • 3
    Отлично - и только жизнеспособный ответ! Работает в 16.04. Чтобы заставить его работать в Python3, изменилось: " import gobject " к "из gi.repository import GObject в виде gobject". – Craig Hicks 21 February 2018 в 06:51
  • 4
    @Epigene - ссылка есть сейчас – Craig Hicks 21 February 2018 в 07:07
  • 5
    Хвалите! Гений работает. – dmanexe 7 May 2018 в 20:33

У меня была эта проблема в Ubuntu 14.04 и нашел решение здесь. По-видимому, Ubuntu не может сразу настроить клавиатуру после входа в систему, но немного позже. Поэтому, если вы добавите команду

sleep 4 && xmodmap ~/.Xmodmap &

в ~/.bash_profile, тогда она должна работать (это для меня).

EDIT: похоже, это работает только после входа в систему, а не после запуска. Мне придется исследовать это позже.

5
ответ дан 24 May 2018 в 19:37
  • 1
    Любая удача, чтобы запустить это после suspend / hibernate? – Jonathan Leaders 28 December 2014 в 02:34
  • 2
    Нет, к сожалению, я все еще не могу заставить его работать после загрузки. Поэтому каждый раз, когда я загружаюсь, я открываю терминал и нажимаю xmodmap ~/.Xmodmap :( – dremodaris 28 December 2014 в 19:19

Convert Caps Lock в Esc для vim использовать

Вот мой вариант сценария запуска сопоставления клавиш. Он преобразует Caps Lock в Esc на любую клавиатуру для использования с vi, vim или gvim.

В отличие от ответа q4w56, этот ответ не использует бесконечный цикл while; do. В противном случае одно ядро ​​моего двухъядерного процессора достигло бы 42% каждые 5 секунд, что значительно уменьшило бы заряд батареи для ноутбука.

#!/bin/bash
sleep 4
xmodmap -e "clear Lock"
xmodmap -e "keysym Caps_Lock = Escape"

Сохраните его как скрипт. Сделайте исполняемый файл с помощью chmod +x. Добавьте имя сценария и его местоположение в Session and Startup → Application Autostart (в Xubuntu).

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

Обоснование для этого переназначения клавиатуры

В сегодняшнем компьютерном мире есть очень мало осталось для клавиши Caps Lock . В общем, следует воздерживаться от использования ВСЕХ CAPS в силу как сетевого этикета, так и разделения представления и контента. Более того, случайное нажатие клавиши Caps Lock при редактировании текста с помощью vim не всегда сразу отмечается, но неизменно приводит к довольно раздражающему поведению vim. Отключение клавиши Esc и повторное использование его в качестве легкодоступной клавиши Esc приводит к двойной победе для использования vim.

3
ответ дан 24 May 2018 в 19:37
  • 1
    Замена функции клавиши Caps Lock может быть реальной спасательной способностью для пользователей vim на Apple MacBook без клавиши Esc . – Serge Stroobandt 27 October 2016 в 10:40
  • 2
    Лучше переназначить capslock на ctrl. Это решает еще много проблем, и в Vim вы можете использовать capslock + [ для Esc Извините за вмешательство, но я чувствовал себя обязанным предложить это. – user907860 2 March 2017 в 19:43

У меня тоже была проблема с Ubuntu 16.04 с fcitx, и у меня было решение в wiki fcitx, но для fcitx требуется 4.2.7 или новее

touch ~/.Xmodmap записать перезагрузку конфигурации и fcitx попытается загрузить его автоматически

Также есть объяснение причины.

3
ответ дан 24 May 2018 в 19:37
  • 1
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Videonauth 8 June 2016 в 10:36
  • 2
    @Videonauth Я изменил свой ответ – Bluethon 8 June 2016 в 10:44
  • 3
    Большое спасибо :) Я оставляю здесь свой комментарий, так что люди в обзоре могут увидеть, как вы что-то изменили. – Videonauth 8 June 2016 в 10:46
  • 4
    @Videonauth это мой первый ответ, и я беден от английского, поэтому я сделал некоторые ошибки. и thx для вашего совета. : П – Bluethon 8 June 2016 в 10:49
  • 5
    Пожалуйста. Предоставление ответов - хороший способ внести свой вклад в сообщество. – Videonauth 8 June 2016 в 10:54

@ Ответ Даниила указал мне правильный путь, но я хотел бы остановиться на нем.

Работает для меня в Linux Mint 17.2 и Ubuntu 16.04.

Я пробовал все завихрения, которые я мог бы использовать, чтобы продолжать использовать xmodmap, но все они терпят неудачу, когда система засыпает Режим. То же самое и для сценариев запуска, которые используют setxkbmap в тех случаях, когда * settings-daemon (для меня это xfce4) выполняется позже, чем скрипт, и на заказ не может влиять действительно.

Что я, наконец, придумал, имеет следующие ингредиенты:

1) Напишите минимальный файл сопоставления клавиатуры для /usr/share/X11/xkb/symbols. Позволяет вызвать файл mylayout. Это может быть так же просто, как

xkb_symbols "basic" {
  name[Group1] = "My Layout";
  include "us"
  key <AE03> { [ 3, numbersign, sterling, sterling] };
  include "level3(ralt_switch)"
}
basic - это просто имя, мы встретим его позже. [F7] аналогично - это просто имя, которое кажется, но оно не будет играть никакой роли позже. include "us" включает обычную клавиатуру. Фактически us - это другой файл в том же каталоге. Это клавиатура, которую мы адаптируем. Выберите другой, если необходимо. Примечание: точка с запятой не заканчивается. Линия key - это одна адаптация клавиатуры, больше может следовать. [F11] можно найти в файлах под /usr/share/X11/xkb/keycodes. Используйте программу xev, чтобы выяснить, что ключ «3» имеет код ключа 12, а в файле кодов клавиш Xfree86 он отображается на <AE03>. Наконец, еще одна директива include для активации другой опции клавиатуры, в этом случае я хочу, чтобы правая клавиша Alt была клавишей сдвига уровня 3, то есть ключ, который дает доступ к знаку sterling, указанному выше. level3 - это просто имя файла в той же папке с ralt_switch одной его частью. Посмотрите вокруг и выберите то, что вам нужно включить.

2) Я не поместил mylayout в системную папку. Вместо этого я сделал только мягкую ссылку из системной папки в папку, которая мне нравится, чтобы сразу увидеть, что это не программное обеспечение для акций.

3) Далее я сделал not исправить [ f21], чтобы предотвратить проблемы с обновлением. Но это должно было бы найти mylayout в редакторе конфигурации клавиатуры (для xfce4 это xfce4-keyboard-settings). Вместо этого я использовал xfce4-settings-editor и изменил keyboard-layout->XkbLayout на mylayout (имя файла) и XkbVariant на basic (см. Выше). Впоследствии mylayout/basic отображается в редакторе настроек клавиатуры тоже. Кажется, что запись в evdev.xml необходима только для выбора макета.

Таким образом, настройки клавиатуры теперь выходят в спящий режим и перезагружаются.

Больше фона может быть найденный здесь: http://www.charvolant.org/~doug/xkb/html/node5.html.

Другой подход к исправлению проблемы в спящем режиме (не пробовал себя) можно найти здесь: http://www.charvolant.org/~doug/xkb/html/node5.html .

3
ответ дан 24 May 2018 в 19:37

Чтобы использовать существующий файл .Xmodmap (проще всего настроить), применяя его через xkb (текущий) - и автоматически загружайте его для каждого пользователя - выполните четыре шага:

Загрузите. Xmodmap-файл xmodmap .Xmodmap Преобразовать его в файл .xkb xkbcomp $ DISPLAY $ HOME / .xkbmap Устанавливать загрузку автоматически при открытии терминала echo 'xkbcomp $ HOME / .xkbmap $ DISPLAY' >> ~ / .bashrc Убедитесь, что ' терминал "появляется в приложениях запуска.

автонагрузка для каждого пользователя

Это относится к текущему выпуску LTS, 16.04. (xkb-сопоставления не сохранились в приостановках и спящих в более ранних версиях.) Шаги 3 и 4 являются обходным решением, так как нет возможности для автоматической загрузки файла xkb для каждого пользователя. Взято из поста 14 связанного потока ошибок.
2
ответ дан 24 May 2018 в 19:37
  • 1
    Я пытаюсь использовать этот метод сейчас и сейчас, когда я запускаю терминал, я получаю кучу таких сообщений: Предупреждение: для символов & lt; AB11 & gt; (код ключа 97). Предупреждение. Никакие символы, определенные для & lt; JPCM & gt; (код ключа 103). Предупреждение. Никакие символы, определенные для & lt; I120 & gt; (keycode 120) ...... еще многие не уверены, какими будут последствия этого. Кто-нибудь знает? – lost baby 21 January 2017 в 04:24
  • 2
    Этот метод, несмотря на вышеупомянутые предупреждения, работает, но только временно - через некоторое время отображение каким-то образом забывается, а супер-ключ возвращается к своей функции по умолчанию. Поэтому я попробую это по-другому - я переназначу основные ярлыки редактирования на моем mac, чтобы использовать контрольный ключ вместо ключа Command и посмотреть, работает ли это. Я просто хочу, чтобы мои команды cut-copy-paste-undo-redo были одинаковыми на Mac и Ubuntu. Я очень расстраиваюсь, когда меню поиска появляется на Ubuntu каждый раз, когда я пытаюсь скопировать или вставить что-то. – lost baby 28 January 2017 в 12:38

Это также заставило меня споткнуться, когда я обновился с Ubuntu с 12.04 по 13.04.

К счастью, этот параметр теперь (или, возможно, всегда был) легко доступен в настройках клавиатуры и может быть изменен с помощью несколько щелчков мыши.

Перейдите в раздел «Системные настройки»> «Макет клавиатуры»> «Параметры» ... В «Параметры макета клавиатуры» щелкните стрелку, чтобы открыть параметры позиции «Ctrl». Установите галочку в Swap Ctrl и Caps Lock.

Там вы идете: Left Control и Caps Lock имеют переключаемые позиции.

Не забудьте удалить ~/.Xmodmap после внесения изменений.

0
ответ дан 24 May 2018 в 19:37
  • 1
    Возможно, это было занижено, потому что это не касается xmodmap, но на самом деле я обнаружил, что использование Gnome Tweak, возможно, было причиной того, что некоторые из моих сопоставлений были странными. – dragon788 31 October 2017 в 02:14
  • 2
    Я не вижу этого в 16.04, это все еще возможно? – chrismarx 3 January 2018 в 23:12
  • 3
    @chrismarx Нет, они удалили его. В настоящее время (16.04) я устанавливаю XKBOPTIONS="ctrl:swapcaps" в /etc/default/keyboard. – glts 4 January 2018 в 00:31

Я нахожу добавление этого сценария к запуску, удовлетворяющему:

while true;do 
    xmodmap -e "keycode 87=Prior"
    xmodmap -e "keycode 88=Next"
    sleep 5
done

Я попытался использовать xmodmap ./Xmodmap, но каждый раз, когда он выполняется, произойдет заметное отставание.

0
ответ дан 24 May 2018 в 19:37
  • 1
    Следует избегать использования любого бесконечного цикла while; do. Это привело к тому, что одно ядро ​​моего двухъядерного процессора достигло 42% каждые 5 секунд, сильно уменьшило заряд батареи ноутбука! – Serge Stroobandt 17 April 2016 в 03:25

Другие вопросы по тегам:

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