1

Тема: АНК: Переназначение клавиш в разных раскладках

Здравствуйте можно ли сделать чтобы в русской раскладке кнопки выдавало одно, а при смене раскладки в этом же скрипте другое значение? С такими скан кодами не пройдет конечно, но может есть варианты?

Например:


;русская
sc002:: 
send +{sc002}
Return

;меняем раскладку

;английская
sc002:: 
send {,}
Return

--
И 2 как реализовать в скрипте ctrl+r (обновление скрипта) по горячим клавишам?

2 (изменено: Malcev, 2012-03-20 17:20:13)

Re: АНК: Переназначение клавиш в разных раскладках

1) А поиском пользовались?
http://forum.script-coding.com/viewtopi … 245#p56245
2) http://www.autohotkey.com/docs/commands/Reload.htm

3

Re: АНК: Переназначение клавиш в разных раскладках

Поиском пользовался, но результата не нашел нужного. Со вторым отлично спасибо, а с первым так и не понял пока что как пользоваться то собственно? Я не очень силен в коде можно с примером вышеописанного?

If (InputLayout() = "Russian")
sc002:: 
send +{sc002}
Return
If (InputLayout() = "English")
sc002:: 
send {,}
Return
InputLayout()
{
    ThreadID := DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", 0)
    HKL := DllCall("GetKeyboardLayout", "uint", ThreadID, "UShort")
    VarSetCapacity(sKbd, 260, 0)
    DllCall("GetLocaleInfo", "uint", HKL
                           , "uint", 0x1001
                           , "str",  sKbd
                           , "uint", 260)
    Return sKbd
}

Если что то вроде этого, то в 6 строке ошибку выдает, т.к дважды повторяется клавиша одна и та же.

4

Re: АНК: Переназначение клавиш в разных раскладках

#If это директива для задания горячих клавиш работающих при условии истинности выражения указанного после #If

5

Re: АНК: Переназначение клавиш в разных раскладках

Даже если так, то он мне все равно скажет, что скан коды дублируются.

6

Re: АНК: Переназначение клавиш в разных раскладках

Приведите код.

7

Re: АНК: Переназначение клавиш в разных раскладках

Первый и третий пост, вот и весь код. Если это будет дальше и остальные переделаю.

8

Re: АНК: Переназначение клавиш в разных раскладках

Я же написал

#If это директива для задания горячих клавиш работающих при условии истинности выражения указанного после #If

Поставьте перед If знак # - и всё у вас получится.

9

Re: АНК: Переназначение клавиш в разных раскладках

sc002::
    If (InputLayout() = "Russian")
        send +{sc002}
    Else
        send {,}
Return

InputLayout()
{
    ThreadID := DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", 0)
    HKL := DllCall("GetKeyboardLayout", "uint", ThreadID, "UShort")
    VarSetCapacity(sKbd, 260, 0)
    DllCall("GetLocaleInfo", "uint", HKL
                           , "uint", 0x1001
                           , "str",  sKbd
                           , "uint", 260)
    Return sKbd
}

10 (изменено: vezderegit@bk.ru, 2012-03-20 19:05:19)

Re: АНК: Переназначение клавиш в разных раскладках

Код в студию пожалуйста.
Ничего не получается даже если поставить решетку перед if все равно он скажет что скан коды повторяются.

Чуть чуть опоздал в ответе. Интересный вариант последний, надо подумать. А теперь получается так
русский !!
английский ,!

11

Re: АНК: Переназначение клавиш в разных раскладках

#If (InputLayout() = "Russian")
sc002:: 
send +{sc002}
Return
#If (InputLayout() = "English")
sc002:: 
send {,}
Return
InputLayout()
{
    ThreadID := DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", 0)
    HKL := DllCall("GetKeyboardLayout", "uint", ThreadID, "UShort")
    VarSetCapacity(sKbd, 260, 0)
    DllCall("GetLocaleInfo", "uint", HKL
                           , "uint", 0x1001
                           , "str",  sKbd
                           , "uint", 260)
    Return sKbd
}

12

Re: АНК: Переназначение клавиш в разных раскладках

Все ясно, на обычном ахк не запускало, ругался на дублирующую клавишу. С ахк_л все пошло.

13

Re: АНК: Переназначение клавиш в разных раскладках

Ну это я все сделал, а как теперь скомпилировать в exe при помощи AutoHotkey_L ?