Как программно поменять местами клавиши caps lock и esc?

18

Я большой пользователь Vim, и первое, что я делаю, когда начинаю работать над чистой установкой Ubuntu, это меняю клавиши caps lock и esc, чтобы уменьшить движения рук над клавиатурой.

До сих пор я делал это через диалог конфигурации клавиатуры, но сейчас я пишу набор сценариев, которые будут настраивать Ubuntu так, как мне нравится, и я не смог найти сценарий или программируемый способ изменить этот элемент конфигурации.

Я не ищу варианты, которые меняют клавиши на любом другом уровне, кроме самого gnome, так что я ищу способ написания сценария этого изменения и отображения его в конфигурации клавиатуры, которую я использовал, если я решу верните его вручную в будущем.

Якобо де Вера
источник
хорошая идея! Я жаловался все время на то, чтобы переместить мою руку для Esc во время работы в Vim, но теперь это решение! спасибо братан ;-)
Сазары
1
Будьте осторожны, однако, как только вы привыкнете менять их, становится неловко, когда вам приходится работать на клавиатуре кого-то другого :)
Jacobo de Vera
2
Другой вариант - Ctrl-C вместо Esc. (Работает на всех клавиатурах.
Эрик Уилсон,
@FarmBoy, классно! Я этого не знал!
Якобо де Вера

Ответы:

22

Вы можете сделать это через графический интерфейс, открыв Keyboard Preferencesпанель управления (внизу System -> Preferences) и выбрав Layoutвкладку. Нажмите на Options...кнопку, чтобы открыть диалоговое окно параметров макета. Разверните Caps Lock key behaviourраздел и выберите Swap ESC and Caps Lock.

Есть несколько способов написания сценариев такого рода вещей.

Прямо через Xkb

Мы можем внести изменения напрямую с помощью следующего:

setxkbmap -option caps:swapescape

Вы можете отключить все текущие параметры макета (которые вернут caps lock к его поведению по умолчанию) с помощью:

setxkbmap -option ''

Через GConf

Панель управления настройками клавиатуры сохраняет свою конфигурацию через gconf, с фактически примененной раскладкой gnome-settings-daemon. Поэтому вы можете gnome-settings-daemonнастроить макет самостоятельно, обновив gconf.

Соответствующая настройка в этом случае выглядит так /desktop/gnome/peripherals/keyboard/kbd/options. Таким образом, вы можете установить параметр с помощью:

gconftool-2 --set /desktop/gnome/peripherals/keyboard/kbd/options \
    --type list --list-type string \
    '[caps<tab>caps:swapescape]'

Выше <tab>должен быть буквальный символ табуляции, а не пробелы. Вы можете снова отключить это поведение, установив ключ gconf в пустой список.

Джеймс Хенстридж
источник
Опция gconf - это именно то, что я искал, однако ваша конфигурация превращала заглавные буквы в клавишу escape, а клавишу escape - в клавишу табуляции. Я снова изменил настройку вручную и посмотрел на значение в gconf-editor, оно было на самом деле [caps<tab>caps:swapescape]. Теперь все работает, я принимаю ваш ответ и предлагаю вам отредактировать его, чтобы изменить значение для дальнейшего использования. Благодарю.
Якобо де Вера
@Jacobo В будущем вы можете предложить редактирование самостоятельно - просто нажмите кнопку редактирования под ответом. Ваше изменение будет быстро одобрено кем-то. Я сделал редактирование для вас (проверьте, правильно ли это). В любом случае, хороший ответ @James! +1
Стефано Палаццо
1
@ Стефано, спасибо, я не заметил опцию редактирования.
Якобо де Вера
Есть ли способ заставить это работать в GDM на экране входа?
Линд