Привязка супер к Ctrl
А как насчет привязки левой Windows/Logo/Super
клавиши к другой Ctrl
клавише?
Вы можете достичь этого с помощью следующих команд xmodmap:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
Предполагая, что вы сохранили вышеуказанные строки, super_as_ctrl.xmodmap
вы можете проверить эффект, выполнив
xmodmap super_as_ctrl.xmodmap
Чтобы сделать изменение постоянным (повторный вход в систему / перезагрузка), переименуйте файл .Xmodmap
в свою домашнюю папку.
(Выше был протестирован на работающей системе Ubuntu 11.10, но он должен быть таким же для других дистрибутивов Linux)
Настройка ярлыков копирования / вставки для вашей терминальной программы
Привязав Super
к Ctrl
вам теперь можно использовать Super-C
для копирования почти везде. Единственным распространенным исключением является ваша терминальная программа. Однако вы можете переопределить ярлыки там.
Я узнал, что даже gnome-terminal
есть эта опция к настоящему времени (у меня не было, пока я не привык к так Ctrl-Shift-C
или иначе). Если вы используете его, перейдите Edit / Keyboard Shortcuts...
в меню и назначьте Ctrl-C
для копирования и Ctrl-V
вставки. Должно быть похоже на konsole
и т. Д.
И не волнуйтесь, вы не потеряете возможность завершить программу с помощью ярлыка. После повторного связывания ярлыка копирования для терминала, вы можете просто использовать, Ctrl-Shift-C
как вы использовали Ctrl-C
ранее. Терминал не различает, нажата ли Shift или нет. И ярлык больше не ловится для копии. В качестве альтернативы, привязать конец к другому ярлыку, как предполагает MountainX в своем ответе.
XF86Copy и т. Д. Не работают
Что касается ключевых символов для копирования и вставки: по-видимому, они не имеют никакого эффекта. Я быстро проверил это, назначив действие копирования Shift-ScrollLock (оно не использовалось, и я хотел протестировать с ключом без модификатора):
xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'
Нажатие это не имело никакого эффекта, ни с XF86AudioMute. Однако это сработало при назначении буквы «а». Так что я думаю, что есть особая проблема с этими специальными символами XF86.
Если вы хотите связать всего несколько последовательностей вида Super + x, Super + c, Super + v с другими последовательностями, такими как, например, Ctrl + x, Ctrl + c, Ctrl + v, чтобы (по желанию OP) эти Определенные последовательности супер-ключей обычно сопоставляются для вырезания и вставки, не влияя на любое другое использование супер-ключа в вашей системе, это возможно, используя только расширение XKB. Процедура ниже описывает шаги и дает два разных примера деталей для двух разных начальных настроек клавиатуры; надеюсь, это предоставит достаточно информации для адаптации к вашей системе. Предполагается, что вы можете создавать и редактировать файлы в своей системе, в том числе в таких местах, как
/usr/share/X11/xkb
.Решите, где вы хотите разместить ваше дерево конфигурации XKB. Сначала найдите систему один. Обычно он находится в / usr / share / X11 / xkb, и я не совсем уверен, как его найти, если его там нет; Вы можете просто найти в вашей системе каталоги с именем "xkb". В любом случае, как только вы нашли его, вы можете либо изменить систему на месте, либо использовать любой каталог по вашему выбору. Преимущество использования системного каталога состоит в том, что вы можете намного легче вызывать ваши изменения, но недостатком является то, что будущие обновления системы могут перезаписать ваши изменения (вас предупредили). В любом случае, все имена файлов, упомянутые ниже, относятся к этому каталогу, который я буду называть при необходимости $ XKBLOCAL $, и все команды предполагают, что это ваш текущий каталог.
Определите тип ключа XKB, которым являются текущие ключи x, c, v. Самый простой способ сделать это - использовать команду
xkbcomp -a $DISPLAY - | grep -C 6 c,
(обратите внимание, что запятая намеренно включена в шаблон). В моем первом примере настройки это дает:тогда как в моем другом примере настройки это производит
В результате в первом примере соответствующие ключи имеют тип «ALPHABETIC», а во втором примере они имеют тип «FOUR_LEVEL». В зависимости от настроек клавиатуры, вы можете обнаружить, что они вообще какого-то другого типа. В дальнейшем тип будет называться $ TYPE $, который вы должны заменить на фактическую строку ALPHABETIC или что-либо еще в приведенных ниже командах.
Найдите определение $ TYPE $ и скопируйте его в новый файл в каталоге $ XKBLOCAL $ / types. Вот команда , которая делает именно это:
xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. Название файла "cutpaste", которое я выбрал, является произвольным, используйте любое имя, которое вам нравится, но учтите, что на последующих шагах вам придется последовательно обращаться к этому файлу. При первой настройке этот файл получает содержимоеа в другом примере он получает содержимое
Отредактируйте типы файлов / cutpaste так, чтобы они делали две вещи: добавляли преамбулу и пост-марку, делающие ее подходящим предложением XKB, и изменяли имя типа и определение типа, чтобы добавить еще один уровень, создаваемый модификатором, соответствующим Super. Вы должны проверить, что это за модификатор в вашей системе, скорее всего это Mod4, как использовано ниже. Необходимые модификации должны быть очевидны из двух примеров окончательных версий типов / пасты, а именно:
а также
Скопируйте определения символов ключа, которые были выведены с помощью grep на втором шаге, во второй новый файл символов / вырезки, добавьте аналогичную преамбулу и пост-символ, измените определения, чтобы использовать новые типы, и добавьте действия в определение для обработки требуемого ключа. производится супер версиями. Результаты этого в наших двух примерах:
а также
Обратите внимание, что во втором примере я также выжал некоторые (незначимые) пробелы, чтобы держать длину строки под небольшим контролем.
Найдите название набора правил, который в настоящее время использует XKB. Это легко, это показано в результате
setxkbmap -query
. В моем случае это был «evdev».Скопируйте системную версию rules / evdev (или каково бы ни было название вашего набора правил) в $ XKBLOCAL $ / rules / evdev и добавьте правила, указывающие на опции, которые мы создали. Здесь у вас есть два варианта: вы можете скопировать все evdev или только те части, которые упоминают модель клавиатуры, раскладку, вариант и опции, которые вы фактически используете. Конечно, если вы изменяете системные файлы на месте, вам не нужно ничего делать, просто редактировать.
В этом случае добавляемое идентично независимо от начальной настройки клавиатуры, поэтому есть только один пример. Вы найдете раздел файла правил, который начинается с,
! option = symbols
и добавите строкуcutpaste:super = +cutpaste
в этот раздел, а также найдете раздел файла правил, который начинается с,! option = types
и строкуcutpaste:super = +cutpaste
в этом разделе.Скопируйте системную версию evdev.lst и добавьте строку для новой опции. Обратите внимание, что имя этого файла просто соответствует имени файла правил с добавлением .lst. Как и на предыдущем шаге, вы можете скопировать весь файл или только часть, на которую ссылаются используемая модель, макет, вариант и опции. Вам просто нужно найти раздел этого файла, который начинается с,
! option
и добавить следующую строку:cutpaste:super Add super equivalents of cut and paste operations
в этот раздел.Хорошо, теперь все файлы конфигурации на месте. Если вы изменили системные файлы, теперь вы можете вызвать новую опцию с помощью
setxkbmap -option cutpaste:super
. С другой стороны, если вы этого не сделали, вы должны сообщить setxkbmap, где находится ваш каталог $ XKBLOCAL $. Что еще хуже, сервер также не знает, где находится этот каталог, и setxkbmap не знает (или, возможно, не может, поскольку в конечном итоге сервер может работать на другом компьютере), не сообщает об этом. Поэтому вы должны передать вывод setxkbmap в xkbcomp, а также сообщить этой команде, где находится ваш каталог $ XKBLOCAL. Полная командная строка поэтомуsetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.Надеемся, что это кому-то поможет / интересует, так как хорошей исчерпывающей документации / справочника по XKB недостаточно. Одна очень полезная ссылка была http://madduck.net/docs/extending-xkb/ .
источник
setxkbmap -option
. Мои локальные настройки были почти идентичны примеру FOUR_LEVEL, за исключением некоторых символов Group2, Group3, которые я пропустил из файла частичных символов, поэтому мой файл выглядел так же, как примеры.Вот что я делаю. Это не окончательное решение, но я попытался найти окончательное решение и не смог достичь его после долгих усилий. Поэтому я согласился на то, что просто и работает более чем на 90% того, что мне нужно. Я могу реализовать его на любом компьютере, на котором я работаю (или на любой новой установке Linux), за считанные минуты. Это очень просто.
В приложении терминала X установите настройки ярлыка. Я сделал это как в Gnome, так и в KDE. Например, в Konsole перейдите в Меню> Настройки> Настроить ярлыки. В терминале Gnome X есть похожее меню. Просто выберите ярлык (например, «Копировать») и введите желаемую последовательность клавиш.
В случае, если ярлыки терминала копируют и вставляют конфликт с командами терминала, это тоже легко исправить. Например, что если кто-то захочет использовать CTRL-C для копирования (поэтому терминал X соответствует стандарту CUA)?
В этом случае вы можете легко изменить привязки клавиш stty (в .bashrc). Продолжая CTRL-C для примера копирования, скажем, вы хотите, чтобы ключ прерывания теперь был CTRL-b (для «break»). Это завершает это:
Тогда источник .bashrc.
Все решение так же просто, как использование настроек X-терминалов для изменения ярлыков, а затем, при необходимости, разрешение конфликтов с помощью команды stty с помощью однострочной команды echo. Мёртвый простой и охватывает практически все, что мне нужно
источник
Вероятно, ключ Windows является ключом-модификатором. запустите это и попробуйте снова:
источник
xmodmap -e 'remove Mod1 = Meta_L'
и проверка ваших команд после) работал нормально для меня.Я взял кое-что из того, что сказал Глен Уитни, и сумел использовать эти знания, чтобы отобразить поведение «хуже слова» или «манипулирование текстом» из macOS в пользовательскую таблицу ключей.
Я уже решил проблему с копированием и вставкой Ctrl и Super без использования этого конкретного решения, но, как я уже сказал, это было очень полезно для других целей. Я также избегал таких вещей, как xmodmap, поскольку в какой-то момент я намерен полностью поддерживать Wayland. Kinto использует нативный xkb и учитывает ожидаемое macOS, такое как поведение терминала.
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Вот также Gist, если вы просто хотите увидеть, что лежит в основе всего этого, он не будет чередовать вашу таблицу клавиш при необходимости. Gist также не содержит пользовательских файлов ключей xkb, которые устанавливают курсоры в стиле MacOS / манипуляции со словами, использующие Cmd и клавиши со стрелками.
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
содержание содержания
источник