1 (изменено: Hollisch, 2016-05-06 16:22:00)

Тема: Перемещение клавиш-модификаторов Alt и Shift.

Вроде бы вопрос простой, ответ на него есть как в переведенной справке, но я столкнулся с определенной проблемой. Задача у меня такая - нужно поменять местами клавиши Shift и Alt, и назначить клавише Alt установку значения некой переменной.
В таком варианте замена клавиш работает нормально, нет никаких проблем:

LAlt::LShift
LShift::LAlt

Но мне неизвестно каким образом при такой замене назначить клавише Lshift мою переменную. За сим интересует решение такого вида:

*Lshift::
Send, {LAlt Down}
gdevStateAltMod=1
return

*LShift Up::
Send, {LAlt Up}
gdevStateAltMod=0
return

Но идя по этому пути я столкнулся с рядом проблем, не всегда срабатывает нужный мне алгоритм в дальнейшем, при нажатии на Shift переодически проходит отправка самого Shift-а, и, как я понял, в таком методе, если горячая клавиша зажата - то она отправляется переодически, множественные отправки, которые приводят к сообщению о превышении #MaxHotkeysPerInterval. Каким то образом можно выполнить зажатие без этих повторений? Кроме Keywait, так как он не выполняет строки указанные ниже, мне это не подходит.

Каким образом сделать нормальную, полностью имитирующую обычные нажатия, и 100% рабочую БЕЗ сбоев замену Alt <-> Shift с возможностью добавления своих каких=то функций и пр.?

2

Re: Перемещение клавиш-модификаторов Alt и Shift.

LAlt::LShift
LShift::LAlt
  
#if 1
*LShift::ToolTip % gdevStateAltMod := 1
*LShift Up::ToolTip % gdevStateAltMod := 0
#if
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3 (изменено: Hollisch, 2016-05-18 20:25:12)

Re: Перемещение клавиш-модификаторов Alt и Shift.

Возникла потребность чуть расширить код и столкнулся с проблемой:
При указании нужного окна - перестает выполнятся код, указанный между дерективами #if.
Как сделать что бы работало вместе с #ifwin?


#IfWinActive ahk_class Notepad

LCtrl::LShift
LShift::LCtrl

#if 1
*$LShift::
if !GetKeyState("LAlt","P")
    {
    Send, {F14 Down}
    }
else
    {
    Send, {LCtrl Down}
    }
Keywait, LShift
return

*$LShift Up::
    Send, {LCtrl Up}{F14 Up}
return
#if

4 (изменено: serzh82saratov, 2016-05-18 20:54:40)

Re: Перемещение клавиш-модификаторов Alt и Shift.


#if WinActive("ahk_class Notepad") && 1
*LShift::ToolTip % gdevStateAltMod := 1
*LShift Up::ToolTip % gdevStateAltMod := 0 

#If WinActive("ahk_class Notepad")
LAlt::LShift
LShift::LAlt
#If
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui