AutoIt3


TextCorrection

Назначение

Исправляет текст набранный в неверной раскладке клавиатуры.




Взаимосвязанные

TextCorrection (Linux)
TextCorrection (Windows) (тестируется)

Описание и настройка программы




Описание

Программа имеет несколько режимов исправления текста, набранного в неправильной раскладке клавиатуры. У каждого режима собственная горячая клавиша. Для теста режимов скопируйте следующий текст в блокнот панельная vyjuj'nf;rf и воспользуйтесь горячими клавишами, чтобы его исправить. После исправления нажмите Ctrl+Z, чтобы отменить коррекцию.

Если текст выделен, то во всех режимах обрабатывается только выделенный текст, в противном случае обрабатывается текст слева от курсора. Выделение происходит автоматически с помощью эмуляции клавиш:
1. Выделение текста - Ctrl+Shift+Стрелка влево или Shift+Home
2. Копирование в буфер обмена Ctrl+Insert
3. Вставка обработанного текста из буфера обмена Shift+Insert
Эта информация может помочь в разрешении вопросов, так как бывают случаи, когда эти сочетания клавиш не работают в некоторых окнах редактирования, например поле поиска в проводнике WindowsXP, в программе 1С из-за назначения горячей клавиши Ctrl+Insert для копирования строки, и в некоторых формах браузера.

Режимы исправления текста

1 исправление слова либо всё русское, либо английское

панельная vyjuj'nf;rfдо обработки
панельная vyjuj'nf;капосле обработки
панельная многоэтажкапосле обработки, если текст был выделен
В этом режиме исправляется последнее слово. Сначала выделяется слово аналогично Ctrl+Shift+Стрелка влево, далее по последнему символу определяется текущий язык введённого слова. Если это цифра или иной символ не определяющий принадлежность языку, то проверяется предыдущий символ и т.д., пока не будет обнаружен первый символ справа, который определяет язык последнего ввода. Далее все символы этого языка преобразуются в противоположный. Если слово также изначально содержит символы противоположного языка, то они не преобразуются. То есть текст после коррекции всегда будет в одной раскладке.

2 исправление строки инвертированием

панельная vyjuj'nf;rfдо обработки
gfytkmyfz многоэтажкапосле обработки
В этом режиме выделение происходит аналогично комбинации клавиш Shift+Home. При этом выделяется вся строка и буквы преобразуются в противоположные, то есть после коррекции символы могут быть в различной раскладке, на различных языках. Бывают случаи, когда текст содержит слова на двух языках и вводится с переключением раскладки. Этот режим исправляет именно такой текст, когда русский должен быть преобразован в английский, а английский в русский.

3 исправление слова до первого пробела

панельная vyjuj'nf;rfдо обработки
панельная многоэтажкапосле обработки
Часто при наборе текста в неправильной раскладке в словах могут быть спец-символы или знаки препинания, которые являются разделителями слов. Например многоэтажка в неправильной раскладке выглядит так vyjuj'nf;rf, при его коррекции в режиме 1 происходит выделение слова до первого разделителя слова, то есть преобразуется только текст rf. Чтобы игнорировать такой разделитель используйте этот режим (3). В опции допустимых разделителей вы можете указать разделители. Для тех кто вводит литературный текст достаточно набор разделителей оставить по умолчанию. Для тех кто пишет код программы с использованием спец-символов, сложно указать, что является разделителем, поэтому пользователю предоставлен выбор, чтобы опытным путём сделать оптимальный решение. Но во всех не благоприятных случаях есть возможность выделить слово/текст вручную мышкой или горячими клавишами Ctrl+Shift+Стрелка влево и Shift+Стрелка влево. Советую выучить горячие клавиши выделения текста, это облегчит работу с текстом в будущем.
Коррекция выполняется следующим образом: выделяется вся строка аналогично комбинации клавиш Shift+Home. Далее с конца строки к началу выполняется поиск разделителя и вся правая часть подлежит коррекции, а левая возвращается как есть. Пробел используется в качестве разделителя принудительно.

4 исправление слова инвертированием

приdtnдо обработки
ghbветпосле обработки
Из выше сказанного не сложно догадаться, выделение последнего слова как в режиме 1, а исправление инвертированием как в режиме 2. Но это редкий случай, ведь слово в большинстве случаев вводят на одном языке, а не на разных.

5 красная строка, первая буква заглавная

пРИВЕТдо обработки
Приветпосле обработки
Этот вариант не только преобразует первый символ в верхний регистр, но и все остальные символы кроме первого преобразует в нижний регистр. То есть в том числе исправляет CapsLock. Из недостатков этого режима: коррекция только последнего слова, то есть приходится ставить курсор на первое слово (или выделить), которое необходимо исправить в случае если введено более одного слова в предложении. Исправить этот недостаток не предоставляется возможным, так как не всегда точка от предыдущего предложения является критерием для этого режима.

6 перевод в верхний регистр

приветдо обработки
ПРИВЕТпосле обработки
Текст в этом режиме выделяется аналогично режиму 1.

7 перевод в нижний регистр

ПРИВЕТдо обработки
приветпосле обработки
Текст в этом режиме выделяется аналогично режиму 1.

8 переключение на альтернативный язык (CtrI+p)

Не рекомендуется назначать горячую клавишу и использовать этот режим, если у вас 2 языка в системе, так как автоматически добавится третий язык и потребуется удаление его в настройках "Пуск > Панель управления > Язык и региональные стандарты > Вкладка "Языки" > Подробнее". Для тех у кого третий язык в раскладках (по умолчанию добавлен украинский), то вы можете преобразовать текст между русским и украинским, но для этого потребуется преобразовать сначала в англ. раскладку, потом переключить альтернативный язык и далее ещё раз преобразовать. Это потребует 3-х вызовов горячих клавиш, но вам решать использовать эту возможность или нет.


Разделители слов

Используется только для режима 3. По умолчанию символ пробела уже назначен принудительно, и допустимо только добавлять в нему иные символы. Не возможно добавить в качестве разделителя символы, кроме указанных в описании \()=+%!*-_, так как другие удаляются из набора при применении.


Обрабатывать как CapsLock (рекомендуется)

При включенном режиме функция преобразования в верхний или нижний регистр для символов 23467 не приводит к изменению, это аналогично включенному CapsLock, при котором используется верхний регистр для символов, но не используется вторичное значение клавиш как если бы использовать удерживание Shift. Отключение этого режима приводит к преобразованию символов 23467 соответственно в "№;:?. Так как возможны оба варианта использования ввода, то встаёт вопрос, как обрабатывать обратное преобразование. Так как в большинстве случаев для набора нескольких символов в верхнем регистре мы используем CapsLock, то этот вариант исправления более предпочитаемый и приводит к правильной коррекции текста. В противоположность Shift используется только для первого символа красной строки и его удерживание не происходит без контроля.


Автозагрузка

Установите галочку, чтобы добавить программу в автозагрузку. Снятие галочки удаляет из автозагрузки

9 Замена

Замена аббревиатур: в Replace.ini добавляете пару юсб=USB и теперь при нажатии горячей клавиши юсб заменяется на USB. Это не ini-файл, поэтому не нужно выделять кавычками. Всё что после "=" вставляется взамен левой части. В правой части может также использоваться символ "=" многократно, в качестве разделителя берётся первый слева. Если необходимо, чтобы левая строка была многострочным текстом, добавьте в TextCorrection.ini параметр CRLF=~ а в Replace.ini в тексте используйте ~ (тильда) в качестве переноса строки. Символ переноса строки может быть иной всвязи с тем, что он может использоваться сам по себе как есть, поэтому необходимо самостоятельно определить, какой символ использовать в качестве переноса. В теле программы во время вставки символ будет заменятся на перенос.
Это функция была добавлена всвязи с тем, что часто приходится набирать тексты на англ языке, в том числе в языках программирования, при этом часто имя функции или какой нибудь термин вводится с ошибкой и дольше приходится искать буквы на клавиатуре, а названия функции в программировании может состоять из 3-х сокращённых слов. Функция замены кроме обычной подмены в виде кальки (юсб=USB), можно вставлять целые конструкции кода, например написать "гуи" и заменить на конструкцию GUI-интерфейса с циклом опроса или написать "штмл" и заменить на веб-шаблон страницы с тегами html, head, body, готовой к наполнению контентом. Также можно применять в чате, например если вы напишете винда, залочить, юсб, дрова и т.д. не все могут понимать вас, у каждого может быть свой лексикон на эту тему, но можно легко привычный ваш слег преобразовать в слова которые однозначно будут восприняты любым собеседником. В общем сленг изначально использовался для простоты ввода, теперь сохранив простоту можно быть ещё и точным и понятным для всех.


10 Транслитерация

Жаждущаядо обработки
ZHazhdushcayaпосле обработки

Полезно в следующих случаях: Есть несколько вариантов транслитерации односторонние, которые точнее передают звуки, то есть читаемое на другом языке будет точнее соответствовать реальному звучанию. В этой программе по умолчанию используется двусторонняя транслитерация, то есть можно в точности преобразовать обратно. Но так как настройки хранятся в ini-файле, то всегда можно сделать и однстороннюю транслитерацию и использовать любой другой язык. Также при составлении подмены нужно придерживаться правила: трёхбуквенные замены должны стоять первыми в списке иначе они будут заменяться однобувенными подменами. После составления списка нужно проверить, что все буквы заменяются в обе стороны возвращаясь в оригинал. После гласных не могут стоять "Ъ" или "Ь" поэтому в "Й" и "Э" используется апостроф неконфликтующий с апострофом мягкого знака. Так как апостроф является разделителем частей слов и создаёт проблему при автоматическом выделении слова, то использовать Shift+Home или многократное нажатие Ctrl+Shift+Стрелка влево, если точнее, то удерживая Ctrl+Shift несколько раз нажать Стрелка влево.



Описание ini-файла




Секция [General]

Все 3 языка имеют в одинаковых позициях буквы, которые располагаются на одной клавише, то есть "q" и "ё" находятся в первой позиции и на одной клавише и при замене букв "q" меняется "ё" и наоборот.
Lang1=`qwertyuiop[]asdfghjkl;'zxcvbnm,./~QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?@#$^&
Lang2=ёйцукенгшщзхъфывапролджэячсмитьбю.ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,"№;:?
Lang3=ёйцукенгшщзхїфівапролджєячсмитьбю.ЁЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄ/ЯЧСМИТЬБЮ,"№;:?

Эти же 3 языка, но в данном случае этот набор предназначен для проверки, что символ является буквой, и какому языку принадлежит, чтобы определить направление преобразования и переключить раскладку на правильный язык.
LangT1=qwertyuiopasdfghjklzxcvbnm
LangT2=ёйцукенгшщзхъфывапролджэячсмитьбю
LangT3=ёйцукенгшщзхїфівапролджєячсмитьбю

Два набора для транслитерации, причём, если алфавит больше размером, то он может быть записан как перечисление букв, а краткий алфавит - перечисление через пробел с допуском многобуквенных сочетаний. Причём многобуквенные сочетания должны стоять в начале списка.
Translit1=SHC shc YO yo ZH zh Y' y' KH kh CH ch TC tc SH sh E' e' YU yu YA ya A a B b V v G g D d E e Z z I i K k L l M m N n O o P p R r S s T t U u F f `` ` Y y '' '
Translit2=ЩщЁёЖжЙйХхЧчЦцШшЭэЮюЯяАаБбВвГгДдЕеЗзИиКкЛлМмНнОоПпРрСсТтУуФфЬьЫыЪъ

3 номера языка используются для переключения языка и индикации в трее.
LangR1=00000409
LangR2=00000419
LangR3=00000422

Pattern=\()=+%! - символы, которые не являются разделителями слов при захвате слова слева от курсора
AutoStart=0 - автозагрузка программы, добавит ярлык в папку "Автозагрузка", если он там отсутствует.
CapsLock=1 - как обрабатывать CapsLock
CRLF=~ - определяет символ переноса строк в Replace.ini, чтобы вставлять многострочные фрагменты текста
Edit=1 - определяет способ захвата выделенного текста для стандартных элементов Windows

Секция [HotKey]

Здесь сохраняются идентификаторы горячих клавиш, определяющие модификатор (Ctrl, Shift, Alt) и клавишу. HotKey1=131292
HotKey2=131294
HotKey3=131258
HotKey4=131148
HotKey5=131263
HotKey6=131291
HotKey7=131293
HotKey8=0
HotKey9=0
HotKey10=0