Я пытаюсь создать сценарий, который изменяет способ работы апострофов на международных клавиатурах США.
Обычно они работают, нажимая один раз, а затем гласную для акцента (á, é, í, ó , ú) или согласный звук для апострофа ('m'l), поэтому для апострофа перед гласной (' a, 'o) вам нужно дважды нажать, затем вернуться на место и ввести гласный.
Это двойное нажмите, затем backspace - это узкое место, которое я пытаюсь решить здесь.
Я придумал следующее решение проблемы:
/* Bit of code A */
$'::Send `'{Space}
$+a::Send % (A_PriorHotkey = "$'") ? "{bs}á" : "a"
$+e::Send % (A_PriorHotkey = "$'") ? "{bs}é" : "e"
$+i::Send % (A_PriorHotkey = "$'") ? "{bs}í" : "i"
$+o::Send % (A_PriorHotkey = "$'") ? "{bs}ó" : "o"
$+u::Send % (A_PriorHotkey = "$'") ? "{bs}ú" : "u"
так что 'становится только акцентом в случае, если при вводе гласной нажимается Shift, но, как вы, возможно, заметили, это также нарушает "альтернативное использование заглавных букв" для гласных на моей клавиатуре. Я попытался создать параллельный сценарий, который заставлял бы их вести себя нормально, если перед ними не было '
/* Bit of code B */
$+a::Send % (A_PriorHotkey = "") ? "A" : "a"
$+e::Send % (A_PriorHotkey = "") ? "E" : "e"
$+i::Send % (A_PriorHotkey = "") ? "I" : "i"
$+o::Send % (A_PriorHotkey = "") ? "O" : "o"
$+u::Send % (A_PriorHotkey = "") ? "U" : "u"
, но это не может работать, поскольку два сценария перекрываются, и это разрешит использование заглавных букв только в начале предложения.
Так должно быть:
/* Bit of code C */
$+a::Send % (A_PriorHotkey = "anything other than '") ? "A" : "a"
$+e::Send % (A_PriorHotkey = "anything other than '") ? "E" : "e"
$+i::Send % (A_PriorHotkey = "anything other than '") ? "I" : "i"
$+o::Send % (A_PriorHotkey = "anything other than '") ? "O" : "o"
$+u::Send % (A_PriorHotkey = "anything other than '") ? "U" : "u"
Как я могу структурировать свой код так, чтобы if (A_PriorHotkey = "'") запускал /* Bit of code A */
else /* Bit of code C */
.