Установка дополнительного ключа-модификатора для пользовательского макета [dубликат]

Я хочу скопировать раскладку клавиатуры в /usr/share/X11/xkb/symbols/ и изменить ее, а затем создать из нее новый макет.

Как добавить новую раскладку клавиатуры (например, «mylayout»)? [ ! d1]

Обновление # 1:

Файлы, которые я изменил, чтобы добавить новый макет:

/usr/share/X11/xkb/symbols/irwinxp (изначально то же, что и ir): // Iranian keyboard layout //////////////////////////////////////// // Persian layout, // based on // Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards // ISIRI 9147 – 1st Edition // Institute of Standards and Industrial Research of Iran // http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 // http://behnam.esfahbod.info/standards/isiri-keyboard-9147.pdf // // Author: Behnam Esfahbod <behnam@esfahbod.info> // default partial alphanumeric_keys xkb_symbols "pes" { name[Group1]= "Persian"; include "ir(pes_part_basic)" include "ir(pes_part_ext)" include "nbsp(zwnj2nb3nnb4)" include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "pes_keypad" { name[Group1]= "Persian (with Persian Keypad)"; include "ir(pes_part_basic)" include "ir(pes_part_keypad)" include "nbsp(zwnj2nb3nnb4)" include "level3(ralt_switch)" }; partial hidden alphanumeric_keys xkb_symbols "pes_part_basic" { // Persian digits key <AE01> { [ Farsi_1, exclam, grave ] }; key <AE02> { [ Farsi_2, 0x100066c, at ] }; key <AE03> { [ Farsi_3, 0x100066b, numbersign ] }; key <AE04> { [ Farsi_4, 0x100fdfc, dollar ] }; key <AE05> { [ Farsi_5, 0x100066a, percent ] }; key <AE06> { [ Farsi_6, multiply, asciicircum ] }; key <AE07> { [ Farsi_7, Arabic_comma, ampersand ] }; key <AE08> { [ Farsi_8, asterisk, enfilledcircbullet ] }; key <AE09> { [ Farsi_9, parenright, 0x100200e ] }; key <AE10> { [ Farsi_0, parenleft, 0x100200f ] }; // Persian letters and symbols key <AD01> { [ Arabic_dad, Arabic_fathatan, degree ] }; // 2: Arabic_sukun key <AD02> { [ Arabic_sad, Arabic_dammatan, VoidSymbol ] }; // 2: Arabic_dammatan key <AD03> { [ Arabic_theh, Arabic_kasratan, 0x13a4 ] }; // 2: Arabic_kasratan key <AD04> { [ Arabic_qaf, Arabic_fathatan, VoidSymbol ] }; key <AD05> { [ Arabic_feh, Arabic_comma, VoidSymbol ] }; // 2: Arabic_damma key <AD06> { [ Arabic_ghain, Arabic_semicolon, VoidSymbol ] }; // 2: Arabic_kasra key <AD07> { [ Arabic_ain, Arabic_fatha, VoidSymbol ] }; key <AD08> { [ Arabic_heh, Arabic_hamza_above, 0x100202d ] }; // 2: Arabic_shadda key <AD09> { [ Arabic_khah, bracketright, 0x100202e ] }; key <AD10> { [ Arabic_hah, bracketleft, 0x100202c ] }; key <AD11> { [ Arabic_jeem, braceright, 0x100202a ] }; key <AD12> { [ Arabic_tcheh, braceleft, 0x100202b ] }; key <AC01> { [ Arabic_sheen, Arabic_fatha, VoidSymbol ] }; // 2: Arabic_hamzaonwaw key <AC02> { [ Arabic_seen, Arabic_damma, VoidSymbol ] }; // 2: Arabic_hamzaonyeh key <AC03> { [ Farsi_yeh, Arabic_kasra, Arabic_alefmaksura ] }; // 2: Arabic_yeh key <AC04> { [ Arabic_beh, Arabic_shadda, VoidSymbol ] }; // 1: Arabic_hamzaunderalef key <AC05> { [ Arabic_lam, 0x10006c0, VoidSymbol ] };// 2: Arabic_hamzaonalef key <AC06> { [ Arabic_alef, Arabic_maddaonalef, 0x1000671 ] }; key <AC07> { [ Arabic_teh, Arabic_tehmarbuta, VoidSymbol ] }; key <AC08> { [ Arabic_noon, guillemotright, 0x100fd3e ] }; key <AC09> { [ Arabic_meem, guillemotleft, 0x100fd3f ] }; key <AC10> { [ Arabic_keheh, colon, semicolon ] }; key <AC11> { [ Arabic_gaf, quotedbl, quotedbl ] }; // 2: Arabic_semicolon key <AB01> { [ Arabic_zah, Arabic_kaf, VoidSymbol ] }; key <AB02> { [ Arabic_tah, 0x1000653, VoidSymbol ] }; key <AB03> { [ Arabic_zain, Arabic_jeh, VoidSymbol ] }; key <AB04> { [ Arabic_ra, Arabic_hamzaonwaw ,0x1000656 ] }; // 2: Arabic_superscript_alef ٰ key <AB05> { [ Arabic_thal, 0x100200c, 0x100200d ] }; key <AB06> { [ Arabic_dal, Arabic_hamza_above, Arabic_hamza_below ] }; key <AB07> { [ Arabic_hamzaonyeh, Arabic_hamza, ellipsis ] }; // 1: Arabic_peh key <AB08> { [ Arabic_waw, greater, comma ] }; key <AB09> { [ period, less, apostrophe ] }; key <AB10> { [ slash, Arabic_question_mark, question ] }; key <TLDE> { [ 0x100200d, division, asciitilde ] }; key <AE11> { [ minus, Arabic_tatweel, underscore ] }; key <AE12> { [ equal, plus, 0x1002212 ] }; key <BKSL> { [ Arabic_peh, bar, 0x1002010 ] }; // 1: backslash }; partial hidden alphanumeric_keys xkb_symbols "pes_part_ext" { // Persian and ASCII digits key <AE01> { [ 0x10006f1, exclam, grave, 1 ] }; key <AE02> { [ 0x10006f2, 0x100066c, at, 2 ] }; key <AE03> { [ 0x10006f3, 0x100066b, numbersign, 3 ] }; key <AE04> { [ 0x10006f4, 0x100fdfc, dollar, 4 ] }; key <AE05> { [ 0x10006f5, 0x100066a, percent, 5 ] }; key <AE06> { [ 0x10006f6, multiply, asciicircum, 6 ] }; key <AE07> { [ 0x10006f7, Arabic_comma, ampersand, 7 ] }; key <AE08> { [ 0x10006f8, asterisk, enfilledcircbullet, 8 ] }; key <AE09> { [ 0x10006f9, parenright, 0x100200e, 9 ] }; key <AE10> { [ 0x10006f0, parenleft, 0x100200f, 0 ] }; }; partial hidden alphanumeric_keys xkb_symbols "pes_part_keypad" { // Persian digits and Mathematical operators key <KPDV> { [ division, XF86_Ungrab ] }; key <KPMU> { [ multiply, XF86_ClearGrab ] }; key <KPSU> { [ 0x1002212, XF86_Prev_VMode ] }; key <KPAD> { [ plus, XF86_Next_VMode ] }; key <KPEN> { [ KP_Enter ] }; key <KPEQ> { [ equal ] }; key <KP7> { [ KP_Home, 0x10006f7 ] }; key <KP8> { [ KP_Up, 0x10006f8 ] }; key <KP9> { [ KP_Prior, 0x10006f9 ] }; key <KP4> { [ KP_Left, 0x10006f4 ] }; key <KP5> { [ KP_Begin, 0x10006f5 ] }; key <KP6> { [ KP_Right, 0x10006f6 ] }; key <KP1> { [ KP_End, 0x10006f1 ] }; key <KP2> { [ KP_Down, 0x10006f2 ] }; key <KP3> { [ KP_Next, 0x10006f3 ] }; key <KP0> { [ KP_Insert, 0x10006f0 ] }; key <KPDL> { [ KP_Delete, 0x100066b ] }; }; //////////////////////////////////////// // Kurdish Layout partial alphanumeric_keys xkb_symbols "ku" { include "tr(ku)" name[Group1]= "Kurdish (Iran, Latin Q)"; }; partial alphanumeric_keys xkb_symbols "ku_f" { include "tr(ku_f)" name[Group1]= "Kurdish (Iran, F)"; }; partial alphanumeric_keys xkb_symbols "ku_alt" { include "tr(ku_alt)" name[Group1]= "Kurdish (Iran, Latin Alt-Q)"; }; //////////////////////////////////////// // Kurdish Soranî Bahdînî (Arabic) keyboard layout, // based on the Kurdî Soranî Bahdînî keyboard from KurdITGroup // which is based on National Iranian Keyboard Standard (ISIRI 2901:1994), // with additions. // // Copyright (C) 2006 Erdal Ronahî, published under the GPL v2 // // Special copyright note: author explicitly permitted to license this // layout under MIT/X11 license, for details see // https://bugs.freedesktop.org/show_bug.cgi?id=9541 // // Author: Erdal Ronahî <erdal.ronahi@gmail.com> // // Kurdish Arabic-Latin Layout for Soranî partial alphanumeric_keys xkb_symbols "ku_ara" { name[Group1]= "Kurdish (Iran, Arabic-Latin)"; // Other 3-Level symbols key <TLDE> { [ 0x100200d, division, asciitilde ] }; key <BKSL> { [ backslash, bar, ccedilla, Ccedilla ] }; // Digits key <AE01> { [ 1, exclam, 0x10006f1, grave ] }; key <AE02> { [ 2, at, 0x10006f2, at ] }; key <AE03> { [ 3, numbersign, 0x10006f3, 0x100066b ] }; key <AE04> { [ 4, dollar, 0x10006f4, 0x100fdfc ] }; key <AE05> { [ 5, percent, 0x10006f5, 0x100066a ] }; key <AE06> { [ 6, asciicircum, 0x10006f6, multiply ] }; key <AE07> { [ 7, ampersand, 0x10006f7, Arabic_comma ] }; key <AE08> { [ 8, asterisk, 0x10006f8, enfilledcircbullet ] }; key <AE09> { [ 9, parenright, 0x10006f9, 0x100200e ] }; key <AE10> { [ 0, parenleft, 0x10006f0, 0x100200f ] }; key <AE11> { [ minus, Arabic_tatweel, underscore ] }; key <AE12> { [ equal, plus, 0x1002212 ] }; key <AD01> { [ Arabic_qaf, X, q, Q ] }; key <AD02> { [ Arabic_waw, X, w, W ] }; key <AD03> { [ 0x10006d5, Arabic_heh, e, E ] }; key <AD04> { [ Arabic_ra , 0x1000695, r, R ] }; key <AD05> { [ Arabic_teh, Arabic_tah, t, T ] }; key <AD06> { [ 0x10006cc, 0x10006ce, y, Y ] }; key <AD07> { [ Arabic_hamzaonyeh, Arabic_hamza, u, U ] }; key <AD08> { [ Arabic_hah, Arabic_ain, i, I ] }; key <AD09> { [ 0x10006c6, Arabic_hamzaonwaw, o, O ] }; key <AD10> { [ 0x100067e, Arabic_theh, p, P ] }; key <AD11> { [ bracketright, braceright, ucircumflex, Ucircumflex ] }; key <AD12> { [ bracketleft, braceleft, scedilla, Scedilla ] }; key <AC01> { [ Arabic_alef, Arabic_maddaonalef, a, A ] }; key <AC02> { [ Arabic_seen, Arabic_sheen, s, S ] }; key <AC03> { [ Arabic_dal, Arabic_thal, d, D ] }; key <AC04> { [ Arabic_feh, Arabic_hamzaunderalef, f, F ] }; key <AC05> { [ 0x10006af, Arabic_ghain, g, G ] }; key <AC06> { [ Arabic_heh, 0x100200c, h, H ] }; key <AC07> { [ 0x1000698, Arabic_hamzaonalef, j, J ] }; key <AC08> { [ 0x10006a9, Arabic_kaf, k, K ] }; key <AC09> { [ Arabic_lam, 0x10006b5, l, L ] }; key <AC10> { [ Arabic_semicolon, colon, ecircumflex, Ecircumflex ] }; key <AC11> { [ apostrophe, quotedbl, icircumflex, Icircumflex ] }; key <AB01> { [ Arabic_zain, Arabic_dad, z, Z ] }; key <AB02> { [ Arabic_khah, Arabic_sad, x, X ] }; key <AB03> { [ Arabic_jeem, 0x1000686, c, C ] }; key <AB04> { [ 0x10006a4, Arabic_zah, v, V ] }; key <AB05> { [ Arabic_beh, 0x1000649, b, B ] }; key <AB06> { [ Arabic_noon, Arabic_tehmarbuta, n, N ] }; key <AB07> { [ Arabic_meem, Arabic_tatweel, m, M ] }; key <AB08> { [ Arabic_comma, greater, comma ] }; key <AB09> { [ period, less, apostrophe ] }; key <AB10> { [ slash, Arabic_question_mark, question ] }; include "nbsp(zwnj2nb3)" include "level3(ralt_switch)" }; // EXTRAS: ///////////////////////////////////////////////////////////////////////////////// // // Generated keyboard layout file with the Keyboard Layout Editor. // For more about the software, see http://code.google.com/p/keyboardlayouteditor // // Version 0.2, fixed AD09. // // Layout by Ernst Tremel, http://ubuntuforums.org/showpost.php?p=9365469&postcount=32 // Creation of this file by Simos Xenitellis. partial alphanumeric_keys xkb_symbols "ave" { name[Group1] = "Avestan"; key <AB01> { [ U10B30, U10B32 ] }; //
14
задан 16 June 2014 в 11:03

2 ответа

Создание пользовательской раскладки клавиатуры

Например, я ищу, чтобы добавить новый измененный английский (международные AltGr мертвые клавиши). Раскладка US с заменой r, R & amp; [F13], [F14]. Я назову его XY swapped: RT English (международные AltGr мертвые ключи).

Создать новый файл символов: sudo nano /usr/share/X11/xkb/symbols/xy default partial alphanumeric_keys xkb_symbols "basic" { name[Group1]= "XY swapped:RT English (international AltGr dead keys)"; include "us(altgr-intl)" // my custom changes: key <AD04> { [ t, T, ediaeresis, Ediaeresis ] }; key <AD05> { [ r, R, thorn, THORN ] }; include "level3(ralt_switch)" }; include "us(altgr-intl)" означает, что он наследует все ключи из этого макета только для переопределения ключа. Вы можете использовать редактор макетов клавиатуры, который представляет собой графическую программу, которая помогает создавать или редактировать раскладки клавиатуры XKB. Благодаря @Glutanimate Добавьте новое объявление макета в раздел /usr/share/X11/xkb/rules/evdev.xml (copy & amp; modify us). Ссылка. Создайте новый вариант раскладки клавиатуры в настройках? sudo gedit /usr/share/X11/xkb/rules/evdev.xml ... <layout> <configItem> <name>xy</name> <shortDescription>en</shortDescription> <description>XY swapped:RT English (international AltGr dead keys)</description> <languageList> <iso639Id>eng</iso639Id> <iso639Id>fra</iso639Id> <iso639Id>ger</iso639Id> </languageList> </configItem> <variantList> </variantList> </layout> ... Удалить кеш xkb. sudo rm /var/lib/xkb/*.xkm Примечания. Чтобы загрузить изменения в меню макетов, просто закройте настройки gnome-keyboard и перезагрузите, перезагрузка диспетчера окон не требуется. В версии Ubuntu (13.10) есть изменения, из-за которых кеш настроек клавиатуры не обновляется после изменения файлов в каталоге «/ usr / share / X11 / xkb / symbols». Похоже, изменения просто не применяются. Чтобы принудительно обновить кеш, нужно удалить файлы * .xkm из «/ var / lib / xkb». Ссылка: Howto: Пользовательские определения раскладки клавиатуры или sudo dpkg-reconfigure xkb-data Справка: Почему 13.10 нарушили мою собственную раскладку клавиатуры?

Ответ, чтобы исправить модификации OP

(Обновление № 1 неправильного родительского макета) Вы изменили xkb_symbols "pes_part_basic", который находится в файле irwinxp: это нормально. но xkb_symbols "pes" в файле irwinxp все еще: include "ir(pes_part_basic)" , который должен быть: include "irwinxp(pes_part_basic)" (пользовательский значок обновления №2) Если <shortDescription>en</shortDescription> изменен на <shortDescription>xy</shortDescription>. Таким образом, новый макет будет отличаться от En, и он появится как Xy. Скорее всего, в ubuntu-mono не будет иконки. Затем индикатор будет динамически генерировать новый, который может не соответствовать текущей теме. Скопируйте любые значки макета для темных / светлых монофонических тем: sudo cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo cp /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg SVG-файлы - это всего лишь XML. Откройте затем, чтобы изменить и изменить текстовое значение с En на Xy: sudo nano /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo nano /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg Пример: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="22" xmlns="http://www.w3.org/2000/svg" version="1.1" height="22"> <defs> <mask id="m"> <rect y="0" x="0" style="fill:#fff" height="22" width="22"/> <text y="15.5" x="5" style="font-size:12;font-family:Ubuntu;font-weight:500;fill:black">Xy</text> </mask> </defs> <rect style="fill:#dfdbd2" mask="url(#m)" rx="2" height="20" width="20" y="1" x="1"/> </svg> Обновить кеш тем: sudo update-icon-caches /usr/share/icons/ubuntu-mono-*/ Выйти / войти

Другие полезные ссылки

(Обновление № 1 неправильного расположения макета) Вы изменили xkb_symbols "pes_part_basic", который находится в файле irwinxp: это нормально. но xkb_symbols "pes" в файле irwinxp все еще: include "ir(pes_part_basic)" , который должен быть: include "irwinxp(pes_part_basic)" Создание клавиатуры XKB (благодаря @Glutanimate)
23
ответ дан 17 July 2018 в 17:24

Создание пользовательской раскладки клавиатуры

Например, я ищу, чтобы добавить новый измененный английский (международные AltGr мертвые клавиши). Раскладка US с заменой r, R & amp; [F13], [F14]. Я назову его XY swapped: RT English (международные AltGr мертвые ключи).

Создать новый файл символов: sudo nano /usr/share/X11/xkb/symbols/xy default partial alphanumeric_keys xkb_symbols "basic" { name[Group1]= "XY swapped:RT English (international AltGr dead keys)"; include "us(altgr-intl)" // my custom changes: key <AD04> { [ t, T, ediaeresis, Ediaeresis ] }; key <AD05> { [ r, R, thorn, THORN ] }; include "level3(ralt_switch)" }; include "us(altgr-intl)" означает, что он наследует все ключи из этого макета только для переопределения ключа. Вы можете использовать редактор макетов клавиатуры, который представляет собой графическую программу, которая помогает создавать или редактировать раскладки клавиатуры XKB. Благодаря @Glutanimate Добавьте новое объявление макета в раздел /usr/share/X11/xkb/rules/evdev.xml (copy & amp; modify us). Ссылка. Создайте новый вариант раскладки клавиатуры в настройках? sudo gedit /usr/share/X11/xkb/rules/evdev.xml ... <layout> <configItem> <name>xy</name> <shortDescription>en</shortDescription> <description>XY swapped:RT English (international AltGr dead keys)</description> <languageList> <iso639Id>eng</iso639Id> <iso639Id>fra</iso639Id> <iso639Id>ger</iso639Id> </languageList> </configItem> <variantList> </variantList> </layout> ... Удалить кеш xkb. sudo rm /var/lib/xkb/*.xkm Примечания. Чтобы загрузить изменения в меню макетов, просто закройте настройки gnome-keyboard и перезагрузите, перезагрузка диспетчера окон не требуется. В версии Ubuntu (13.10) есть изменения, из-за которых кеш настроек клавиатуры не обновляется после изменения файлов в каталоге «/ usr / share / X11 / xkb / symbols». Похоже, изменения просто не применяются. Чтобы принудительно обновить кеш, нужно удалить файлы * .xkm из «/ var / lib / xkb». Ссылка: Howto: Пользовательские определения раскладки клавиатуры или sudo dpkg-reconfigure xkb-data Справка: Почему 13.10 нарушили мою собственную раскладку клавиатуры?

Ответ, чтобы исправить модификации OP

(Обновление № 1 неправильного родительского макета) Вы изменили xkb_symbols "pes_part_basic", который находится в файле irwinxp: это нормально. но xkb_symbols "pes" в файле irwinxp все еще: include "ir(pes_part_basic)" , который должен быть: include "irwinxp(pes_part_basic)" (пользовательский значок обновления №2) Если <shortDescription>en</shortDescription> изменен на <shortDescription>xy</shortDescription>. Таким образом, новый макет будет отличаться от En, и он появится как Xy. Скорее всего, в ubuntu-mono не будет иконки. Затем индикатор будет динамически генерировать новый, который может не соответствовать текущей теме. Скопируйте любые значки макета для темных / светлых монофонических тем: sudo cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo cp /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg SVG-файлы - это всего лишь XML. Откройте затем, чтобы изменить и изменить текстовое значение с En на Xy: sudo nano /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo nano /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg Пример: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="22" xmlns="http://www.w3.org/2000/svg" version="1.1" height="22"> <defs> <mask id="m"> <rect y="0" x="0" style="fill:#fff" height="22" width="22"/> <text y="15.5" x="5" style="font-size:12;font-family:Ubuntu;font-weight:500;fill:black">Xy</text> </mask> </defs> <rect style="fill:#dfdbd2" mask="url(#m)" rx="2" height="20" width="20" y="1" x="1"/> </svg> Обновить кеш тем: sudo update-icon-caches /usr/share/icons/ubuntu-mono-*/ Выйти / войти

Другие полезные ссылки

(Обновление № 1 неправильного расположения макета) Вы изменили xkb_symbols "pes_part_basic", который находится в файле irwinxp: это нормально. но xkb_symbols "pes" в файле irwinxp все еще: include "ir(pes_part_basic)" , который должен быть: include "irwinxp(pes_part_basic)" Создание клавиатуры XKB (благодаря @Glutanimate)
23
ответ дан 23 July 2018 в 18:13

Другие вопросы по тегам:

Похожие вопросы: