====== Ввод нестандартных символов ====== ===== Ввод символов с помощью клавиши Compose ===== В XWindow пользователю предоставлена замечательная возможность вводить символы, отсутствующие на клавиатуре с помощью клавиши Compose. По умолчанию эта клавиша — правый Alt, но вы можете изменить её с помощью параметра «compose:» раздела **Section "InputDevice"** файла xorg.conf (или в Центре управления KDE - Региональные и специальные возможности - Раскладка клавиатуры - Параметры XKB). К сожалению, в русской раскладке ввод символов, использующих клавиши, которые выдают разные символы на разных раскладках, невозможен. Попробуем исправить эту ситуацию для популярных в России символов типографики. Для этого скачайте файл {{:article:compose_append_ru.txt|compose_append_ru.txt}}. Затем объедините с существующими правилами: ''cat compose_append_ru.txt /usr/share/X11/locale/en_US.UTF-8/Compose >~/.XCompose'' Перезапустите XWindow и можете вводить символы (вместо Compose удерживайте назначенную клавишу): ^ Символ ^ Клавиши ^ Альтернатива ^ | © | o c | O C | | ® | o r | O R | | » | > > | . . | | « | < < | , , | | “ | < " | " < | | ” | > " | " > | | ‰ | % o || | € | E = | = E | | € | C = | = E | | £ | L - | - L | | ¥ | Y = | = Y | | § | s o | o s | | ¤ | x o | o x | | ¶ | P P || | … | ; ; || | ° | o o || ===== Модификация раскладки ===== Краткая инструкция на основе статьи [[http://regolit.com/posts/xkb_unicode|«Типографская раскладка»]]: Сохраните это в файл, например ~/ru_ua_xkb_config: xkb_keymap "rusadv" { xkb_keycodes { include "xfree86" }; xkb_types { include "default" }; xkb_compatibility { include "default" include "xfree86" indicator "Scroll Lock" { modifiers= None; groups=All-group1; }; // Shift to the 3rd group interpret ISO_Last_Group_Lock { action = SetGroup(group=3); }; }; xkb_symbols { include "pc+us+ru(winkeys)" name[Group1] = "US/ASCII"; name[Group2] = "Russian"; name[Group3] = "Polygraphy symbols"; key { [Escape] }; # 1st keyboard row key { [quoteleft, asciitilde], [Cyrillic_io, Cyrillic_IO], [acute, approxeq] }; key { [1, exclam], [1, exclam], [onesuperior, onesuperior] }; key { [2, at], [2, guillemotleft], [quotedbl, twosuperior] }; key { [3, numbersign], [3, guillemotright], [numerosign, threesuperior] }; key { [4, dollar], [4, semicolon], [section, section] }; key { [5, percent], [5, percent], [0x01002030, 0x01002030] }; key { [6, asciicircum], [6, colon] }; key { [7, ampersand], [7, question], [questiondown, ampersand] }; key { [8, asterisk] }; key { [9, parenleft], [9, parenleft], [bracketleft, braceleft] }; key { [0, parenright], [0, parenright], [bracketright, braceright] }; key { [minus, underscore], [minus, underscore], [emdash, hyphen] }; key { [equal, plus], [equal, plus], [notequal, plusminus] }; key { [backslash, bar], [backslash, slash] }; key { [BackSpace] }; ############################# # 2nd keyboard row key { [Tab, ISO_Left_Tab] }; key { [q, Q], [Cyrillic_shorti, Cyrillic_SHORTI], [q, onequarter] }; key { [w, W], [Cyrillic_tse, Cyrillic_TSE] }; key { [e, E], [Cyrillic_u, Cyrillic_U], [EuroSign, oneeighth] }; key { [r, R], [Cyrillic_ka, Cyrillic_KA], [registered, R] }; key { [t, T], [Cyrillic_ie, Cyrillic_IE], [trademark, onethird] }; key { [y, Y], [Cyrillic_en, Cyrillic_EN] }; key { [u, U], [Cyrillic_ghe, Cyrillic_GHE], [Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN] }; key { [i, I], [Cyrillic_sha, Cyrillic_SHA] }; //todo key { [o, O], [Cyrillic_shcha, Cyrillic_SHCHA], [masculine, O] }; key { [p, P], [Cyrillic_ze, Cyrillic_ZE], [acute, doubleacute] }; key { [bracketleft, braceleft], [Cyrillic_ha, Cyrillic_HA] }; key { [bracketright, braceright], [Cyrillic_hardsign, Cyrillic_HARDSIGN], [Ukrainian_yi, Ukrainian_YI] }; ############################# # 3rd keyboard row key { [a, A], [Cyrillic_ef, Cyrillic_EF], [0x1000301, A] }; key { [s, S], [Cyrillic_yeru, Cyrillic_YERU], [Ukrainian_i, Ukrainian_I] }; key { [d, D], [Cyrillic_ve, Cyrillic_VE], [degree, D] }; key { [f, F], [Cyrillic_a, Cyrillic_A], [sterling, F] }; key { [g, G], [Cyrillic_pe, Cyrillic_PE] }; key { [h, H], [Cyrillic_er, Cyrillic_ER], [h, onehalf] }; key { [j, J], [Cyrillic_o, Cyrillic_O], [doublelowquotemark, J] }; key { [k, K], [Cyrillic_el, Cyrillic_EL], [leftdoublequotemark, leftsinglequotemark] }; key { [l, L], [Cyrillic_de, Cyrillic_DE], [rightdoublequotemark, rightsinglequotemark] }; key { [semicolon, colon], [Cyrillic_zhe, Cyrillic_ZHE], [leftsinglequotemark, rightsinglequotemark] }; //todo key { [quoteright, quotedbl], [Cyrillic_e, Cyrillic_E], [Ukrainian_ie, Ukrainian_IE] }; key { [Return] }; ############################# # 4th keyboard row key { [z, Z], [Cyrillic_ya, Cyrillic_YA] }; key { [x, X], [Cyrillic_che, Cyrillic_CHE], [multiply, 0x010022C5] }; key { [c, C], [Cyrillic_es, Cyrillic_ES], [copyright, seconds] }; key { [v, V], [Cyrillic_em, Cyrillic_EM], [minutes, minutes] }; key { [b, B], [Cyrillic_i, Cyrillic_I] }; key { [n, N], [Cyrillic_te, Cyrillic_TE] }; key { [m, M], [Cyrillic_softsign, Cyrillic_SOFTSIGN] }; key { [comma, less], [Cyrillic_be, Cyrillic_BE], [guillemotleft, doublelowquotemark] }; key { [period, greater], [Cyrillic_yu, Cyrillic_YU], [guillemotright, rightdoublequotemark] }; key { [slash, question], [period, comma], [ellipsis, question] }; ############################# # the last keyboard row key { [space, space], [space, space], [nobreakspace, nobreakspace] }; ############################# # arrows keys key { [Left], [Left], [0x1002190, 0x10021D0] }; key { [Up], [Up], [0x1002191, 0x10021D1] }; key { [Right], [Right], [0x1002192, 0x10021D2] }; key { [Down], [Down], [0x1002193, 0x10021D3] }; // Switches: // LShift+RShift, Ctrl+Shift - permanent switch between en and ru(winkeys) // unlike the xorg.conf setting, this one doesnt prevent ctrl+shift+z etc // RAlt - temporary switch to 3rd group key { [Shift_R, ISO_Next_Group], [Shift_R, ISO_Prev_Group] }; key { [Shift_L, ISO_Next_Group], [Shift_L, ISO_Prev_Group] }; key { [ISO_Last_Group_Lock, ISO_Last_Group_Lock], [ISO_Group_Shift, ISO_Group_Shift] }; key { [Control_L, ISO_Next_Group], [Control_L, ISO_Prev_Group] }; key { [Control_R, ISO_Next_Group], [Control_R, ISO_Prev_Group] }; // Some impovements // map CapsLock to LCtrl // key { // [Control_L] // }; }; xkb_geometry { include "pc(pc105)" }; }; // /usr/bin/xkbcomp /path/to/your/home/dir/.xkb_config $DISPLAY Затем сделайте чтобы при каждой загрузке компьютера выполнялась команда /usr/bin/xkbcomp /home/<ИМЯ ПОЛЬЗОВАТЕЛЯ>/ru_ua_xkb_config $DISPLAY Например, можно эту строку поместить в файл ~/xkbcomp.sh, выполните команду chmod a+x ~/xkbcomp,sh в домашней папке (~), затем в папке ~/.kde/Autostart создайте ссылку на приложение (контекстное меню в konqueror), введя в качестве команды ~/xkbcomp.sh. Это приведёт к созданию такого файла (у меня он называется xkbcomp.desktop): [Desktop Entry] Comment= Comment[en_US]= Encoding=UTF-8 Exec='/home/xx/xkbcomp.sh' GenericName= GenericName[en_US]= Icon=exec MimeType= Name= Name[en_US]= Path= StartupNotify=true Terminal=false TerminalOptions= Type=Application X-DCOP-ServiceType= X-KDE-SubstituteUID=false X-KDE-Username= После этого раскладка будет переключаться по ctrl+shift, комбинации клавиш наподобие ctrl+shift+z _будут_ работать, на shift+2, shift+3 будут соответственно « и » (очень помогает если вы привыкли пользоваться «программистскими» ""), другие символы доступны при нажатии правого alt. [[http://ruenhanced.dmitry.fi/|Другой подход к модификации раскладки]]