1

Тема: AutoHotkey: скрипт для ввода немецких умляутов

Умляуты вводятся по нажатию определённых горячих клавиш (см. комментарии в коде скрипта). Скрипт будет работать правильно, только если вы находитесь в английской раскладке (а иного и не нужно).
Умляуты содержатся в кодовой странице 1252. Если вдруг по нажатию горячих клавиш скрипта, находясь в ЛЮБОЙ раскладке, вы получаете русские буквы вместо умляутов, проверьте в реестре ключ
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
Значение "1252" должно быть равно "c_1252.nls". Если стоит "c_1251.nls", скрипт будет работать неправильно. Однако не исключено, что при значении "c_1252.nls" некоторые переведённые на русский язык программы будут показывать кракозябры. Так что придётся выбрать: кракозябры или печать умляутов с клавиатуры. Например, у меня при значении "c_1252.nls" возникает следующий эффект: если через буфер копируется русский текст из одного приложения в другое и эти приложения находятся в разных раскладках, то вставляются кракозябры. Однако, это легко обходится, если перед копированием переключить оба приложения в русскую раскладку.
Кроме того, вы можете вводить умляуты и "вручную", без скрипта, набирая их коды в цифровой части клавиатуры при нажатой клавише Alt:
Alt+0228, а-умляут маленькая
Alt+0196, а-умляут заглавная
Alt+0246, о-умляут маленькая
Alt+0214, о-умляут заглавная
Alt+0252, u-умляут маленькая
Alt+0220, u-умляут заглавная
Alt+0223, эс-цет

!sc012::Send, {ASC 0228} ; Alt+E, а-умляут маленькая
#!sc012::Send, {ASC 0196} ; Win+Alt+E, а-умляут заглавная
!sc01F::Send, {ASC 0246} ; Alt+S, о-умляут маленькая
#!sc01F::Send, {ASC 0214} ; Win+Alt+S, о-умляут заглавная
!sc02C::Send, {ASC 0252} ; Alt+Z, u-умляут маленькая
#!sc02C::Send, {ASC 0220} ; Win+Alt+Z, u-умляут заглавная
!sc010::Send, {ASC 0223} ; Alt+Q, эс-цет
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: AutoHotkey: скрипт для ввода немецких умляутов

А вот другой вариант. Хорош тем, что ему безразличны кодовые страницы и текущая раскладка. Т.е. по идее он должен работать всегда и везде (на винде и приложениях, поддерживающих Юникод, разумеется). Ну, это я накатал так, из интереса. Сам я умляуты не использую.

!sc012:: Paste_Umlaut( "Г¤" ) ; Alt+E, а-умляут маленькая
#!sc012:: Paste_Umlaut( "Г„" ) ; Win+Alt+E, а-умляут заглавная
!sc01F:: Paste_Umlaut( "Г¶" ) ; Alt+S, о-умляут маленькая
#!sc01F:: Paste_Umlaut( "Г–" ) ; Win+Alt+S, о-умляут заглавная
!sc02C:: Paste_Umlaut( "Гј" ) ; Alt+Z, u-умляут маленькая
#!sc02C:: Paste_Umlaut( "Гњ" ) ; Win+Alt+Z, u-умляут заглавная
!sc010:: Paste_Umlaut( "Гџ" ) ; Alt+Q, эс-цет

Paste_Umlaut( UTF ) ; функция вставки в текст умляута
{
    ClipSaved := ClipboardAll ; сохраняем текущее содержимое буфера
    Transform, Clipboard, Unicode, %UTF% ; помещаем в буфер нужный символ (переведя его из UTF в Unicode)
    Send, ^{sc02F} ; Ctrl+V (вставляем наш символ из буфера в активное приложение)
    Clipboard := ClipSaved ; восстанавливаем прежнее содержимое буфера
    ClipSaved = ; очищаем переменную (освобождаем память)
} ; конец функции
Крокодил, крокожу и буду крокодить! (Твёрдое обещание нетрезвого кодера).