====== Ввод нестандартных символов ======
===== Ввод символов с помощью клавиши 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/|Другой подход к модификации раскладки]]