Як зробити клавішу Caps Lock третьою клавішею Shift?


19

Як змусити клавішу Caps Lock так само, як іншу клавішу Shift?

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

Клавіатура Розкладка / Caps Lock, поведінка клавіш не зробить це, я не розумію, як переробити її в CCSM.

Зараз я використовую клавіатуру Великобританії, але я навчився набирати клавіатуру в США, менша ліва клавіша Shift - НАДУВАННЯ МИ НАРОДІВ.



1
@ David-yourfriend OP спеціально сказав, xmodmapщо не працює.
— The Wanderer

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 навіть у немодифікованій системі. Індикатор прокрутки прокрутки увімкнено під час входу, але вимкнено блокування прокрутки та індикатор Num Lock вимкнено, але Num lock увімкнено. Натискання лівої Ctrlклавіші, здається, вирішує цю поведінку, і я не впевнений, що це пов’язано з моїм використанням перемикача KVM (що можливо)

Примітка. Подальше тестування показує, що індикатор NumLock вмикається навіть без перемикача KVM і його потрібно двічі натискати, щоб повернутися в синхронізацію з NumLock. Якщо ви завжди залишаєте його, ви можете ігнорувати світло, або якщо це турбує, ви можете натиснути його двічі, щоб повернути його синхронізовано. Чому це відбувається, ймовірно, є підставою для нового питання ...

Ще одним простим рішенням вашої первісної проблеми було б просто отримати недорогу клавіатуру США та скористатися картуванням клавіатури США.

Джерела: @ Zacharee1 відповідь та аналіз, /usr/share/X11/xkb/symbols/pcтестування та тестування помилок


Тож вам довелося вимкнути цю річ 36? Просто зміни на « Shift_Lбуло» досить, щоб повністю відключити блокчейн для мене.
— The Wanderer

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

Хм. Це могло бути. Я бачу, чи зможу я отримати замонну для тестування на VM, оскільки у неї є дошка Великобританії.
— TheWanderer

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

Це все нарешті випробувалось і працювало (поки що принаймні). Як не дивно, що індикатор Num Lock на моїй клавіатурі погасне, але додаткові цифрові клавіші за замовчуванням увімкнуті, коли я входжу в систему, і це те, що я був після. Спасибі!
— Том Броссман

10

Ви можете потрапити туди, адаптувавши Як змінити ключ CapsLock, щоб створити "a"? (наприклад).

Вийміть Lockмодифікатор (= Caps Lock) з Caps Lockключа та Shift_Lзаявіть, що цей ключ надсилає keyym.

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файл, але може бути використана при необхідності та додана до програм запуску. Дуже гарна відповідь!
— Сергій Колодяжний

7

Ігноруючи мої попередні спроби відповісти на те, що не вдалося, я знайшов щось, що повністю повертає блокчейн в ліву зміну. Ніякого перемикання, я думаю, це наполегливо, і це досить просто.

По-перше, я рекомендую зробити резервну копію, перш ніж познайомити, як її змінити.

Біжи sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Тепер, коли є резервна копія, давайте перейдемо до редагування.

Використовуйте улюблений текстовий редактор, щоб відредагувати цей файл як корінь:

/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 TWICE, щоб повернути її (тільки в перший раз). Химерність. Дійсно оцініть допомогу поки що.
— Том Броссман

Можливо, мені потрібно задати нове запитання "Як запобігти перешкодженню перезавантаження Caps Lock на Num Lock 16.04?" але я хотів би знайти тут першопричину. Або це, або настав час відкрити клавіатуру та внести деякі фізичні зміни до неї ...
— Том Броссман,

Це дивно. Чи працює numlock знову, якщо ви запустите xkbset nullify lock?
— The Wanderer

@TomBrossman Я не знаю, чи це щось для вас змінить, але це працює для мене. Замість просто Shift_Lпоставити Shift_L, Caps_Lock. Переконайтесь, що дужки розташовуються в черзі.
— TheWanderer

1
@TomBrossman Мені подобається використовувати судо, якщо це не небезпечно, просто щоб бути впевненим: p. Коли я редагував файл, L для зміни було великим капіталом, і так само було заблоковано шапки. Дивно. Річ із 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..
— TheWanderer

О Боже! це через 16.04? Це працює з мого 14.04. Коментар Баунті, схоже, не вказує.

Я не робив щедрості, тому я не знаю насправді.
— TheWanderer

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