Як я можу окремо відображати ліву та праву клавіші зміни?


10

По-перше, вибачте моє незнання X та XKB; Я намагався зламати рішення разом, сподіваючись досягти того, що хочу, не вимагаючи детального розуміння цього.

Я намагаюся створити карту клавіатури XKB на Ubuntu 12.04, яка дозволяє мені визначити, яка з двох клавіш зсуву є модифікатором рівня 2. Зокрема, 4ключ повинен створювати лише $тоді, коли відбудеться правий зсув, а не лівий.

Моє читання досі:

Я спробував визначити спеціальний тип, а потім явно посилаюся на нього на карті символів:

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

Потім я вибираю карту за допомогою графічного інтерфейсу макета клавіатури Ubuntu.

Це, очевидно, відключає буквено-цифрову клавіатуру, крім 4клавішної, але знак долара все одно можна набрати за допомогою будь-якої клавіші зсуву.

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

Будь-які ідеї?

Відповіді:


2

Я не знаю, чи потрібне вам рішення, але одна можливість відключити ліву клавішу зсуву - це використання xmodmap. Створіть файл ~/.Xmodmapіз вмістом

clear shift
add shift = Shift_R

і біжи xmodmap ~/.Xmodmap.


Дивіться коментарі / чат:

Ви можете зіткнутися з проблемами, якщо якісь інші зміни, внесені у ваш xkbmap якоюсь іншою програмою, можуть перезавантажити xkbmap за замовчуванням з чимось подібним setxkbmap us.

Якщо ви хочете, щоб деякі клавіші відповідали лише одній клавіші зсуву, ви зможете отримати поточну розкладку клавіатури, завдяки чому xmodmap -pke > .Xmodmapви отримаєте список .Xmodmapусіх ваших клавіш у вигляді keycode XX = functions. У цьому призначенні кожен код клавіш може мати кілька функцій праворуч. Кожен відповідає іншому модифікатору + цій клавіші. Ви можете замість цього вставити поле очищення + додати щось подібне add mod5 = Shift_L. Права клавіша зсуву відповідатиме mod2, а ліва - mod5. Ви можете продовжувати та переміщувати функції mod2 клавіш, до яких потрібно зателефонувати, лівою клавішею переключення до mod5, просто вставивши NoSymbolпробіли та пробіли, поки не досягнете правого стовпця ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N).


Радий допомогти. Це спрацювало?
Трудберт

Вибачте, напружений день. У мене все ще є обидва клавіші зміни після запуску xmodmap, чи потрібно мені щось робити, щоб отримати зміни?
mbfisher

Спробуйте xmodmap -e "чіткий зсув", після цього у вас не повинно бути жодних клавіш зміни, якщо це працює, і решта має працювати також
Трудберт

Ні, все ще дісталися ключі. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher

дивно. Немає повідомлення про помилку? clear повинен видалити все, що пов'язано з модифікатором, щоб нічого не залишалося. Я перейду на роботу над системою Linux через годину або близько того, і знову вивчу це.
Трудберт

2

Ось що, нарешті, спрацювало! Я використовував xmodmapі ~/.Xmodmapфайл, а не xkb конфігурацію.

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

У 2-х коментованих рядках (дивлячись на них !) відображаються заголовки стовпців до і після моїх змін. Це дозволило мені вказати col 2 як Shift_L та col 3 як Shift_R, оскільки я відобразив shift_R як Mode_switch.

Зміни вносяться за допомогою запуску:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap usвстановлює карту США за замовчуванням, щоб ви працювали з чистого аркуша, і xmodmapдодає до неї спеціальні зміни.

Коли реалізовано !, @, #, $і %символи можуть бути надруковані тільки з правою клавішею зсув, і ^, &, *, (і )можуть бути введені тільки з лівої кнопкою перемикання.

Тепер я можу продовжувати, зіставляючи всі клавіші з лівої сторони клавіатури, щоб змінювати лише праву клавішу зсуву (тобто аплікативні символи та їх великі зміни) та навпаки; це рішення означає, що мені потрібно лише переробити ліву сторону.

Інші корисні посилання, знайдені попутно:

Дуже дякую @Trudbert за те, що я отримав більшу частину шляху до відповіді!

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