Pull to refresh

Аккуратная настройка клавиатуры

Reading time 4 min
Views 30K
Вокруг нас появляется все больше людей, которые знают, чем дефис отличается от минуса, минус от тире, а знак дюйма от кавычек. Что там говорить, мне вчера секретарша прислала письмо, оформленное типографически точно. Для того, чтобы немного приблизиться к совершенству, не обязательно отягощать себя открытым окном «дополнительные символы» и унылым копипастом оттуда.
Большинство проблем в современных оконных менеджерах решается штатными средствами. Но что делать тем, кто хочет иметь возможность в одно нажатие набирать какие-нибудь экзотические символы, наподобие знака бесконечности (∞), интеграла (∫) или карточных мастей ()?
Под катом я расскажу и как настроить клавиатуру для правильной типографики («—») штатными средствами, и как расширить возможности до быстрого набора любых символов.

Штатные средства


Штатные средства предоставляют «раскладку Бирмана» (по ссылке можно посмотреть, какие возможности появятся после ее включения). Дополнительные символы вводятся путем одновременного нажатия правого Alt (т. н. AltGr) и соответствующей клавиши на клавиатуре. Поверьте, привыкнуть к такому способу можно за неделю — а наслаждаться потом всю жизнь.
NB! В обоих оконных менеджерах необходимо проверить, что клавиша третьего уровня активна и назначена.

KDE


Правый щелчок мышью на аплете раскладок клавиатуры и переход на вкладку «Дополнительно» приведет нас к вот такому выбору:
Настройка клавиатуры для KDE

Здесь нужно «Включить дополнительные типографские символы» — и все готово. Можно тестировать.

GNOME


Правый щелчок мышью на аплете раскладок клавиатуры, переход на вкладку «Раскладки» и нажатие на кнопку «Параметры раскладки…» приведет нас к вот такому выбору:
Настройка клавиатуры для GNOME

Здесь нужно «Включить дополнительные типографские символы» — и все готово. Можно тестировать.

Внештатная тонкая настройка


Все, что выше — написано так, для проформы. Я надеюсь, что в 2011 году про это все и без меня знают. Наша же цель — настроить клавиатуру под себя, максимально удобно, с теми символами, которые требуются нам каждый день.
Есть два способа достичь нужного эффекта: один быстрый, другой — правильный. Быстрый заключается в прямом редактировании файла раскладки с дополнительными символами (/usr/share/X11/xkb/symbols/typo). Два года назад (с тех пор я не пробовал) измененный файл жил строго до следующего обновления иксов. Возможно кому-то будет удобно изменить этот файл, сделать резервную копию и перезаписывать его каждый раз, когда прикатится новая «системная» версия, не знаю. Но я выбираю более изящный способ.
$ sudo cp /usr/share/X11/xkb/symbols/typo /usr/share/X11/xkb/symbols/mytypo
$ sudo vi /usr/share/X11/xkb/symbols/mytypo

О формате этого файла можно почитать в сети, но он и так интуитивно понятен:
// $XKeyboardConfig$

// typographic keyboard
// Sergei Stolyarov <sergei@regolit.com>
//
// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
//
// Based on the layout proposed by Ilya Birman, 
// http://ilyabirman.ru/typography-layout/
//

// default layout
default partial
xkb_symbols "base" {
// 1st keyboard row 
    key <TLDE> { [NoSymbol, NoSymbol, NoSymbol, approxeq] };
    key <AE01> { [NoSymbol, NoSymbol, onesuperior] };
    key <AE02> { [NoSymbol, NoSymbol, twosuperior, onehalf] };
    key <AE03> { [NoSymbol, NoSymbol, threesuperior, onethird] };
    key <AE04> { [NoSymbol, NoSymbol, dollar, onequarter] };
    key <AE05> { [NoSymbol, NoSymbol, U2030] };
    key <AE07> { [NoSymbol, NoSymbol, ampersand] };
    key <AE08> { [NoSymbol, NoSymbol, enfilledcircbullet, oneeighth] };
    key <AE11> { [NoSymbol, NoSymbol, emdash, hyphen] };
    key <AE12> { [NoSymbol, NoSymbol, notequal, plusminus] };

// 2nd keyboard row 
// Далее еще много таких же строчек
… 

Нас интересует третий уровень — это третье (при зажатой клавише AltGr) и четвертое (при зажатых клавишах Shift и AltGr) значения в каждой строчке. NoSymbol в первых двух столбцах трогать не нужно! — это дополнительная раскладка, влияющая только на третий уровень. Давайте добавим какой-нибудь символ на комбинацию клавиш Shift+AltGr+1 (в нижнем регистре там сейчас «onesuperior» — мнемоника для «в степени 1» — «¹», а верхний как раз свободен). Пусть это будет знак приблизительного равенства (≈). Мнемоники, к счастью, запоминать не нужно: вместо них можно просто вводить числовые значения символов в формате «0x100XXXX», где XXXX — юникодное значение в шестнадцатеричном системе счисления. Значение «≈» = 2248; просто заменяем строку:
    key <AE01> { [NoSymbol, NoSymbol, onesuperior] };

на:
    key <AE01> { [NoSymbol, NoSymbol, onesuperior, 0x1002248] };

Теперь настало время рассказать оконному менеджеру о нашей новой раскладке.

KDE


Настройки переключателя клавиатуры хранятся в файле ~/.kde/share/config/kxkbrc. Открываем его в редакторе и (сюрприз) заменяем typo на mytypo:
[Layout]
DisplayNames=,
IndicatorOnly=false
LayoutList=us,ru
LayoutLoopCount=-1
Model=pc104                                                      ⇓⇓
Options=grp:alt_shift_toggle,grp_led:scroll,lv3:ralt_switch,misc:mytypo,numpad:microsoft,altwin:menu,keypad:oss
ResetOldOptions=true                                             ⇑⇑
ShowFlag=true
ShowLayoutIndicator=true
ShowSingle=true
SwitchMode=WinClass
Use=true

GNOME


Настройки переключателя клавиатуры хранятся в файле ~/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml. Открываем его в редакторе и (сюрприз) заменяем typo на mytypo:
<?xml version="1.0"?>
<gconf>
    <entry name="options" mtime="1301471398" type="list" ltype="string">
        <li type="string">
            <stringvalue>grp    grp:alt_shift_toggle</stringvalue>
        </li>
        <li type="string">
            <stringvalue>lv3    lv3:ralt_switch</stringvalue>
        </li>
        <li type="string">
            <stringvalue>keypad keypad:future</stringvalue>
        </li>
        <li type="string">
            <stringvalue>grp_led    grp_led:scroll</stringvalue>
        </li>
        <li type="string">
            <stringvalue>nbsp   nbsp:level3</stringvalue>
        </li>
        <li type="string">
            <stringvalue>compat numpad:microsoft</stringvalue>
        </li>
        <li type="string">           ⇓⇓
            <stringvalue>compat misc:mytypo</stringvalue>
        </li>                        ⇑⇑
    </entry>
    <entry name="layouts" mtime="1301471472" type="list" ltype="string">
        <li type="string">
            <stringvalue>ru</stringvalue>
        </li>
        <li type="string">
            <stringvalue>us</stringvalue>
        </li>
    </entry>
</gconf>

Осталось перещелкнуть раскладку туда-сюда — и можно пользоваться (на некоторых системах, я не выявил закономерность, нужно перезапустить иксы).
Приятного набора!
Tags:
Hubs:
+64
Comments 93
Comments Comments 93

Articles