Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   AutoHotKey: Замена запятой на точку и ввод "і" и "ї" из русской раскладки. (http://forum.oszone.net/showthread.php?t=349833)

stuermer01 20-10-2021 12:29 2969322

AutoHotKey: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.
 
Добрый день,

подскажите, как написать 2 скрипта для горячих клавиш в русской раскладке клавиатуры.

1. На цифровом блоке клавиатуры при нажатии клавиши "," в любой раскладке вместо "," вводилась точка "." (как в английской) ?

2. В русской раскладке клавиатуры:
При нажатии LeftAlt + "ы" вводилась "і"; при нажатии LeftAlt + shift + "ы" вводилась "І".
При нажатии LeftAlt + "ъ" вводилась "ї"; при нажатии LeftAlt + shift + "ъ" вводилась "Ї".

Fors1k 20-10-2021 16:50 2969352

2 - почему не подходит просто сменить раскладку на украинскую?

stuermer01 20-10-2021 17:54 2969357

Цитата:

Цитата Fors1k
почему не подходит просто сменить раскладку на украинскую? »

Тогда будет 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 есть латинский кейс, а для ї - нет?
Еще непонятно, почему цикла нет. Он же закончится после одного нажатия.

Fors1k 20-10-2021 22:07 2969373

Для возможности автоматизации нажатий клавиш и кликов,
установите модуль psClick в 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 2969376

Создатель раскладки клавиатуры Microsoft (MSKLC) Версия 1.4

Удобная раскладка клавиатуры. Как самому создать удобную раскладку?

stuermer01 21-10-2021 16:35 2969420

Цитата:

Цитата Fors1k
Кстати, идея насчет замены , на . очень неплохая. »

пользуйтесь на здоровье

Цитата:

Цитата megaloman
Удобная раскладка клавиатуры. Как самому создать удобную раскладку? »

Может кто-то сделал уже и может выложить рус-укр раскладку, чтоб велосипед не изобретать? Там ещё есть символы ', Ґґ, ₴ - вроде всё. По той же схеме - LAlt, LALt+Shift.

Microsoft Keyboard Layout Creator

Iska 23-10-2021 12:47 2969547

Цитата:

Цитата stuermer01
Еще непонятно, почему цикла нет. Он же закончится после одного нажатия. »

AHK работает не так. Сходите на Community (если нормально с английским) или Серый форум (на русском), там разъяснят и подкажут.


Время: 09:23.

Время: 09:23.
© OSzone.net 2001-