Показать полную графическую версию : AutoHotKey: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.
stuermer01
20-10-2021, 12:29
Добрый день,
подскажите, как написать 2 скрипта для горячих клавиш в русской раскладке клавиатуры.
1. На цифровом блоке клавиатуры при нажатии клавиши "," в любой раскладке вместо "," вводилась точка "." (как в английской) ?
2. В русской раскладке клавиатуры:
При нажатии LeftAlt + "ы" вводилась "і"; при нажатии LeftAlt + shift + "ы" вводилась "І".
При нажатии LeftAlt + "ъ" вводилась "ї"; при нажатии LeftAlt + shift + "ъ" вводилась "Ї".
2 - почему не подходит просто сменить раскладку на украинскую?
stuermer01
20-10-2021, 17:54
почему не подходит просто сменить раскладку на украинскую? »
Тогда будет 3 раскладки, а это напрягает переключать, запутаться можно. Украинский нужен реже.
Есть такая заготовка:
#Persistent
NumpadDot:: ; ввод точки вместо запятой на нампаде
Send, .
return
RU() ; Проверка языка ввода.
{
WinID := WinExist("A")
ThreadID := DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
InputLocaleID := DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt")
If InputLocaleID = 0x4190419
Return True
Else
Return False
}
<!sc1F::
if RU() = 1
Send, i ; если русский язык, то ввод i
if RU() = 0
Send, s ;если другой язык, то ввод s
return
<!+sc1F::
if RU() = 1
Send, I ;если русский язык, то ввод I
if RU() = 0
Send, S ;если другой язык, то ввод S
return
<!sc1B::
if RU() = 1
Send, ї ; если русский язык, то ввод i
return
<!+sc1B::
if RU() = 1
Send, Ї ;если русский язык, то ввод I
return
Но тут непонятно, почему для i есть латинский кейс, а для ї - нет?
Еще непонятно, почему цикла нет. Он же закончится после одного нажатия.
Для возможности автоматизации нажатий клавиш и кликов,
установите модуль psClick (https://psclick.ru/GettingStarted) в PowerShell.
Теперь можем отслеживать и подменять нажатые клавиши:cls
while($true){
Sleep -m 2
if((Get-KeyboardLayout).Culture -ne "ru-RU"){continue}
if(Get-KeyState Decimal){
Send-Key Back
Sleep -m 16
Send-Text "." -Handle (Get-FocusWindow)
Sleep -m 16
}
if(Get-KeyState S){
Send-Key Back
Sleep -m 16
if((Get-KeyState LShiftKey) -eq 2)
{Send-Text "І" -Handle (Get-FocusWindow)}
else
{Send-Text "і" -Handle (Get-FocusWindow)}
Sleep -m 16
}
if(Get-KeyState Oem6){
Send-Key Back
Sleep -m 16
if((Get-KeyState LShiftKey) -eq 2)
{Send-Text "Ї" -Handle (Get-FocusWindow)}
else
{Send-Text "ї" -Handle (Get-FocusWindow)}
Sleep -m 16
}
}
Погонял несколько раз - работает нормально. Если прям зажать клавишу, то может иногда проскакивать русская буква.
Это тоже можно решить, но надо будет делать перехват самих нажатий, что приведёт к увеличению объема кода.
Для набора текста этого варианта должно быть вполне достаточно. Кстати, идея насчет замены , на . очень неплохая.
megaloman
20-10-2021, 23:53
Создатель раскладки клавиатуры Microsoft (MSKLC) Версия 1.4 (https://www.microsoft.com/en-us/download/details.aspx?id=102134)
Удобная раскладка клавиатуры. Как самому создать удобную раскладку? (http://rones.su/techno/your-own-keyboard-layout.html)
stuermer01
21-10-2021, 16:35
Кстати, идея насчет замены , на . очень неплохая. »
пользуйтесь на здоровье
Удобная раскладка клавиатуры. Как самому создать удобную раскладку? »
Может кто-то сделал уже и может выложить рус-укр раскладку, чтоб велосипед не изобретать? Там ещё есть символы ', Ґґ, ₴ - вроде всё. По той же схеме - LAlt, LALt+Shift.
Microsoft Keyboard Layout Creator (https://www.microsoft.com/en-us/download/details.aspx?id=102134)
Еще непонятно, почему цикла нет. Он же закончится после одного нажатия. »
AHK работает не так. Сходите на Community (https://www.autohotkey.com/boards/) (если нормально с английским) или Серый форум (http://forum.script-coding.com/) (на русском), там разъяснят и подкажут.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.