Долгое время в текстах, набранных на компьютере, было довольно сложно использовать нормальную типографику. Например «кавычки», тире, ударения, различные математические символы и т.п. К этому уже довольно привыкли, и такое считается нормальным. Однако с появлением юникода использовать такие символы стало возможно, а, так как большинство ОС и программ юникод поддерживают, и вполне нормально.
Ввод таких символов сопряжен с некоторыми трудностями: их ведь обычно нет на клавиатуре. В популярной операционке от одной известной маленькой и мягкой компании способов довольно не много:
Исходя из неудобности и сложности всех предложенных решений пользователи виндоузов обычно даже не задумываются об их использовании (ну естественно не считая различные автозамены). И альтернатив у них на самом деле практически нет. А в линуксе (да и вообще в X11) есть более удобное средство, о котором я и хочу рассказать. Заключается оно в использовании compose последовательностей. Например для ввода открывающей кавычки-елочки достаточно нажать «compose», «<», «<» — 3 клавиши, причем последовательно, зажимать какую-либо не нужно, благодаря чему можно вводить символы даже одной рукой. Такие последовательности легко запоминаются мнемонически, а добавление новых элементарно.
Специальной кнопки compose на типичной клавиатуре нет, но ее можно назначить через настройки раскладки. Я использую в этой роли правую клавишу win.
Для такого набора следует использовать XIM (X Input Method), переключиться в который можно через контекстное меню поля ввода, или воспользовавшись скриптом im-switch. Вообще метод ввода по умолчанию можно указывать в переменных окружения GTK_IM_MODULE и QT_IM_MODULE для gtk и qt программ соответственно. Для удобства пользователи KDE могут создать файл «~/.kde/env/xim.sh» (с правами на исполнение конечно) следующего содержания:
#!/bin/sh export GTK_IM_MODULE=xim export QT_IM_MODULE=xim
По умолчанию используется системная таблица последовательностей, но если создать в домашнем каталоге файл «.XCompose», то будет использоваться он. В начале своего файла рекомендуется написать строку «include "/usr/share/X11/locale/en_US.UTF-8/Compose"» для включения системной таблицы. Уже имеющиеся в ней последовательности можно переназначать.
Могу порекомендовать к использованию мой собственный файл последовательностей, которым я с удовольствием пользуюсь: http://ololo.cc/files/XCompose. Напоминаю, что имя файла должно начинаться с точки, поэтому не забудьте его переименовать. Он базируется на файле из этой статьи: http://sovety.blogspot.com/2008/02/compose.html и отличается лишь дополнительными последовательностями. Рекомендую, если вы хотите разместить этот файл на своем ресурсе, ссылку на мой все-таки оставить: я регулярно добавляю туда дополнительные последовательности. Также можете почитать ту статью для получения дополнительной информации о композинге.
Список (не полный) стандартных последовательностей можно посмотреть тут: http://hermit.org/Linux/ComposeKeys.html. Краткое описание дополнительных последовательностей (первоначальное нажатие кнопки compose я опускаю, клавиша «пробел» обозначена символом «␣», для комбинирующихся символов представлено их воздействие на символ «□». Также включены стандартные комбинации для набора, если таковые имеются):
Последовательность | Код получающегося символа | Результат | Примечание |
«.-», «.␣», «.:», «..» | U+2026 | … | Многоточие |
«?!» | U+2048 | ⁈ | |
«z␣» | U+2060 | | Word Joiner (неразрывный пробел нулевой ширины) |
«Z␣» | U+FEFF | | Zero width no-break space (неразрывный пробел нулевой ширины, byte-order mark) |
«_␣», «␣_» | U+2423 | ␣ | Графическое изображение, принятое для пробела. |
«m-», «-.» | U+2212 | − | Минус |
«-д» | U+2010 | ‐ | Дефис |
«-ф» | U+2012 | ‒ | Figure dash, цифровая черточка |
«эм» | U+2032 | ′ | Угловая минута |
«эс» | U+2033 | ″ | Угловая секунда |
«эа», «ЭЭ» | U+2019 | ’ | Апостроф |
«''», «ээ» | U+0301 | □́ | Комбинирующийся акут (ударение) |
«vv» | U+20D7 | □⃗⃗ | Комбинирующийся знак вектора |
«zz», «я» | U+0336 | □̶ | Комбинирующееся зачеркивание |
«``» | U+0300 | □̀ | Комбинирующийся гравис |
«бб» | U+201E | „ | Открывающая кавычка-лапка |
«юю», «ёё» | U+201C | “ | Закрывающая кавычка-лапка |
«//», «ББ», «<<» | U+00AB | « | |
«||», «ЮЮ», «>>» | U+00BB | » | |
«Ь-» | U+0462 | Ѣ | Ять прописная (первый символ последовательности — прописной мягкий знак) |
«ь-» | U+0463 | ѣ | Ять строчная (первый символ последовательности — строчный мягкий знак) |
«О-» | U+0472 | Ѳ | Фита прописная (первый символ последовательности — прописная русская О) |
«о-» | U+0473 | ѳ | Фита строчная (первый символ последовательности — строчная русская О) |
«rr» | U+221A | √ | Корень квадратный |
«r3» | U+221B | ∛ | Корень кубический |
«/8» | U+221E | ∞ | Бесконечность |
«mA» | U+2200 | ∀ | «Для любого» |
«mE» | U+2203 | ∃ | «Существует» |
«mi» | U+220A | ∊ | «принадлежит», «элемент множества» |
«md» | U+2202 | ∂ | Частичный дифференциал |
«mD» | U+2206 | ∆ | Инкремент, оператор Лапласа, лапласиан |
«mS» | U+2211 | ∑ | Сумма |
«mI» | U+222B | ∫ | Интеграл |
«^-» | U+207B | ⁻ | Надстрочный минус |
«~=», «=~» | U+2248 | ≈ | Примерно равно |
«__» | U+023E | ‾ | Макрон, черта сверху |
«=/», «/=» | U+2060 | ≠ | Не равно |
«=-», «-=» | U+2061 | ≡ | Тождественно равно |
«&a», «&A» | U+03B1, U+0391 | α, Α | Греческая альфа (строчная, прописная) |
«&b», «&B» | U+03B2, U+0392 | β, Β | Греческая бета (строчная, прописная) |
«&g», «&G» | U+03B3, U+0393 | γ, Γ | Греческая гамма (строчная, прописная) |
«&d», «&D» | U+03B4, U+0394 | δ, Δ | Греческая дельта (строчная, прописная) |
«&e», «&E» | U+03B5, U+0395 | ε, Ε | Греческий эпсилон (строчный, прописной) |
«&z», «&Z» | U+03B6, U+0396 | ζ, Ζ | Греческая дзета/зита (строчная, прописная) |
«&h», «&H» | U+03B7, U+0397 | η, Η | Греческая эта/ита (строчная, прописная) |
«&q», «&Q» | U+03B8, U+0398 | θ, Θ | Греческая тэта/фита (строчная, прописная) |
«&i», «&I» | U+03B9, U+0399 | ι, Ι | Греческая йота (строчная, прописная) |
«&k», «&K» | U+03BA, U+039A | κ, Κ | Греческая каппа (строчная, прописная) |
«&l», «&L» | U+03BB, U+039B | λ, Λ | Греческая лямбда/лямда (строчная, прописная) |
«&m», «&M» | U+03BC, U+039C | μ, Μ | Греческая мю/ми (строчная, прописная) |
«&n», «&N» | U+03BD, U+039D | ν, Ν | Греческая ню/ни (строчная, прописная) |
«&x», «&X» | U+03BE, U+039E | ξ, Ξ | Греческая кси (строчная, прописная) |
«&o», «&O» | U+03BF, U+039F | ο, Ο | Греческий омикрон (строчный, прописной) |
«&p», «&P» | U+03C0, U+03A0 | π, Π | Греческая пи (строчная, прописная) |
«&r», «&R» | U+03C1, U+03A1 | ρ, Ρ | Греческая ро (строчная, прописная) |
«&s», «&S» | U+03C2, U+03A2 | σ, Σ | Греческая сигма (строчная, прописная) |
«&t», «&T» | U+03C3, U+03A3 | τ, Τ | Греческая тау/таф (строчная, прописная) |
«&u», «&U» | U+03C4, U+03A4 | υ, Υ | Греческий ипсилон (строчный, прописной) |
«&f», «&F» | U+03C5, U+03A5 | φ, Φ | Греческая фи (строчная, прописная) |
«&c», «&C» | U+03C6, U+03A6 | χ, Χ | Греческая хи (строчная, прописная) |
«&y», «&Y» | U+03C7, U+03A7 | ψ, Ψ | Греческая пси (строчная, прописная) |
«&w», «&W» | U+03C8, U+03A8 | ω, Ω | Греческая омега (строчная, прописная) |
«:)», «=)» | U+263A, U+263B | ☺, ☻ | Смайлики |
«[␣]», «[v]», «[x]» | U+2610, U+2611, U+2612 | ☐, ☑, ☒ | Квадратики |
«**» | U+2605 | ★ | Звездочки |
«*0», «st» | U+2606 | ☆ | |
«tt», «kb», «nn» | U+260E, U+2328, U+266B | ☎, ⌨, ♫ | |
«<3», «<0» | U+2665, U+2661 | ♥, ♡ | |
«33», «~~» | U+2618, U+2619 | ☘, ☙ | |
«ww», «bh», «ra» | U+26A0, U+2623, U+2622 | ⚠, ☣, ☢ | |
«pe», «%%», «rc» | U+262E, U+2318, U+2672 | ☮, ⌘, ♲ | |
«kz», «CCCP» | U+262D | ☭ | |
«++», «(*», «bb» | U+2626, U+262A, U+534D | ☦, ☪, 卍 | |
«BB», «66», «yy» | U+2638, U+2721, U+262F | ☸, ✡, ☯ | |
«sa» | U+FDFA | ﷺ | ṣallā llahu ʿalayhi wa sallam |
«al» | U+FDF2 | ﷲ | al-Lāh |
«ak» | U+FDF3 | ﷳ | akbar |
«<-», «l^», «->», «lv» | ←, ↑, →, ↓ | Стрелки | |
«-<>», «v^» | ↔, ↕ | ||
«\^», «/^», «\v», «/v» | ↖, ↗, ↘, ↙ | ||
Ka, Ki, Ku, Ke, Ko | ア, イ, ウ, エ, オ | Катакана | |
Kya, Kyu, Kyo | ヤ, ユ, ヨ | ||
Kka, Kki, Kku, Kke, Kko | カ, キ, ケ, ケ, コ | ||
Kkya, Kkyu, Kkyo | キャ, キュ, キョ | ||
Ksa, Ksi, Ksu, Kse, Kso | サ, シ, ス, セ, ソ | ||
Ksya, Ksyu, Ksyo | シャ, シュ, ショ | ||
Kta, Kti, Ktu, Kte, Kto | タ, チ, ツ, テ, ト | ||
Ktya, Ktyu, Ktyo | チャ, チュ, チョ | ||
Kna, Kni, Knu, Kne, Kno | ナ, ニ, ヌ, ネ, ノ | ||
Knya, Knyu, Knyo | ニャ, ニュ, ニョ | ||
Kha, Khi, Khu, Khe, Kho | ハ, ヒ, フ, ヘ, ホ | ||
Khya, Khyu, Khyo | ヒャ, ヒュ, ヒョ | ||
Kma, Kmi, Kmu, Kme, Kmo | マ, ミ, ム, メ, モ | ||
Kmya, Kmyu, Kmyo | ミャ, ミュ, ミョ | ||
Kra, Kri, Kru, Kre, Kro | ラ, リ, ル, レ, ロ | ||
Krya, Kryu, Kryo | リャ, リュ, リョ | ||
Kwa, Kwi, Kwu, Kwe, Kwo | ワ, ヰ, ヴ, ヱ, ヲ | ||
Kwya, Kwyu, Kwyo | ヰャ, ヰュ, ヰョ | ||
Kga, Kgi, Kgu, Kge, Kgo | ガ, ギ, グ, ゲ, ゴ | ||
Kgya, Kgyu, Kgyo | ギャ, ギュ, ギョ | ||
Kza, Kzi, Kzu, Kze, Kzo | ザ, ジ, ズ, ゼ, ゾ | ||
Kzya, Kzyu, Kzyo | ジャ, ジュ, ジョ | ||
Kda, Kdi, Kdu, Kde, Kdo | ダ, ヂ, ヅ, デ, ド | ||
Kdya, Kdyu, Kdyo | ヂャ, ヂュ, ヂョ | ||
Kba, Kbi, Kbu, Kbe, Kbo | バ, ビ, ブ, ベ, ボ | ||
Kbya, Kbyu, Kbyo | ビャ, ビュ, ビョ | ||
Kpa, Kpi, Kpu, Kpe, Kpo | パ, ピ, プ, ペ, ポ | ||
Kpya, Kpyu, Kpyo | ピャ, ピュ, ピョ | ||
Kva, Kvi, Kvu, Kve, Kvo | ヴァ, ヴィ, ヴ, ヴェ, ヴォ | ||
Kvya, Kvyu, Kvyo | ビャ, ヴュ, ヴョ | ||
Knn, K-, Kdd | ン, ー, ッ | ||
KYa, KYu, KYo | ャ, ュ, ョ | ||
G1, G2, G3, G4, G5 | └, ┴, ┘, ├, ┼ | Псевдографика (см. цифровую клавиатуру для понимания принципа построения) | |
G6, G7, G8, G9, G0, G- | ┤, ┌, ┬, ┐, │, ─ | ||
GG1, GG2, GG3, GG4, GG5 | ╚, ╩, ╝, ╠, ╬ | ||
GG6, GG7, GG8, GG9, GG0, GG- | ╣, ╔, ╦, ╗, ║, ═ |
Используемые стандартные последовательности:
Последовательность | Код получающегося символа | Результат | Примечание |
«+-», «-+» | U+00B1 | ± | |
«---» | U+2014 | — | Тире, em-dash |
«--.» | U+2013 | – | En-dash (короткое тире) |
«..» | U+2026 | … | Многоточие |
«^0»…«^9» | ⁰…⁹ | Надстрочные цифры | |
«xx» | U+00D7 | × | Крестик-умножение |
«12», «13», «14», «15», «16», «18» | ½, ⅓, ¼, ⅕, ⅙, ⅛ | Дроби | |
«'a», «`e», «"y», «~o», «^u», «_i», … | á, è, ÿ, õ, û, ī, … | Некомбинированные символы с различными диакритическими знаками. Довольно много всевозможных комбинаций. | |
«tm», «oc», «or», «sm» | U+2122, U+00A9, U+00AE, U+2120 | ™, ©, ®, ℠ | |
«^_a», «^_x», «^_y» | ª, ˣ, ʸ | Надстрочные латинские буквы. Их тоже относительно много, но не все латинские буквы могут быть надстрочными. | |
«_0»…«_9» | U+2080 … U+2089 | ₀…₉ | Подстрочные цифры |
«<=», «>=» | U+2264, U+2265 | ≤, ≥ | |
«ae», «oe» «AE», «OE» | æ, œ, Æ, Œ | Лигатуры | |
«<"», «>"», «<'», «>'» | U+201C, U+201D, U+2018, U+2019 | “, ”, ‘, ’ | Кавычки английские |
«%o», «oo», «O/», «o/» | U+2030, U+00B0, U+00D8, U+00F8 | ‰, °, Ø, ø | Промилле, градус, диаметр |
«c=», «L-», «L=», «Y=», «c|» | €, £, ₤, ¥, ¢ | Символы валют (их тоже довольно много) | |
«#b», «#f», «##» | U+266D, U+266E, U+266F | ♭, ♮, ♯ | Музыкальные значки |
«so», «os», «па» | U+00A7 | § | Параграф |
«PP», «P!», «p!» | U+00B6 | ¶ | |
«.<», «.>» | U+2039, U+203A | ‹, › | |
«.=» | U+2022 | • | Буллит-точка |
«mu» | U+03BC | µ | Греческая строчная мю |
«(0)», «(1)» … «(20)» | ⓪, ① … ⑳ | Цифры в кружочках | |
«(a)», «(A)» … «(z)», «(Z)» | ⓐ, Ⓐ … ⓩ, Ⓩ | Буквы в кружочках, и строчные и прописные | |
«␣␣» | U+00A0 | Неразрывный пробел | |
«␣.» | U+2008 | Пунктуационный пробел |