1 (изменено: stuermer, 2021-10-19 20:08:55)

Тема: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Добрый день.

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

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

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

2

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer пишет:

Подскажите, как написать 2 скрипта AHK

Читаете справку, открываете редактор и пишете.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: stuermer, 2021-10-20 14:54:50)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

teadrinker
Я не программист...

4

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Тогда сначала придётся ознакомиться с правилами и отредактировать свой пост. Обратите внимание на  заглавные буквы в начале и точки в конце предложений.
Потом подумайте, насколько оно вам нужно, и создайте пост в коммерческом разделе.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

teadrinker пишет:

Обратите внимание на  заглавные буквы в начале и точки в конце предложений.

Где точки нет и буквы маленькие??

6 (изменено: Alexey_cake, 2021-10-20 14:05:53)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer, здравствуй. Я тоже не программист, но кое-что получилось сделать:

#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
}

loop
{
    sleep 100
      
    <!s::
        if RU() = 1
            Send, i ; если русский язык, то ввод i
        if RU() = 0
            Send, s ;если другой язык, то ввод s
    return
    <!+s:: 
        if RU() = 1
            Send, I ;если русский язык, то ввод I
        if RU() = 0
            Send, S ;если другой язык, то ввод S
    return

}

7

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer пишет:

Где точки нет и буквы маленькие??

stuermer пишет:

я не программист

Где здесь заглавная буква и точка, не подскажете? Если думаете, что орфографию нужно соблюдать только в первом посте, то это не так.
Alexey_cake, на будущее, если было сделано замечание по оформлению, не торопитесь отвечать до внесения автором исправлений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

teadrinker пишет:

не торопитесь отвечать до внесения автором исправлений.

Хорошо, исправлюсь.

9 (изменено: stuermer, 2021-10-20 15:01:56)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake пишет:

stuermer, здравствуй. Я тоже не программист, но кое-что получилось сделать:

Здравствуй, спасибо, попробую!

10

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake
Не программист, но хочу понять логику этого синтаксиса. В этой статье написано:

;Создадим макрос для смены раскладки клавиатуры при нажатии Caps Lock. Он будет выглядеть следующим образом:

SendMode Input
SetWorkingDir %A_ScriptDir%

CapsLock::Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}

Тут есть директива "Send," с запятой. У тебя она тоже есть с запятой. Тогда как у тебя скрипт находит символ запятой? И почему у тебя нет первых двух строчек?

11

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer, пардон, не до конца внимательно прочитал, что именно нужно было.
Немного подправил - всё работает, как надо.

#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

12 (изменено: Alexey_cake, 2021-10-20 15:52:25)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

А есть необходимость в первых двух строчках?

- "Встретились два одиночества".
Над нами сейчас "тутошние" гуру надорвут живот.

NumpadDot:: ; тут просто создается бинд на клавишу
Send, . ; тут не ищется запятая, вообще ничего не ищется. Просто при нажатии клавиши вставляется необходимый символ, то есть точка.
return

13 (изменено: stuermer, 2021-10-20 17:07:42)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake Понял, спасибо.

14 (изменено: stuermer, 2021-10-20 18:47:29)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake пишет:

stuermer, пардон, не до конца внимательно прочитал, что именно нужно было.
Немного подправил - всё работает, как надо.

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

15 (изменено: stuermer, 2021-10-20 19:33:58)

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake пишет:

А есть необходимость в первых двух строчках?

"SendMode Input" не помешает,
"Send," можно писать без запятой.

16

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer, да, ты прав. Можно обойтись без условия для другого языка, так, как он не фигурирует нигде. Я просто скопировал старый шаблон. Удали просто эти строки, если хочешь.
Цикл тоже был лишний, как оказалось, он тут не нужен.

"SendMode Input" не помешает

Можешь добавить, если хочешь.

"Send," можно писать без запятой.

Можешь убрать запятую, если мешает.

17

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

Alexey_cake пишет:

Цикл тоже был лишний, как оказалось, он тут не нужен.

Директива #Persistent делает его цикличным, я правильно понимаю?

18

Re: AHK: Замена запятой на точку и ввод "і" и "ї" из русской раскладки.

stuermer, в некотором роде.

Если в скрипте нет горячих клавиш или горячих строк, процесс скрипта завершится на Exit или return из раздела автоматического выполнения. Эта директива предотвращает это.