Вводити комбінації клавіш?


12

Я користувач Ubuntu 10.04, який шукає спосіб, наприклад, зробити свій комп'ютер символом "+", коли я утримую клавішу Windows(я думаю, це називається Superу світі Linux) і натискаю Kклавішу. Мені це потрібно для роботи у всіх додатках. (Я людина з інвалідністю набору тексту, і мені потрібно адаптувати Ubuntu до моїх потреб.) Дякую!

Відповіді:


15

Оскільки ви хочете перезаписати ключі для всіх програм, найкращим варіантом є використання xmodmap. Він гнучкий і дуже потужний, але включає введення кількома командами в термінал.

Крок 0 - Підхід

X-сервер управляє клавіатурою та всіма ключовими подіями і переводить їх у кодові клавіш для всіх програм.

Підхід полягав би в тому, щоб відобразити модифікаційну клавішу (наприклад, клавішу Super або Right Alt) як клавішу "перемикання режимів" і сказати X-серверу генерувати різні коди залежно від того, натиснута чи клавіша Mode, утримувана чи ні.

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

Однак я хотів би, щоб ви розглядали можливість використання клавіші Right Alt як перемикача режиму, особливо якщо ви також використовуєте compiz, оскільки деякі додатки compiz відображають супер клавіші швидкого доступу (наприклад, вибір вікон, перемикач переключень тощо). Якщо ви не прагнете контролювати compiz за допомогою клавіатури, то Super просто чудово.

Для xmodmap, супер клавіші ідентифікуються як Super_L або Super_R. Вам потрібно вибрати один, який буде використовуватись як клавіша перемикання режиму. Крім того, правою клавішею Alt є Alt_R. Ви можете підтвердити це, запустивши xev і натиснувши необхідні клавіші на клавіатурі. Дивіться цю публікацію щодо кроків.

Крок 1 - Налаштування карти модифікатора

  1. Відкрийте термінал ( Applications -> Accesories -> Terminal) і запустіть наступну команду, щоб створити файл із поточними вкладками клавіш. Ми будемо використовувати це як вихідну точку.

    xmodmap -pke > curkeys.map
    xmodmap -pm >> curkeys.map
    
  2. Відкрийте це в улюбленому текстовому редакторі. gedit curkeys.map &відкриває його в gedit. Під кінець файлу ви побачите такі рядки:

    keycode 253 =
    keycode 254 =
    keycode 255 =
    xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):
    
    shift       Shift_L (0x32),  Shift_R (0x3e)
    lock        Caps_Lock (0x42)
    control     Control_L (0x25),  Control_R (0x69)
    mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d)
    mod3      
    mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
    mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
    
  3. Видаліть рядок, починаючи з "xmodmap: до 4 ..."

  4. Відредагуйте карту модифікатора, щоб вона виглядала приблизно так. Покладіть слово "додати" на початку кожного рядка та вставте "=" після імені модифікатора. Потім видаліть коди в дужках і комах. Також зауважте, що я перейшов Mode_switchвід mod5рядка до mod3рядка, оскільки він був порожнім. Змінена таблиця повинна виглядати приблизно так - фактичний вміст у вашому випадку буде дещо відрізнятися від наведеного нижче (залежить від розкладки клавіатури).

    add shift =      Shift_L  Shift_R
    add lock  =      Caps_Lock
    add control =    Control_L  Control_R
    add mod1    =    Alt_L Meta_L Alt_R 
    add mod2    =    Num_Lock
    add mod3    =    Mode_switch
    add mod4    =    Super_L Super_R Super_L Hyper_L 
    add mod5    =    ISO_Level3_Shift
    
  5. Перейдіть клавішу перемикання фізичного режиму. Додайте такий рядок наприкінці (замініть Super_L на Super_R або Alt_R, якщо потрібно).

    keysym Super_L = Mode_switch
    
  6. Видаліть ім'я ключа (Super_L) з будь-якого визначення модифікатора. Для Super_L це означає вилучити його з рядка mod4.

    add mod4    =    Super_R Hyper_L 
    

    Тепер права клавіша "Супер" все ще працюватиме як звичайна супер клавіша, тоді як ліва клавіша матиме особливі властивості.

  7. Тепер нам потрібно перезаписати клавіші, щоб створити різні коди, натискаючи вони, утримуючи Super_L чи ні. Кожен рядок у нашому файлі, який починається з keycode4 клавіш для кожної згенерованих клавіш, залежно від того, чи натиснуті клавіші Mod1 (перемикач) та перемикач режимів. ( Посилання )

    !...........................................................................
    !        Key            Base              Shift           Mode    Mode+Shift
    !---------------------------------------------------------------------------
    keycode  13             = 4               dollar          4       quotedbl
    keycode  14             = 5               percent         5       colon
    keycode  15             = 6               asciicircum     6       comma
    keycode  16             = 7               ampersand       7       period
    ...
    keycode  45             = k               K               k       K
    

    Якщо ми хочемо, щоб клавіша Super_L + k генерувала клавішу "+", тоді нам потрібно модифікувати її для читання

    keycode  45 = k K plus plus
    

    Остаточний плюс також відображає Shift + Super_L + k на плюс, але це може бути відображено на щось інше. Для кожної клавіші є рівно 1 рядок для зміни. Відредагуйте більше рядків, щоб перевстановити більше клавіш - перші 2 записи залиште недоторканими, щоб зберегти нормальну поведінку клавіші.

  8. Збережіть файл та вийдіть із редактора.

  9. Встановіть карту клавіш, виконавши наступні команди в терміналі. Перший встановлює його для цього сеансу, другий робить його постійним для майбутніх сесій.

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    
  10. Ви можете негайно перевірити це, натиснувши модифіковані клавіші (наприклад, Super_L + k).

Крок 3 - Додавання / перегляд карти

Після встановлення зміненої карти легко додати нові ключі.

  1. Використовуйте xev для пошуку ключових кодів та ключів

  2. протестуйте його, виконавши цю команду для відображення ключа:

    xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
    

    Замініть елементи у кутових дужках (наприклад, <code> <base>тощо) відповідними значеннями.

  3. Резервне копіювання curkeys.mapфайлу.

  4. Відкрийте curkeys.mapрядок та відредагуйте відповідний код клавіш.
  5. Повторно застосуйте наведені нижче команди (перший не потрібен, якщо ви зробили крок 2)

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    

Примітка: 1 : Зміни, зроблені в клавіатурних скороченнях (через, наприклад, System -> Preferences -> Keyboard Shortcuts), впливають на карту модифікатора і, як правило, втрачаються при наступному вході. Тому, будь ласка, уникайте цього.

Примітка: 2 : Я іноді отримую подібні повідомлення про помилки під час використання цього методу. Я не знаю, що це означає, однак, вони, як правило, нешкідливі.

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  118 (X_SetModifierMapping)
Value in failed request:  0x17
Serial number of failed request:  263
Current serial number in output stream:  263

Детальну допомогу для xmodmap можна отримати тут .


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

1
Будь ласка , зверніть увагу, що в Linux Mint 17 Xfce (або , по крайней мере , там), це повинно бути ~/.Xmodmap, ~/.xmodmapігнорується.
збр

2
Не забувайте clearпро ключі, які скидаються відповідно до unix.stackexchange.com/a/4526/2512
Енді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.