Легко вводимая метка напряжения с апострофом на клавиатуре США - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать сценарий, который изменяет способ работы апострофов на международных клавиатурах США.

Обычно они работают, нажимая один раз, а затем гласную для акцента (á, é, í, ó , ú) или согласный звук для апострофа ('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 */.

1 Ответ

0 голосов
/ 19 июня 2020

1 использовать другой слой клавиатуры

два слоя клавиатуры с помощью AutoHotkey

Здесь мы дважды нажимаем клавишу Alt , чтобы переключить слой клавиатуры. Вы можете видеть, что слева вверху GUI может напоминать вам слой клавиатуры.

; AutoHotkey v1

keyboard_state = 0

intInterval := 300
~LAlt::
    if (A_PriorHotkey <> "~LAlt" or A_TimeSincePriorHotkey > intInterval)
    {
        KeyWait, LAlt
        return
    }
    Else {
        if (keyboard_state = 1 ){
            EnvAdd, keyboard_state ,-1
            Gui,Destroy
        }
        Else {
             EnvAdd, keyboard_state ,1
            ;SoundBeep, 200, 300
            showtext(1)
        }
    }
return

#if (keyboard_state = 1)

; Write your setting in here
:*:a::á
:*:e::é
:*:i::í
:*:u::ó
:*:o::ú
#if ; End #if


showtext(str)
{
    x := 10
    y := 10
    Gui,Destroy
    Gui,+AlwaysOnTop +Disabled -Caption -SysMenu +Owner +LastFound
    WinGet,hwnd,ID
    Gui, font, s26 ECF3F7 w600, Verdana
    Gui, Color, ECF3F7
    WinSet, TransColor, ECF3F7
    Gui,Add,Text,BackgroundTrans,%str%
    Gui, Show, NoActivate Y%y% X%x% NA, Title of Window
}


2 используйте поле ввода

вы можете использовать ярлык, активный в простом поле ввода. Вы вводите один из a, e, i, o, u он отправит á, é, í, ó, ú

3 используйте Hotstrings

Как говорит @EJE. Нам нужны только простые Hotstrings. Input '' a может вводить á.

"*:''a::á
...