Как сделать клавишу Caps Lock третьей клавишей Shift?


19

Как сделать так, чтобы клавиша Caps Lock работала так же, как другая клавиша Shift?

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

Раскладка клавиатуры / Caps Поведение ключа блокировки не поможет, я не понимаю, как переназначить его в CCSM.

Я сейчас использую британскую клавиатуру, но я научился печатать на американской клавиатуре, меньшая левая клавиша Shift - DRIVING ME NUTS.



1
@ Дэвид, твой друг ОП специально сказал, xmodmapчто не работает.
— Странник

1
В xkb это как-то связано с картами совместимости, которые переводят определенные комбинации клавиш в действия, а не в символы. Это займет больше времени на исследования и тестирование, чем у меня есть на данный момент. Если я получу шанс, я углублюсь в это дальше, если не, возможно, эта хлебная крошка приведет кого-то еще в правильном направлении.
— Старейшина Гик

Ответы:


14

Расширяя ответ @ Zacharee1:

сделать резервную копию с cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

затем отредактируйте с помощью gksu gedit /usr/share/X11/xkb/symbols/pcили вашим любимым редактором.

Найдите строку (22), которая говорит:

key <CAPS> { [ Caps_Lock ] };

и изменить его на

key <CAPS> { [ Shift_L ] };

и строка (36), которая говорит:

modifier_map Lock { Caps_Lock };

и изменить его на

//modifier_map Lock { Caps_Lock }; (который должен закомментировать это фактически отключая блокировку)

Тестирование показывает, что Num Lockвсе еще работает, как ожидалось. Дальнейшее тестирование показывает, что световые индикаторы клавиатуры кажутся немного дислексичными в 16.04 даже на неизмененной системе. Индикатор Scroll Lock включен при входе в систему, но Scroll Lock выключен, и Num Lock выключен, но Num Lock включен. Касание левой Ctrlклавиши, кажется, решает эту проблему, и я не уверен, связано ли это с моим использованием KVM-переключателя (что возможно)

Примечание. Дальнейшее тестирование показывает, что индикатор NumLock является слабым даже без KVM-переключателя, и его необходимо дважды нажать, чтобы вернуться в синхронизацию с NumLock. Если вы всегда оставляете его включенным, вы можете игнорировать индикатор или, если он вам мешает, вы можете нажать на него. дважды, чтобы вернуть его в синхронизацию. Почему это происходит, вероятно, является основой для нового вопроса ...

Другим простым решением вашей исходной проблемы было бы просто получить недорогую клавиатуру США и использовать раскладку клавиатуры США.

Источники: @ Zacharee1 ответ и анализ /usr/share/X11/xkb/symbols/pcи проб и ошибок тестирования


Таким образом, вы должны были отключить эту строку 36 вещь? Shift_LОдного изменения было достаточно, чтобы полностью отключить capslock для меня.
— Странник

@ Zacharee1 Я подумал, что это может быть причиной воздействия на Numlock, которое Том Броссман упомянул в комментарии к вашему сообщению и вынул его только по этой причине.
— Старейшина Гик

Хм. Это может быть так. Я смотрю, смогу ли я заставить Занну протестировать виртуальную машину, так как у нее есть британский совет.
— Странник

@ Zacharee1 Это было бы здорово, поскольку у меня нет этого оборудования для тестирования, и я часто полагаюсь на логику в тех случаях, когда полное тестирование невозможно.
— Старейшина Гик

Это наконец-то сделано, протестировано и работает (пока, по крайней мере). Странно, что индикатор Num Lock на моей клавиатуре не горит, но дополнительные цифровые клавиши включены по умолчанию, когда я вхожу в систему, и это то, что я хотел. Благодарность!
— Том Броссман

10

Добиться этого можно, адаптировав Как изменить ключ CapsLock для получения «а»? (например).

Удалите Lockмодификатор (= Caps Lock) из Caps Lockключа и объявите, что этот ключ отправляет Shift_Lkeyym.

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Кроме того, вы можете удалить Lockмодификатор и добавить Shiftмодификатор.

remove Lock = Caps_Lock
add Shift = Caps_Lock

В любом случае, эти строки идут в файл ~/.Xmodmap. Проверьте, загрузив его xmodmap ~/.Xmodmap; файл читается автоматически, когда вы входите в среду по умолчанию (или, по крайней мере, это было в дни Gnome).


2
Отлично, это сработало. Я сделал новый пустой документ в моем домашнем каталоге с именем .Xmodmap и вставил в него ваш первый пример. Затем я набрал 'xmodmap ~ / .Xmodmap' в терминале, чтобы он сразу вступил в силу. Оба объяснены в связанном ответе. Спасибо.
— Том Броссман

Второй набор команд у меня не работает, но первый работает отлично. Нажатие Caps Lock даже не включает подсветку клавиатуры, поэтому она даже не запускает мою скрытую OCD.
— Вальдир Леонсио

Хороший ответ, Жиль! Просто чтобы добавить к вашему ответу, это также можно сделать одной единственной командой: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" и отменить ее setxkbmap -option , которая не записывает в ~/.Xmodmapфайл, но может использоваться при необходимости и добавляться в Startup Applications. Очень хороший ответ!
— Сергей Колодяжный

7

Не обращая внимания на мои предыдущие попытки ответить неудачно, я обнаружил что-то, что полностью превращает капслок в левое смещение. Не переключаться, я думаю, что это постоянно, и это довольно просто.

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

Бегать sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Теперь, когда есть резервная копия, давайте перейдем к редактированию.

Используйте ваш любимый текстовый редактор для редактирования этого файла как root:

/usr/share/X11/xkb/symbols/pc

Найдите сегмент, который выглядит следующим образом (он для меня ближе к вершине, строка 22):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

редактировать

key <CAPS>  {   [ Caps_lock             ]   };

быть

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

вместо. ( Caps_LockПосле Shift_L,может быть ненужным.)

Перезапустите менеджер дисплеев (обычно sudo service lightdm restart), и колпачок теперь будет сдвигаться влево. ( Примечание: моя тестовая машина использует GNOME, поэтому мне пришлось перезагрузить компьютер gdm. Однако, это вызвало странное мерцание в резервном TTY и gdmникогда не перезапускалось. Мне пришлось полностью перезагрузиться.)

Этот я действительно смог протестировать и могу подтвердить, что он работает.

Адаптировано из Постоянного xmodmap в Ubuntu 13.04


Спасибо, но это мешает Num Lock, который я оставляю на постоянной основе. В моем раннем устранении неполадок изменение Caps_lock> Shift_L в /usr/share/X11/xkb/symbols/capslockтакже мешало Num Lock. В 16.04 есть что-то другое, например, индикатор Num Lock раньше горел при загрузке, но теперь он гаснет при входе в LightDM. Когда я тестирую ваше решение, оно изменяет Caps Lock на Shift, но при первом нажатии Caps Lock Num Lock отключается, и мне приходится нажимать Num Lock ДВАЖДЫ, чтобы снова включить его (только в первый раз). Bizarre. Очень ценю помощь до сих пор, хотя.
— Том Броссман,

Возможно, мне нужно задать новый вопрос "Как предотвратить повторное вмешательство Caps Lock с Num Lock 16.04?" но я бы хотел найти здесь причину. Либо это, либо пришло время открыть клавиатуру и внести в нее некоторые физические изменения ...
— Том Броссман,

Это странно. Работает ли numlock снова, если вы запускаете xkbset nullify lock?
— Странник

@ TomBrossman Я не знаю, изменит ли это что-нибудь для вас, но это работает для меня. Вместо того, чтобы просто Shift_Lвставить Shift_L, Caps_Lock. Убедитесь, что скобки совпадают.
— Странник

1
@ TomBrossman Мне нравится использовать sudo, если это не опасно, просто чтобы быть уверенным: с. Когда я редактировал файл, буква L для смены была заглавной, как и заглавные буквы. Weird. NumLock тоже странная вещь, так как она отлично работает для меня. Все это странно: p
— TheWanderer

3

За 14.04

Однострочник:

xmodmap -e 'keycode 66=Shift_L'

НО , в неожиданном случае 66неправильный код клавиши, сначала запустите xevв консоли и нажмите CapsLock. Тогда вы увидите что-то вроде:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Правильный код ключа указан в XX.


1
Посмотрите на сообщение баунти: Xmodmap trick no longer works and xkb handles this now..
— Странник

Боже мой! это из-за 16.04? Работает на моем 14.04. Комментарий к награде, похоже, не указан.

Я не сделал награду, поэтому я действительно не знаю.
— Странник

Извините, это для новой версии 16.04. Левая или правая клавиша Shift будет в порядке, я выбрал левую для вопроса, потому что она смежна и xevвидит их как разные клавиши.
— Том Броссман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.