1

Тема: AHK:изменение регистра, при кот-ом только первая буква в слове большая

Уважаемые форумчане,

Данный скрипт работает великолепно:
Все буквы становятся большими после двойного нажатия F3, все буквы становятся маленькими после тройного нажатия F3.


#UseHook
F3::
KeyWait, %A_ThisHotkey%
KeyWait, %A_ThisHotkey%, D T0.3
If ErrorLevel
{
SendInput {F3}
Return
} 

KeyWait, %A_ThisHotkey%
KeyWait, %A_ThisHotkey%, D T0.3
ConvertRegistr(ErrorLevel)
KeyWait, %A_ThisHotkey%
Return

ConvertRegistr(up) { 
Clipboard =
SendInput ^{vk43} ; "C"
ClipWait, 1 
if ErrorLevel
Return

if up
StringUpper, Clipboard, Clipboard
Else
StringLower, Clipboard, Clipboard

Sleep 100
SendInput ^{vk56} ; "V"
}

Но практика показала, что этот скрипт станет идеальным, если после после тройного нажатия F3 ТОЛЬКО ПЕРВАЯ БУКВА В СЛОВЕ (В СЛОВАХ В ФРАЗЕ) будет большой, а после четырехкратного нажатия F3 все буквы будут маленькими.

Пожалуйста, помогите добиться этого улучшения.

2

Re: AHK:изменение регистра, при кот-ом только первая буква в слове большая


#UseHook

F3::
    N:=0
    Loop {
        N++
        KeyWait, %A_ThisHotkey%
        KeyWait, %A_ThisHotkey%, D T0.3
    } Until ErrorLevel
    If N=1
        Send, {%A_ThisHotkey%}
    Else
        Gosub % IsLabel(L := A_ThisHotkey . "_" . N) ? L : "NoCombo"
Return

NoCombo:
Return

F3_2:
    ConvertRegistr("upper")
Return

F3_3:
    ConvertRegistr("title")
Return

F3_4:
    ConvertRegistr("lower")
Return

ConvertRegistr(case) { 
    Clipboard =
    SendInput ^{vk43} ; "C"
    ClipWait, 1 
    if ErrorLevel
        Return

    if case = upper
        StringUpper, Clipboard, Clipboard
    else if case = title
        StringUpper, Clipboard, Clipboard, T
    else if case = lower
        StringLower, Clipboard, Clipboard
    else
        Return

    Sleep 100
    SendInput ^{vk56} ; "V"
}

3

Re: AHK:изменение регистра, при кот-ом только первая буква в слове большая

Огромное спасибо, все работает!