Як зробити клавішу 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.