EN DE

ЮNICODE Keyboard Enhancer (ЮNIK)

Ввод символов Unicode в произвольной программе

Задача

Порой возникает необходимость в регулярном использовании нескольких знаков, отсутствующих на стандартной клавиатуре (например, американской или русской). Это могут быть дополнительные символы национальных алфавитов (немецкие умлауты и эс-цэт, французские аксанты и седиль). Могут это быть и другие знаки, скажем, (полу)длинное тире (–, —), знак параграфа (§), франко-русские кавычки («,», ‹, ›), знаки иностранных денежных единиц (₫, ₡, ₢, ₯, и т.д.) или смешные рожицы (☺, ☻). Любителям русской старины может понадобиться быстрая набивка дореформенных букв, таких как і, ѣ, ѳ, ѵ, или даже более древних: ѧ или ѯ. У кого-то может возникнуть необходимость в более интенсивном использовании надстрочных знаков, например, тривиального знака ударения «за́мок закрыли на замо́к» или чуть менее тривиальной тильды: [latɛ̃] (транскрипция слова «латинский» на французском).

Софт и решения
Переопределение
клавиш
Картинки & Exif
без инсталляции

Простые способы вставки с помощью (1) таблицы символов или (2) комбинации <Alt>+<код> (код набирается на цифровой клавиатуре; на ноутбуках без таковой, как правило, эмулируемой с помощью клавиши Fn) слишком трудоемки. Переключение на другую раскладку тоже устроит не всех, так как при этом происходит смена позиций и многих других символов. Например, на немецких клавиатурах буквы Z и Y расположены наоборот; многие служебные знаки также находятся на других позициях, причем – на мой взгляд – менее удобных (классический пример: важные для HTML-кодирования знаки < и >).

Возможные решения

Многих пользователей устроило бы использование «горячих» клавиш (hotkeys), что выглядело бы следующим образом: Есть некий набор комбинаций клавиш, которые приводят к генерированию нужных символов. Например, <клавиша-модификатор>+<A> может генерировать строчную немецкую букву «a умлаут» (ä), <клавиша-модификатор>+<Shift>+<A> – заглавную (Ä), и т.д. Благодаря этим комбинациям при печати немецкого (французского и т.д.) текста достигается скорость, мало отличающаяся от использования национальной клавиатуры, а расположение латинских букв и служебных символов остается неизменным.

Достичь этого можно несколькими способами. Во-первых, можно воспользоваться механизмом макросов, имеющимся в некоторых прикладных программах, например, Notepad++ и OpenOffice, см. http://www.law.net.ru/technologies/umlaute/index.htm. Во-вторых, можно решить вопрос более глобально, создав некую утилиту, которая преобразует выбранные пользователем комбинации клавиш в нужные ему знаки, используемые прикладными программами.

Оба способа имеют плюсы и минусы. Плюс способа с использованием макросов – в его относительной простоте. Для того, чтобы настроить программу для получения нужных символов, не нужно знать основ программирования. Кроме того, манипуляции остаются на уровне отдельных прикладных программ, и влияние на всю остальную систему маловероятно. Это, однако, является и минусом. Макросы для каждой отдельной программы необходимо создавать заново, и в какой-то момент освоение еще одного механизма макросов, для еще одной прикладной программы, теряет свою привлекательность. Унификация пользовательского интерфейса (набора «горячих» клавиш) возможна, но имеет свои пределы.

Case studies
A funny one: Mary writes to Jean or French with a QWERTY keyboard
A serious one: How to make e open with a tilde over it (ɛ̃) as well as any other letter with (almost) any diacritical mark

Что касается второго, «глобального», способа, то и здесь возможны варианты. Вариант радикального решения – создание собственного драйвера клавиатуры (точнее раскладки). Для этого Microsоft предлагает специальную утилиту – Microsoft Keyboard Layout Creator (MKLC), которую можно бесплатно скачать с сайта компании: http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx. Образец того, что можно получить с ее помощью, показан на этой странице. Использование MKLC можно рекомендовать в тех случаях, когда набор нестандартных символов носит фиксированный характер и изменяется нечасто. Если регулярно возникает необходимость в быстром внесении новых знаков, то можно взглянуть на представленную ниже программу ЮNICODE Keyboard Enhancer (ЮNIK). По «чистоте» и «глобальности» решения она находится где-то посередине между макросами в отдельных программах и созданием драйвера клавиатуры.

Операционные системы UNIX/Linux также предлагают функционально сравнимый механизм произвольного присвоения физическим клавишам генерируемых ими символов (ключевое слово – xmodmap). К слову сказать, дистрибутив Linux Ubuntu по простоте свoего использования и настройки вплотную приблизился к Windows. Команда/утилита xmodmap существует и в Mac OS X.

Краткая характеристика

Функциональность ЮNIK вкратце можно охарактеризовать как «третий» (или «второй», как считать) Shift. После некоторых манипуляций с реестром Windows и запуска ЮNIK клавишу-модификатор в комбинации с символьными клавишами можно использовать для генерации любых знаков из набора Unicode-16. В этот набор входят 65 килобайт символов (реально чуть меньше), в том числе подавляющее большинство букв национальных алфавитов, построенных на латинской основе, кириллица в разных видах, арабский, индийские алфавиты, ДОС-овская псевдографика, знаки денежных единиц и многое другое.

Таблица символов

Утилита «Таблица символов», идущая в поставке с Windows, дает определенное представление о возможностях Unicode. Сразу оговоримся, что для этой цели особенно годятся шрифты с максимальным набором символов, например, Lucida Sans Unicode или Arial Unicode MS.

Установка программы

Необходимые файлы содержатся в zip-архиве unik.zip (или unik64.zip), который можно скачать с этого сайта:

ВерсияРазмерОСПлатформа
1.01100 KWindows XP, Vista, 732 бита/разряда
unik.zip
1.01109 KWindows 764 бита/разряда
unik64.zip

Внимание!64-разрядная версия ЮNIK была скомпилирована для Windows 7 и работает исключительно с 64-разрядными приложениями. Все нижесказанное и названия файлов относятся как к 32-разрядной версии (install.exe, unik.exe) так и 64-разрядной (install64.exe, unik64.exe) в той степени, в которой это не противоречит данному ограничению.

Изменения реестраДля работы программы необходимо превратить какую-либо из клавиш в клавишу-модификатор. В принципе, для этого может быть использована любая клавиша, имеющая свой скан-код. Так как после превращения в модификатор эта клавиша потеряет свою первоначальную функцию, то имеет смысл выбрать малоиспользуемую либо продублированную клавишу. Например это может быть одна из следующих четырех клавиш: (1) Левый или (2) правый Windows, (3) Application / Контекст, (4) правый Ctrl. Переназначение происходит путем внесения необходимой записи в реестр Windows. Если ваш выбор остановился на одной из вышеназванных клавиш, то для этого можно воспользоваться утилитой install.exe из набора поставки. Важно: В Windows Vista и Windows 7 install.exe должен запускаться с правами администратора. После нажатия на клавишу «Изменить» компьютер нужно перезагрузить.

Утилита install.exe может быть использована и для внесения ЮNIK в число программ, запускаемых автоматически при загрузке Windows. Захотите вы это сделать или нет – вопрос исключительно удобства, так как ЮNIK можно запускать и выгружать в любое время вручную. Нужно оговориться, что install.exe имеет ограниченную функциональность при работе с реестром и справляется лишь со стандартными задачами. Если на вашем компьютере уже действует сложная система переопределения клавиш, то, возможно, в этом случае реестр придется править вручную либо с помощью специальных программ. С механизмом переопределения клавиш можно ознакомиться в следующем материале, необходимые для этого технические детали приведены в файле readme.txt.

Работа с программой

После запуска файла unik.exe в системном трее (находящемся по умолчанию в правом нижнем углу экрана) появится значок программы – буква «Ю умлаут/трема» на красном фоне. Для вставки требуемого символа необходимо нажать на выбранную вами клавишу-модификатор и, не отпуская ее, на символьную клавишу, которая согласно схеме замен, вызывает генерацию нужного символа.

Программа не осуществляет проверки, была ли назначена клавиша-модификатор, о чем пользователь должен позаботиться сам. Для проверки можно воспользоваться утилитой KeyCode.exe, после нажатия на клавишу-модификатор правое поле в сегменте «Virtual-key Code» должно принять значение «125».

Настройка программы

ЮNIK в трееКлик правой кнопки мыши по значку вызывает меню из трех позиций. Команда «Config» выводит диалог, показывающий имеющиеся строчки замены. С его помощью можно произвести необходимые настройки.

В поле (точнее – поля) «Input» вносятся данные о символе, который вводится с клавиатуры. В поле «Output» вносятся данные о символе, который пользователь хочет получить. В одиночных полях содержатся собственно символы, в четырехзначных полях – их шестнадцатеричные коды согласно Unicode-16. Вводить можно либо сам символ, либо код. Другое поле при этом автоматически обновляется. Ввод можно осуществлять с клавиатуры, либо вставкой через буфер. Коды, а также сами символы можно получить из «Таблицы символов» либо из других источников информации о Unicode-16, например: http://unicode.org/charts, http://www.utf8-chartable.de или http://www.alanwood.net/unicode. Если ваш браузер показал какой-то интересный символ, то вы можете просто скопировать его в буфер и вставить в одиночное поле «Output».

Настройка программы

Какие символы могут вводиться с клавиатуры непосредственно, а какие нет, зависит от клавитуры и/или выбранной раскладки. Так на американской или русской клавиатуре нет умлаутов, которые по этой причине будут использоваться лишь в «Output» диалога «Config». Напротив, если у вас немецкая клавиатура (либо установлена немецкая раскладка), то вы можете использовать умлауты в «Input» как символы, которые будут приводить к генерации каких-то других знаков.

Русская клаваЗдесь необходимо сделать важное замечание. ЮNIK работает с символами, а не клавишами. Иными словами, если вы поставите в поле «Input» знак «й», то соответствующая замена будет срабатывать в русской раскладке при нажатии на клавишу «Q/Й». В американской и прочих подобных раскладках эта клавиша генерирует символ «q», которому может быть присвоено другое значение. Никто, однако, не запрещает присвоить «q» и «й» одно и тоже значение, в результате чего клавиша «Q/Й» будет приводить к вставке одного и того же символа (не забывайте про модифицирующее использование клавиши Shift, «q» и «Q» – это два разных символа). Напротив, в левой колонке (точнее колонках) использование одного и того же символа не имеет смысла, так всегда будет вызываться только первая строка.

После редактирования каждая строка замены должна быть подтверждена командой «Change». Изменения вступают в силу сразу же после закрытия диалога при условии их предварительного сохранения командой «Save». Информация о заменах хранится в файле unik.ini, который может быть отредактирован вручную (см. readme.txt).

Вопрос: Как быть, если вызываемые символы по каким-то причинам располагаются произвольным образом, в результате чего ассоциативные связи отсутствуют и запомнить схему расположения затруднительно?
Ответ: (1) Вариант самостоятельного решения в картинках. (2) Готовые наклейки на клавиатуры существуют не только для кириллицы, но и для других наборов знаков.

Работа под Линуксом

Expand me: Wine/Ubuntu ScreenshotЭксперименты показали, что ЮNIK нормально работает с Wine/Linux. Клавиша-модификатор должна быть получена с помощью упомянутой выше утилиты xmodmap. Например, команды
   xmodmap -e "remove mod4 = Super_L"
   xmodmap -e "keysym Super_L = F14"

превращают клавишу левый Windows в модификатор. Все остальное ничем не отличается от работы под Windows.

Естественно, программой, куда будут вставляться символы, может быть лишь другое приложение для Windows, также запущенное с помощью Wine, например, Notepad++. Обмен отдельными символами и фрагментами текста между приложениями Windows и нативными приложениями Linux осуществляется через буфер (clipboard) с помощью стандартных команд соответствующих приложений (например, <Ctrl>+<C>/<V>). Пустые поля программы KeyCode.exe на скриншоте вызваны тем, что, судя по всему, Wine, как минимум в версии 1.1.42, не поддерживает Raw Input API.

Возможные ограничения

ЮNIK работает с программами для Windows, поддерживающими Unicode. Многие старые прикладные программы, особенно 16-битные, написанные для Windows 3.xx, Unicode не поддерживают. Результат работы с такими программами будет непредсказуем, иногда позитивным, иногда – нет (многое зависит от выбранного шрифта/кодировки).

Особенность (= недостаток) текущей реализации ЮNIK заключается в том, что диалог «Config» показывает не все знаки Unicode. В случае более редких, экзотических знаков, в одиночных полях строчек списка или даже в полях редактирования могут показываться квадратики, символизирующие неотображаемые символы. Это, однако, «косметический» недостаток, так как в нужном вам месте вставляется код символа. Если он определен верно, то символ, вполне возможно, будет отображаться. Иными словами, факт того, что какие-то символы не показываются в диалоге «Config», не оказывает никакого влияния на вставку символов в другие программы. Естественно, эти другие программы также имеют разные способности по отображению символов Unicode. Многое зависит и от версий шрифтов, установленных на компьютере. По моему опыту, наибольший спектр символов Unicode показывают браузеры.

Внимание!ЮNIK хранит настройки в файле unik.ini. Если правила безопасности, действующие на компьютере, ограничивают права доступа к файлам (чтение и/или изменение), то затронутые этим функции программы работать не будут, либо будут работать некоректно. Признаком отсутствия прав на запись является поведение кнопки «Save», которая не меняет своего состояния после нажатия (активно/«кликабельно» –> выключено).

Отсутствие гарантии

Хотя файлы, входящие в состав ЮNIK, были подвергнуты тщательному тестированию, автор не может гарантировать отсутствие в них ошибок. По этой причине использование программы может осуществляться пользователем лишь при условии готовности нести риск этого. Сообщения об ошибках приветствуются.

 

Copyright A. Rumyantsev, 2010/2011 MailBox