В ходе экспериментов с AutoHotkey (myst‐у в очередной раз спасибо за наводку) пришла в голову мысль сделать список автозамен для расстановки диакритических знаков (латиница). Выношу на суд публики.
Ввод диакритики стилизован под ТеХовские команды и насколько возможно следует LaTeXовскому стандарту. Также добавил команды для ввода некоторых символов (в том числе пунктуационных) и пробелов.
Для получения некоторых символов требуется довольно много нажатий на клавиши, поэтому этот скрипт малопригоден для набора большого количества текста на языках с богатой диакритикой. Мне кажется, что для отдельных языков лучше писать самостоятельные скриптики с небольшим числом простых автозамен (например, как моё opusculum для древнеанглийского: Latina (http://lingvoforum.net/index.php/topic,456.msg649792.html#msg649792)).
Примеры (здесь и далее знак подчёркивания обозначает пробел): \'a даёт á, \k a даёт ą, \th_ даёт þ, \qquad_ даёт такой пробел: а a, --- (три дефиса) даёт em‐dash, \euro_ даёт €.
Правила именования команд таковы.
1. Имя неакцентной команды начинается с \ и заканчивается пробелом. Желательно использование имён, распространённых в LaTeX.
Пока есть такие неакцентные:
а) \ae_ æ; \AE_ Æ; \oe_ œ; \OE_ Œ (далее заглавные образуются аналогично); \th_ þ; \dh_ ð; \ng_ ŋ; \dj_ đ; \o_ ø.
б) \pounds_; \S_ §; \P_ ¶; \copyright; кое‐какие стрелки из математического режима LaTeXа (\leftarrow_ и пр.). Из головы добавил \euro_, \yogh_, \ezh_.
2. Акцентные команды делятся на две группы. Первые содержат один небуквенный символ: \` гравис, \' акут, \^ циркумфлекс,\~ тильда, \: диерезис, \= макрон, \. точка; вторые состоят из буквенного символа: \u бреве, \v чарка, \c седилья, \k ogonek: ą, \H венгерский «долгий умлаут», \r ring: å. Первые набираются без пробела (как и все безбуквенные команды), вторые — с пробелом между командой и буквой.
2б. Над буквами, заданными командами, можно ставить акценты, но второй \ превращается в /: \'/ae даёт ǽ.
3. Есть такие автозамены, которые соответствуют ТеХовским специальным символам и лигатурам, иногда они немного отличаются (часто замыкаются пробелом). Они встречаются в пунктуации.
Пунктуация и пробелы:
--_ en‐dash (NB замыкающий пробел)
--- em-dash
`_ , '_ одинарные кавычки (NB замыкающий пробел)
Закрывающая одинарная кавычка используется также в качестве апострофа.
\lqq_, \rqq_ двойные кавычки
\flqq_, \frqq_ ёлочки, они же задаются лигатурами <<, >>
\glqq_, \grqq_ лапки
\dots_ многоточие
\hyph дефис (моё обозначение)
\??_, \?!_, \!?_, \??_ (таких команд в ТеХе быть не может)
~_ неразрывный пробел (NB замыкающий пробел)
\, тонкий пробел (без замыкающего пробела, как у небуквенных команд)
\enquad_, \quad_, \qquad_ разные пробелы.
Кое‐какие символы: \S_, \P_, \copyright_ — как в ТеХе. Вот некоторые невозможные в ТеХе команды:
\%%_ промилле
\%%%_ 0,1 промилле
\12_, \14_, \34_ — дроби
Я присоединяю скрипт (.ahk) и скомпилированный скрипт. Скомпилированный можно просто запустить. Он обнаружит себя значком H в панели уведомлений. С помощью контекстного меню его можно выключить или заблокировать (suspend hotkeys). Скрипт — текстовый файл (там есть даже кое‐какие комментарии); его можно открыть в любом редакторе (поддерживающем юникод) или запустить с помощью AutoHotkey_L.
Может конфликтовать с модифицированными вручную раскладками.
Если интересно, вот сайт AutoHotkey: http://www.autohotkey.com/, а юникод понимает AutoHotkey_L, которым я и пользуюсь: http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
Может быть, кто‐нибудь и на TeX подсядет. :)
(wiki/ru) LaTeX (http://ru.wikipedia.org/wiki/LaTeX)
Обнаружен маленький бажик.
Цитата: Квас от октября 4, 2010, 17:12
Может быть, кто‐нибудь и на TeX подсядет.
Это слишком жёстко для непрограммеров, нам подавай наглядность. Я даже к вики-разметке не могу привыкнуть — бесит. :)
Цитата: Квас\??_, \?!_, \!?_, \??_
Я в Punto почти так же сделал, только
_ вместо
\.
Цитата: Ванько от октября 4, 2010, 18:30
Это слишком жёстко для непрограммеров, нам подавай наглядность.
:???
Цитата: Bhudh от октября 4, 2010, 20:22
Я в Punto почти так же сделал, только _ вместо \.
Может быть, я покажусь не к месту мелочным, но это два нажатия вместо одного. :green:
В следующей версии планируется:
- постановка акцентов над буквами, заданными командами, с помощью обычных команд: \'\ae даёт ǽ;
- автозамена на вводe ` и ' на открывающую и закрывающую кавычки, а ` ` и '' — на двойные кавычки (будут созданы специальные команды для получения этих ненужных знаков);
- командные последовательности будут оканчиваться не только пробелом, но и другими небуквенными знаками (а также после Enter и Tab); видимо, в связи с этим придётся отказаться от команд, несовместимых с ТеХом;
- есть искушение погрешить против ТеХа и назначить тире на два дефиса;
- интерфейс: скрипт будет блокироваться и разблокироваться с помощью горячих клавиш.
Ещё хочется символов добавить. В юникоде есть символ в виде руки, указывающей пальцем (привлечение внимания)?
Цитироватьесть искушение погрешить против ТеХа и назначить тире на два дефиса;
:yes: У меня и на 2 и на 3.
Хотя подумываю на 2 поставить figure|n-dash...
Квас, спасибо. Это интересно. Надо затестить. А вы не пробовали сделать раскладку для какого-нибудь нелатинского письма, напр. армянского? А то я пока что не врубился, как большой и маленькой букве разные значения присвоить.
Извините, но я не понял, а зачем это всё вообще? Можно ссылку на тему, где обсуждалось?
Цитата: Yitzik от октября 5, 2010, 11:19
А вы не пробовали сделать раскладку для какого-нибудь нелатинского письма, напр. армянского? А то я пока что не врубился, как большой и маленькой букве разные значения присвоить.
Я не пробовал, потому что, во‐первых, у меня слабое представление о нелатинских письменностях. Но принципиальных сложностей нет, можно обсудить. Времени на это уходит немного (тем же AHK сделал некоторую автоматизацию для извлечения юникодовских кодов). Если речь об армянском письме, то мне надо просто разобраться с раскладкой.
Нужно будет добавить сочетания клавиш для активации / дезактивации раскладки. Это можно сделать в том же скрипте, а можно сделать второй управляющий.
Автозамены с заглавными буквами делаются как и со строчными, например,
:*?С:А::
SendInput{U+xxxx}
Return
Здесь указаны опции:
* заменяет сразу, не дожидаясь ending character;
? позволяет делать замену внутри слова;
С — чувствительность к регистру.
Можно написать директиву
#Hotkey *?C
которая будет применять указанные опции ко всем hotstring‐ам, записанным ниже неё.
Если скрипт должен сам активировать и дезактивировать горячие строки, то, наверно, команды посложнее будут.
Цитата: Esvan от октября 5, 2010, 11:58
Извините, но я не понял, а зачем это всё вообще?
Это ещё один способ вводить с клавиатуры много‐много символов. Альтернатива модифицированию раскладок или добавлению новых раскладок.
Цитата: Esvan от октября 5, 2010, 11:58
Можно ссылку на тему, где обсуждалось?
Где обсуждалось что?
Цитата: Квас от октября 5, 2010, 14:00
Цитата: Esvan от октября 5, 2010, 11:58
Извините, но я не понял, а зачем это всё вообще?
Это ещё один способ вводить с клавиатуры много‐много символов. Альтернатива модифицированию раскладок или добавлению новых раскладок.
Понятно.
Цитата: Квас от октября 5, 2010, 14:00
Цитата: Esvan от октября 5, 2010, 11:58
Можно ссылку на тему, где обсуждалось?
Где обсуждалось что?
Ну мне так показалось, что эта тема - продолжение другой, "теоретической".
Спасибо. Вопрос закрыт.
Раскладку надо всё же делать с помощью горячих клавиш, а не автозамен, потому что она не должна зависеть от текущего языка. Я уже сделал модель армянской, в которой пока только одна буква, но зато понимает шифт и капс, а также включается и выключается горячими клавишами. Раскладка из википедии:
(wiki/ru) Раскладка_клавиатуры (http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B)
А тут другая армянская раскладка:
http://www.eanc.net/ru/help/virtual_keyboard/
Какая лучше?
Цитата: Квас от октября 5, 2010, 14:00
Автозамены с заглавными буквами делаются как и со строчными, например,
Код: [Выделить]:*?С:А::
SendInput{U+xxxx}
Return
Здесь указаны опции:
* заменяет сразу, не дожидаясь ending character;
? позволяет делать замену внутри слова;
С — чувствительность к регистру.
Можно написать директиву
#Hotkey *?C
которая будет применять указанные опции ко всем hotstring‐ам, записанным ниже неё.
Спасибо. Еще не тестил, но видимо это оно.
Цитата: Квас от октября 5, 2010, 21:11
Какая лучше?
Говорил со студенткой из Армении. Вторая (на еанк.нет) однозначно более распространенная. Кстати, стандардтные под Винду - отстой.
Цитата: Yitzik от октября 5, 2010, 22:26
Вторая (на еанк.нет) однозначно более распространенная.
Значит, её и сделаем.
Прилагаю черновой вариант. Буквы расставлены все, шифт и капс они понимают. Вы посмотрите, не перепутал ли я чего. Особенно беспокоят буквы, которые на 6 (строчную в таблице символов не обнаружил, а заглавная похожа на находящуюся на U). Сравнивал эти две картинки:
http://www.eanc.net/images/imp/ru/help/virtual_keyboard/gallery/main.gif
http://www.kayfot.com/ARMENIA/Keyboard_ARM.png
И ещё хотелось бы выяснить, что там с пунктуацией: какая используется и где располагается. В таблице символов нашёл armenian full stop U+0589 и armenian hyphen U+058A.
Пока что раскладка не может сама деактивироваться, надо вручную делать suspend. Зато выключается по Win + F3. Вообще, мысль такая: она загружается, при этом использующийся язык (неважно какой) не меняется, а затем её можно включать и выключать сочетаниями клавиш. Так что если с армянским часто работать, можно и в автозагрузку, она ничему мешать не будет.
Спасибки. У меня щас перегрузка: хожу на лекции с жутко простуженным горлом. Поэтому на что-то активное типа протестить клаву сил уже не хватает. Мне, конечно, интереснее было бы понять, как эта прога работает, и написать самому.
Пунктуация там радикально неевропейская. При случае опишу отдельно (бли нэдэр).
Цитата: Yitzik от октября 6, 2010, 21:50
У меня щас перегрузка: хожу на лекции с жутко простуженным горлом.
Сочувствую!
Когда будет время — можем пообщаться на эту тему. У AHK большие возможности, которые осваивать и осваивать. Но написать раскладку в принципе просто, трудоёмкость заключается в нахождении кучи кодов в юникоде. Не мешает вспомогательный скриптик.
Цитата: Квас от октября 6, 2010, 22:05
трудоёмкость заключается в нахождении кучи кодов в юникоде
Что это означает?
Ващето есть таблицы с кодами.
Цитата: Квас от октября 4, 2010, 17:12
а юникод понимает AutoHotkey_L, которым я и пользуюсь
Ах, вот оно что! А я всё думал, как же его этому научить.
Так что придётся мне у себя стандартный AutoHotkey заменить на AutoHotkey_L...
Цитата: Yitzik от октября 7, 2010, 10:29
Ващето есть таблицы с кодами.
Вот таблички, которые я для себя делал:
Цитата: Тайльнемер от октября 7, 2010, 06:57
Цитата: Квас от Вчера в 23:05Цитироватьтрудоёмкость заключается в нахождении кучи кодов в юникоде
Что это означает?
В таблице символов найти символ, посмотреть его код, перенести в программу, проверить, и это в цикле. Нудно.
Цитата: mnashe от октября 7, 2010, 12:25
Так что придётся мне у себя стандартный AutoHotkey заменить на AutoHotkey_L...
Может быть, стоит их оба держать. Вчера обнаружил, что AHK_L не работает со строками автозамены, в которых есть кириллица. Пытаюсь провентилировать этот вопрос.
Цитата: Квас от октября 7, 2010, 12:33
Может быть, стоит их оба держать. Вчера обнаружил, что AHK_L не работает со строками автозамены, в которых есть кириллица. Пытаюсь провентилировать этот вопрос.
Так наверно её надо в UTF-8 набирать, нет?
Цитата: mnashe от октября 7, 2010, 13:13
Так наверно её надо в UTF-8 набирать, нет?
Тьфу ты, конечно! По какому ‐то недоразумению у меня этот файл был в ANSI. Вовремя вы мне сказали. :)
Ну, заявлена была версия 2.0... Я всё надеялся, что сподоблюсь написать мануал. Не сподобился. :(
Выкладываю, что есть: обычный вариант и «русский». В обычном варианте два дефиса превращаются в en‐dash, а три — в em‐dash (по образцу ТеХа), а в «русском» два дефиса превращаются в тире. En‐dash может в любом случае быть получена с помощью \endash. Кроме того, знаки " в русском варианте заменяются на открывающиеся и закрывающиеся кавычки‐ёлочки поочерёдно (сами два штриха можно получить с помощью \dq). В обеих версиях знаки ` и ' заменяются на кавычки (кстати, закрывающая кавычка = апостроф по юникодовским предписаниям), а удвоенные знаки — на двойные кавычки. Сами же эти знаки могут быть получены с помощью команд \grave, \ap. Кстати, \‐ даёт настоящий дефис.
В отличие от ТеХа в имена команд могут входить цифры. Окончанием команды служит небуква‐нецифра (в том числе Tab или Enter), при этом пробел «съедается» (по хорошей ТеХовской традиции).
В комплект входят три файла. Запускается файл без номера, обозначенного римской цифрой! Если вы запустите другой файл — ничего страшного: при последующем запуске надлежащего файла вас интеллигенто обругают по‐английски, вы сделаете вид, что со всем согласны (OK) и всё будет работать как полагается. При желании можно убить процесс через диспетчер задач.
Win + 0 пауза
Win + 1 возобновить
Win + 2 выход
Выход можно делать и через контекстное меню, но паузу — нет. Пауза никак не отражается на иконке.
В общем, пусть будет пока так. Если кого заинтересует, буду отвечать на вопросы. У меня самого постоянно включен модифицированный русский вариант (я его интегрировал в общую схему поддержки языков), поэтому я не устаю радовать читателей ЛФ ёлочками, апострофами и настоящими дефисами, а под настроение mogę nawiet po polsku coś napisać.
Quase, давно хочу спросить:
Для чего писать, к примеру | Цитата: 3 строки::\~n:: SendInput, {U+00F1} Return | вместо более краткого | Цитата: 1 строка::\~n::ñ | ? |
Быдлокод‐с. ;D
:)
(Я сперва подумал, что по-другому не выйдет, но проверил — работает, так что у себя пишу в одну строку).
Я сначала мучился с обыкновенным AHK, а потом узнал, что AHK_L позволяет через код отправлять символы с помощью SendInput. Видно, от радости забыл проверить тривиальный вариант.
Я так понял, что если кодировка не UTF-8 (видимо, речь идёт об ANSI-варианте AHK_L), то действительно можно только так. И то не уверен: скорее всего, компромиссный вариант «::\~n::{U+00F1}» пойдёт и там.
Я щас прикинул, сколько времени сэкономил тем, что сразу пошёл и взял AHK_L, а не ломал голову, как выполнить эту задачу в обычной AHK (скорей всего, пришлось бы использовать API).
Так что я очень благодарен за граблепроходство! :)
Я рад. :) :)
Выкладываю свой вариант.
Немного информации: Основной префикс для мнемоник — | (u007С).
Почти все мнемоники двухсимвольные.
Для IPA — отдельный префикс + буква или две буквы + несколько модификаторов: - уменьшенная заглавная или спирантизация, / перечёркнутая, \ перевёрнутая, = фарингальный/гортанный звук (a=ʔ, e=ɦ, h=ħ, о=ʕ).
Наиболее употребительные HTML entities можно записывать в точности как в HTML, с тем же значением. Кроме этого, некоторые мнемоники можно записывать подобным образом, хотя их и нет в стандарте HTML или они пишутся иначе (например, для ™ вместо ™ я выбрал &tm;).
Все стрелочки обозначаются звёздочкой с последующим знаком
одинарная - / двойная = / две стрелки :
и указателем направления
влево < / вправо > / вверх ^ / вниз &.
Всяческие кавычки — знаками < и > с модификаторами.
Диакритика вводится знаком ^ после буквы-основы, за которым следует один из модификаторов: ` grave (ò), ' acute (ó), ^ circumflex (ô), & caron (ǒ), ~ tilde (õ), - macron (ō), _ underline (o̱), * dot above (ȯ), . dot below (ọ), , cedilla (ç) ; diaeresis (ö) (не нашёл способа задействовать двоеточие), o ring above å, @ ring below o̥, ! «inverted breve below» (o̯), u breve (ŏ), n nasalisation (ę).
Если существует односимвольный вариант буквы с диакритикой, вставляется он, а если нет — вставляется комбинируемая диакритика, а буква остаётся без изменений.
#Space::SendInput ; неразрывный пробел
::--::—
:?:...::...
::1/4::¼
::1/2::½
::3/4::¾
::1/8::⅛
::3/8::⅜
::5/8::⅝
::7/8::⅞
::1/0::∞
#Hotstring *?C
::|-::–
::|!!::‼
::|!\::¡
::|?\::¿
::|_\::¯
::|..::‥
::|_0::₀
::|_1::₁
::|_2::₂
::|_3::₃
::|_4::₄
::|_5::₅
::|_6::₆
::|_7::₇
::|_8::₈
::|_9::₉
::|_+::₊
::|_-::₋
::|_=::₌
::|_(::₍
::|_)::₎
::|+0::º
::|+1::¹
::|+2::²
::|+3::³
::|+4::⁴
::|+5::⁵
::|+6::⁶
::|+7::⁷
::|+8::⁸
::|+9::⁹
::|++::⁺
::|+-::⁻
::|+=::⁼
::|+(::⁽
::|+)::⁾
::|+n::ⁿ
::|+*::°
::|+h::ʰ
::|+e::ʱ
::|+j::ʲ
::|+w::ʷ
::|+a::ˀ
::|+o::ˁ
::|+g::ˠ
::|+x::ˣ
::|+s::ˢ
::|+l::ˡ
::|+r::ʳ
::|+y::ʸ
::|+'::ʹ
::|+"::ʺ
::|+``::ʽ
::|+<'::ʻ
::|+>'::ʼ
::|+|::ˈ
::|+_::ˉ
::|_|::ˌ
::|__::ˍ
::|+.::˙
::*->::→
::*-<::←
::*-^::↑
::*-&::↓
::*-|::↕
::*--::↔
::*!--::↮
::*!-<::↚
::*!->::↛
::*\<::↖
::*/>::↗
::*\>::↘
::*/<::↙
::*=>::⇒
::*=<::⇐
::*=^::⇑
::*=&::⇓
::*=|::⇕
::*=-::⇔
::*!=-::⇎
::*!=<::⇍
::*!=>::⇏
::*:<<::⇇
::*:>>::⇉
::*:><::⇄
::*:<>::⇆
::*:^^::⇈
::*:&&::⇊
::*:^&::⇅
::*^<::↶
::*^>::↷
::*&<::↺
::*&>::↻
::A^``::À
::A^'::Á
::A^^::Â
::A^;::Ä
::E^``::È
::E^'::É
::E^^::Ê
::E^;::Ë
::I^``::Ì
::I^'::Í
::I^^::Î
::I^;::Ï
::O^``::Ò
::O^'::Ó
::O^^::Ô
::O^;::Ö
::U^``::Ù
::U^'::Ú
::U^^::Û
::U^;::Ü
::N^~::Ñ
::a^``::à
::a^'::á
::a^^::â
::a^;::ä
::e^``::è
::e^'::é
::e^^::ê
::e^;::ë
::i^``::ì
::i^'::í
::i^^::î
::i^;::ï
::o^``::ò
::o^'::ó
::o^^::ô
::o^;::ö
::u^``::ù
::u^'::ú
::u^^::û
::u^;::ü
::n^~::ñ
::A^~::Ã
::A^o::Å
::C^,::Ç
::O^~::Õ
::O^/::Ø
::Y^'::Ý
::a^~::ã
::a^o::å
::c^,::ç
::o^/::ø
::y^'::ý
::y^;::ÿ
::A^-::Ā
::a^-::ā
::A^u::Ă
::a^u::ă
::A^n::Ą
::a^n::ą
::C^'::Ć
::c^'::ć
::C^^::Ĉ
::c^^::ĉ
::C^*::Ċ
::c^*::ċ
::C^&::Č
::c^&::č
::D^&::Ď
::d^&::ď
::D^/::Đ
::d^/::đ
::E^-::Ē
::e^-::ē
::E^u::Ĕ
::e^u::ĕ
::E^*::Ė
::e^*::ė
::E^n::Ę
::e^n::ę
::E^&::Ě
::e^&::ě
::G^^::Ĝ
::g^^::ĝ
::G^u::Ğ
::g^u::ğ
::G^*::Ġ
::g^*::ġ
::G^,::Ģ
::g^<'::ģ
::H^^::Ĥ
::h^^::ĥ
::H^/::Ħ
::h^/::ħ
::I^~::Ĩ
::i^~::ĩ
::I^-::Ī
::i^-::ī
::I^u::Ĭ
::i^u::ĭ
::I^n::Į
::i^n::į
::I^*::İ
::i^*::ı
::J^^::Ĵ
::j^^::ĵ
::K^,::Ķ
::k^,::ķ
::K^-::ĸ
::L^'::Ĺ
::l^'::ĺ
::L^,::Ļ
::l^,::ļ
::L^&::Ľ
::l^&::ľ
::L^*::Ŀ
::l^*::ŀ
::L^/::Ł
::l^/::ł
::N^'::Ń
::n^'::ń
::N^,::Ņ
::n^,::ņ
::N^&::Ň
::n^&::ň
::n^>'::ʼn
::N^,::Ŋ
::n^,::ŋ
::O^-::Ō
::o^-::ō
::O^u::Ŏ
::o^u::ŏ
::O^"::Ő
::o^"::ő
::R^'::Ŕ
::r^'::ŕ
::R^,::Ŗ
::r^,::ŗ
::R^&::Ř
::r^&::ř
::S^'::Ś
::s^'::ś
::S^^::Ŝ
::s^^::ŝ
::S^,::Ş
::s^,::ş
::S^&::Š
::s^&::š
::T^,::Ţ
::t^,::ţ
::T^&::Ť
::t^&::ť
::T^/::Ŧ
::t^/::ŧ
::U^~::Ũ
::u^~::ũ
::U^-::Ū
::u^-::ū
::U^u::Ŭ
::u^u::ŭ
::U^o::Ů
::u^o::ů
::U^"::Ű
::u^"::ű
::U^n::Ų
::u^n::ų
::W^^::Ŵ
::w^^::ŵ
::Y^^::Ŷ
::y^^::ŷ
::Y^;::Ÿ
::Z^'::Ź
::z^'::ź
::Z^*::Ż
::z^*::ż
::Z^&::Ž
::z^z::ž
::A^&::Ǎ
::A^&::ǎ
::I^&::Ǐ
::i^&::ǐ
::O^&::Ǒ
::o^&::ǒ
::U^&::Ǔ
::u^&::ǔ
::G^&::Ǧ
::g^&::ǧ
::K^&::Ǩ
::k^&::ǩ
::O^n::Ǫ
::o^n::ǫ
::G^'::Ǵ
::g^'::ǵ
::A^@::Ḁ
::a^@::ḁ
::B^*::Ḃ
::b^*::ḃ
::B^.::Ḅ
::b^.::ḅ
::B^_::Ḇ
::b^_::ḇ
::D^*::Ḋ
::d^*::ḋ
::D^.::Ḍ
::d^.::ḍ
::D^_::Ḏ
::d^_::ḏ
::D^,::Ḑ
::d^,::ḑ
::D^!::Ḓ
::d^!::ḓ
::E^!::Ḙ
::e^!::ḙ
::F^*::Ḟ
::f^*::ḟ
::G^-::Ḡ
::g^-::ḡ
::H^*::Ḣ
::h^*::ḣ
::H^.::Ḥ
::h^.::ḥ
::H^;::Ḧ
::h^;::ḧ
::H^,::Ḩ
::h^,::ḩ
::H^u::Ḫ
::h^u::ḫ
::K^'::Ḱ
::k^'::ḱ
::K^.::Ḳ
::k^.::ḳ
::K^_::Ḵ
::k^_::ḵ
::L^.::Ḷ
::l^.::ḷ
::L^_::Ḻ
::l^_::ḻ
::L^!::Ḽ
::l^!::ḽ
::M^'::Ḿ
::m^'::ḿ
::M^*::Ṁ
::m^*::ṁ
::M^.::Ṃ
::m^.::ṃ
::N^*::Ṅ
::n^*::ṅ
::N^.::Ṇ
::n^.::ṇ
::N^_::Ṉ
::n^_::ṉ
::N^!::Ṋ
::n^!::ṋ
::P^'::Ṕ
::p^'::ṕ
::P^*::Ṗ
::p^*::ṗ
::R^*::Ṙ
::r^*::ṙ
::R^.::Ṛ
::r^.::ṛ
::R^_::Ṟ
::r^_::ṟ
::S^*::Ṡ
::s^*::ṡ
::S^.::Ṣ
::s^.::ṣ
::T^*::Ṫ
::t^*::ṫ
::T^.::Ṭ
::t^.::ṭ
::T^_::Ṯ
::t^_::ṯ
::T^!::Ṱ
::t^!::ṱ
::U^!::Ṷ
::u^!::ṷ
::V^~::Ṽ
::v^~::ṽ
::V^.::Ṿ
::v^.::ṿ
::W^``::Ẁ
::w^``::ẁ
::W^'::Ẃ
::w^'::ẃ
::W^;::Ẅ
::w^;::ẅ
::W^*::Ẇ
::w^*::ẇ
::W^.::Ẉ
::w^.::ẉ
::X^*::Ẋ
::x^*::ẋ
::X^;::Ẍ
::x^;::ẍ
::Y^*::Ẏ
::y^*::ẏ
::Z^.::Ẓ
::z^.::ẓ
::Z^_::Ẕ
::z^_::ẕ
::h^_::ẖ
::t^;::ẗ
::w^o::ẘ
::y^o::ẙ
::A^.::Ạ
::a^.::ạ
::E^.::Ẹ
::e^.::ẹ
::I^.::Ị
::i^.::ị
::O^.::Ọ
::o^.::ọ
::U^.::Ụ
::u^.::ụ
::Y^``::Ỳ
::y^``::ỳ
::Y^.::Ỵ
::y^.::ỵ
::Y^~::Ỹ
::y^~::ỹ
::i^/::ɨ
::u^/::ʉ
::^'::́
::^``::̀
::^+``::̀
::^+'::́
::^~::̃
::^+~::̰
::^!::̯
::^+!::̑
::^\!::̮
::^+\!::̆
::^@::̥
::^+@::̊
::^^::̂
::^+^::̭
::^&::̌
::^+&::̬
::^_::̱
::^-::̄
::^.::̣
::^,::̧
::^*::̇
::^;::̈
::^+;::̤
::^++::̟
::^+-::̠
::^<"::̏
::^>"::̋
::^<'::̒
::^>'::̓
::^<:'::̦
::^>:'::̔
::^--::͡
::<<"::«
::>>"::»
::<<'::‹
::>>'::›
::<:"::,,
::>:"::‟
::<:'::,
::>:'::‛
::<"::"
::>"::"
::<'::'
::>'::'
::|*::×
::|'::′
::|"::″
::!=::≠
::!|||::≢
::|||::≡
::||-::¦
::|.0::∘
::|.1::∙
::|.2::•
::|.3::‣
::|.4::·
::|.5::‧
::|.*::∗
::|.-::−
::|._::ˑ
::|.+::ː
::|./::∕
::|:-::÷
::<=::≤
::>=::≥
::<<?::≪
::>>?::≫
::+-::±
::!~~::≉
::~~::≈
::\/2::√
::\/3::∛
::\/4::∜
::!!m,::ɱ
::!!n.::ɳ
::!!,n::ɲ
::!!n,::ŋ
::!!N-::ɴ
::!!t.::ʈ
::!!d.::ɖ
::!!d'::ɟ
::!!G-::ɢ
::!!a=::ʔ
::!!p-::ɸ
::!!b-::β
::!!t-::θ
::!!d-::ð
::!!s=::ʃ
::!!z=::ʒ
::!!s.::ʂ
::!!z.::ʐ
::!!c,::ç
::!!j,::ʝ
::!!g-::ɣ
::!!kh::χ
::!!gh::ʁ
::!!h=::ħ
::!!o=::ʕ
::!!H-::ʜ
::!!o!=::ʢ
::!!e=::ɦ
::!!he::ɦ
::!!B-::ʙ
::!!R-::ʀ
::!!r.::ɾ
::!!l-::ɬ
::!!l+::ɮ
::!!ts::ʦ
::!!dz::ʣ
::!!tx::ʧ
::!!dx::ʤ
::!!tj::ʨ
::!!dj::ʥ
::!!uu::ɯ
::!!I-::ɪ
::!!Y-::ʏ
::!!o\::ʊ
::!!o/::ø
::!!o'::ɘ
::!!o-::ɵ
::!!o=::ɤ
::!!e\::ə
::!!e``::ɛ
::!!oe::œ
::!!A-::ʌ
::!!o``::ɔ
::!!ae::æ
::!!a\::ɐ
::!!OE::ɶ
::!!a-::ɑ
::!!a_::ɒ
::&deg;::°
::&copy;::©
::&reg;::®
::&euro;::€
::&sect;::§
::&sum;::∑
::&micro;::µ
::&times;::×
::&divide;::÷
::&nbsp;::
::&hyp;::‐
::&shy;::
::&tel;::℡
::&tm;::™
::&ohm;::Ω
::&ohm\::℧
::&N;::№
::&l;::ℓ
::&d;::∂
::&D;::∆
::&sz;::ß
::&AE;::Æ
::&ae;::æ
::&OE;::Œ
::&oe;::œ
::&DH;::Ð
::&dh;::ð
::&TH;::Þ
::&th;::þ
::&DJ::Đ
::&dj::đ
::&NG::Ŋ
::&ng::ŋ
::&IJ;::IJ
::&ij;::ij
::&AE'::Ǽ
::&ae'::ǽ
::&AE-::Ǣ
::&ae-::ǣ
::&Alpha;::Α
::&Beta;::Β
::&Gamma;::Γ
::&Delta;::Δ
::&Epsilon;::Ε
::&Zeta;::Ζ
::&Eta;::Η
::&Theta;::Θ
::&Iota;::Ι
::&Kappa;::Κ
::&Lambda;::Λ
::&Mu;::Μ
::&Nu;::Ν
::&Xi;::Ξ
::&Omicron;::Ο
::&Pi;::Π
::&Rho;::Ρ
::&Sigma;::Σ
::&Tau;::Τ
::&Upsilon;::Υ
::&Phi;::Φ
::&Chi;::Χ
::&Psi;::Ψ
::&Omega;::Ω
::&alpha;::α
::&beta;::β
::&gamma;::γ
::&delta;::δ
::&epsilon;::ε
::&zeta;::ζ
::&eta;::η
::&theta;::θ
::&iota;::ι
::&kappa;::κ
::&lambda;::λ
::&mu;::μ
::&nu;::ν
::&xi;::ξ
::&omicron;::ο
::&pi;::π
::&rho;::ρ
::&sigmaf;::ς
::&sigma;::σ
::&tau;::τ
::&upsilon;::υ
::&phi;::φ
::&chi;::χ
::&psi;::ψ
::&omega;::ω
#Hotstring
Здорово!
Для «промышленного использования» МФА, как мне кажется, имеет смысл сделать отдельный скрипт, позволяющий вводить фонетические обозначения например по образцу TIPA (http://en.wikipedia.org/wiki/TIPA) (после небольшой тренировки это очень удобно). Но я этого делать не буду, потому что мне МФА не нужен и я его не знаю. ;D
Посмотрел TIPA. Как-то не очень...
В основном визуальные соответствия, но они у меня плохо ассоициируются. Особенно те, что на цифрах.
Только сегодня узнал, что форумный движок пропускает html entities: все коды, что я вставил в сообщение, читаются как символы, а не как &сode;
Повторю соответствующие разделы:
::&deg;::°
::&copy;::©
::&reg;::®
::&euro;::€
::&sect;::§
::&sum;::∑
::&micro;::µ
::&times;::×
::&divide;::÷
::&nbsp;::
::&hyp;::‐
::&shy;::
::&tel;::℡
::&tm;::™
::&ohm;::Ω
::&ohm\::℧
::&N;::№
::&l;::ℓ
::&d;::∂
::&D;::∆
::&sz;::ß
::&AE;::Æ
::&ae;::æ
::&OE;::Œ
::&oe;::œ
::&DH;::Ð
::&dh;::ð
::&TH;::Þ
::&th;::þ
::&DJ::Đ
::&dj::đ
::&NG::Ŋ
::&ng::ŋ
::&IJ;::IJ
::&ij;::ij
::&AE'::Ǽ
::&ae'::ǽ
::&AE-::Ǣ
::&ae-::ǣ
::&Alpha;::Α
::&Beta;::Β
::&Gamma;::Γ
::&Delta;::Δ
::&Epsilon;::Ε
::&Zeta;::Ζ
::&Eta;::Η
::&Theta;::Θ
::&Iota;::Ι
::&Kappa;::Κ
::&Lambda;::Λ
::&Mu;::Μ
::&Nu;::Ν
::&Xi;::Ξ
::&Omicron;::Ο
::&Pi;::Π
::&Rho;::Ρ
::&Sigma;::Σ
::&Tau;::Τ
::&Upsilon;::Υ
::&Phi;::Φ
::&Chi;::Χ
::&Psi;::Ψ
::&Omega;::Ω
::&alpha;::α
::&beta;::β
::&gamma;::γ
::&delta;::δ
::&epsilon;::ε
::&zeta;::ζ
::&eta;::η
::&theta;::θ
::&iota;::ι
::&kappa;::κ
::&lambda;::λ
::&mu;::μ
::&nu;::ν
::&xi;::ξ
::&omicron;::ο
::&pi;::π
::&rho;::ρ
::&sigmaf;::ς
::&sigma;::σ
::&tau;::τ
::&upsilon;::υ
::&phi;::φ
::&chi;::χ
::&psi;::ψ
::&omega;::ω
Возвращаясь к вопросу о раскладках: капс у меня в армянской был реализован исключительно неэлегантно. Гораздо лучше так:
#If Not(GetKeyState("Capslock", "T"))
<буквы без капса>
#If GetKeyState("Capslock", "T")
<буквы с капсом>
#If
Предлагаю вниманию публики новый вариант ввода символов à la
![\TeX [tex]\TeX[/tex]](https://latex.codecogs.com/png.latex?\TeX)
. С точки зрения реализации я капитально переработал то, что было раньше и добавил кое-какие новые символы, в том числе \ять и другие кириллические. Кроме того, \` и \' заменяются на ` и ' соответственно (напоминаю, что кавычки сами собой превращаются в правильные запятушки). Отличие от ТеХовского стандарта: -- заменяется на em-dash, а en-dash можно получить командой \endash; диакритика над i ставится применением команд к самой этой букве: \'i ⇒ í. Поскольку интересующихся всё равно нет, подробную спецификацию писать не буду, а лучше выложу код.
Включение—выключение только через контекстное меню.
Вообще, технические сложности состоят, в том, что, например, символ ' должен, с одной стороны, сразу заменяться на ', а с другой — входить в состав команд для букв с акутом. Раньше я этого добивался за счёт манипуляций с двумя скриптами (к которым пришлось добавить управляющий третий), и багов при этом возникало много (кучу я сам переловил, но, например, слово noël печаталось неправильно). Теперь вместо автозамен я использовал команду Input, с которой получилось гораздо лучше. Надо только следить, чтобы эта команда не создавала неожиданных эффектов.
Кстати, этот скрипт хорошо интегрируется с другими (я его так и использую): его можно включить в текст с помощью #Include, а инициализация осуществляется функцией symbols_on(), которую следует записать в исполняемой части основного скрипта.
А у меня одиночные символы никогда не автозаменяются: мне это кажется неудобным и расточительным. Апостроф я получаю парой символов:
>' → '
<' → '
<:' → ,
>:' → ‛
<" → "
>" → "
<:" → ,,
>:" → ‟
И ещё я понял, что в большинстве случаев постфикс намного удобнее, чем префикс. Поэтому я отошёл от равнения та TeX.
Пример: хочу, чтобы «--» заменялось на ndash, а «---» — на mdash. С префиксом я этого сделать не могу, а постфиксом — пожалуйста.
(Сначала я вообще сделал тире безпрефиксными, а потом удивлялся, что мне такое странное просмотровщик фотографий выкидывает).
Или вот, аналогично:
'''~ → ‴
''~ → ″
'~ → ′
Префиксом такого не сделаешь: как только я ввёл, скажем, «\'», он сразу автозаменится, и ввести «\''» я уже не смогу.
Поэтому я переделал почти все автозамены в постфиксы (обычно тильда), с префиксами оставил лишь суперскрипт/субскрипт, стрелки и часть математических символов.
Мне хотелось создать себе трудностей, чтобы героически их преодолевать. :) Фокус с заменой -- и --- можно сделать с помощью Input, хотя это трудоёмко (я не стал, потому что в русской типографике вроде как одно тире).
Цитата: mnashe от июня 14, 2011, 23:27
И ещё я понял, что в большинстве случаев постфикс намного удобнее, чем префикс.
Я тоже так думаю. У меня AHK-раскладки все постфиксные. Кстати, при настоящей работе в ТеХе я основные команды повесил на автозамены, у которых постфиксом часто выступает Tab (а то удобная клавиша пропадает, да и правый мизинец неплохо разгрузить). А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Цитата: Квас от июня 15, 2011, 00:01
А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Хорошая идея! Сделаю и себе так (gF~ → Φ).
Сейчас у меня греческие вводятся или HTML-последовательностями (по названиям: &phi; → φ), или числовыми значениями (&g500; → φ). И то, и то длинно; последнее я сделал для игры. Шаг вперёд от этого последнего — и получаем твою идею.
(Греческие, которые в IPA, вводятся у меня модификатором «:»: g:~ → ɣ, t:~ → θ).
Цитата: mnashe от июня 15, 2011, 00:11
Цитата: Квас от июня 15, 2011, 00:01А «префиксы» просто смысловые: например, g для греческих букв (gF{Tab} даёт заглавную фи).
Хорошая идея!
Бальзам на душу. ::) Некоторыми своими дизайнерскими решениями прямо горжусь. :)
Цитата: Квас от июня 15, 2011, 00:23
Здорово, мы с mnashe на «ты»
У меня ж вообще проблема с «вы», я много раз об этом писал. Отсутствует в мозгу какой-то винтик, который за это отвечает; приходится каждый раз заново соображать, не обидится ли человек, если я скажу ему «ты»... И хотел бы со всеми на «ты», как в иврите! А тем более с товарищами-форумчанами, с которыми я больше общаюсь, чем с товарищами в реале...
А мы с mnashe ВНЕЗАПНО ВКонтакте... ;D