1

Тема: AHK: Скрипт — типографские и другие спецсимволы

Немного разобрался и написал скрипт, который помогает вводить разные символы, которых нет на клавиатуре


#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


; при печати ( сразу печатается ) курсор переводится внутрь скобок
; если после этого напечатать r
; или с и нажать "вправо", то произойдет замена симолов вместе со
; скобками на ® и © соответственно
:*:(:: 
SendInput (){left}
Input, Text, L2 V, {right}
if (Text = "r")
  SendInput {backspace 3}®
if (Text = "c")
  SendInput {backspace 3}©
return


:*:[:: 
SendInput []{left}
return


:*:{:: 
SendInput {{}{}}{left}
return


:*:":: 
SendInput ""{left}
return


:*:':: 
SendInput ''{left}
return

; если напечатать сразу 2, то заменяется на "елочки", но есть проблемы при переключении раскладок
:*:<:: 
Text := (double := !double)? "<>{left}{}" : "{right}{backspace 2}«»{left}" 
SendInput %Text%
return

; длинное тире, работает отлично
:*:---::
SendInput {Space}—{Space}
return

; ™ товарный знак
; вариант, не работает префиксная клавиша Т
;T & M::
;SendInput ™
;return

; и еще вариант, тут в русской раскладке все равно печатается "m"
m::
if GetKeyState("t") 
  SendInput {backspace}™
else 
{
  Hotkey, %A_ThisHotkey%, Off
  SendInput %A_ThisHotkey%
  Hotkey, %A_ThisHotkey%, On
}
return

В комментариях написано, какие проблемы у конкретных участков. Общая проблема  —  при смене раскладки иногда не срабатывает, а {} в русской раскладке печатают сразу ХЪ, пока не разобрался как с этим справится, читал английский форум, но там раскладка одна и проблем таких нет.
Дополнительно хотелось бы чтобы выделенный кусок текста помещался при нажатии в скобки, кавычки и т.д. в зависимости от типа знаков.