Twente пишет:1) Переназначить клавишу "С" на клавишу "Пробел" в одностороннем порядке.
Space::
Send, {vk43 Down} ; c
KeyWait, Space
Send, {vk43 Up}
Return
Twente пишет:2) Переназначить клавишу"Пробел" на "LCTRL".
LCtrl::
Send, {Space Down}
KeyWait, LCtrl
Send, {Space Up}
Return
Twente пишет:3) Если нажата клавиша "Пробел" (Физическая), то "Стрелка вверх" заменяется на Num8, "Стрелка вниз" заменяется на Num5 и другие стрелки на num соответственно.
4) Если клавиша "Пробел" (Физическая) не нажата, то "Стрелка вверх" это "Стрелка вверх", "Стрелка влево" это "Стрелка влево" и другие стрелки соответсвенно.
6) Переназначение комбинации: "Стрелка вверх + Shift " на "Num8".
[Удерживается] [Нажимается]
Up::
If GetKeyState("Space", "P")
{
Send, {vk68 Down}
KeyWait, Up
Send, {vk68 Up}
Return
}
Send, {vk26 Down}
While GetKeyState("Up", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk26 Up}{vk68 Down}
KeyWait, Shift
Send, {vk68 Up}
Return
}
}
Send, {vk26 Up}
Return
Down::
If GetKeyState("Space", "P")
{
Send, {vk65 Down}
KeyWait, Down
Send, {vk65 Up}
Return
}
Send, {vk28 Down}
While GetKeyState("Down", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk28 Up}{vk65 Down}
KeyWait, Shift
Send, {vk65 Up}
Return
}
}
Send, {vk28 Up}
Return
Left::
If GetKeyState("Space", "P")
{
Send, {vk64 Down}
KeyWait, Left
Send, {vk64 Up}
Return
}
Send, {vk25 Down}
While GetKeyState("Left", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk25 Up}{vk64 Down}
KeyWait, Shift
Send, {vk64 Up}
Return
}
}
Send, {vk25 Up}
Return
Right::
If GetKeyState("Space", "P")
{
Send, {vk66 Down}
KeyWait, Right
Send, {vk66 Up}
Return
}
Send, {vk27 Down}
While GetKeyState("Right", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk27 Up}{vk66 Down}
KeyWait, Shift
Send, {vk66 Up}
Return
}
}
Send, {vk27 Up}
Return
Twente пишет:5) Переназначение комбинации: "Shift + Стрелка вверх, вниз, влево, вправо"на "Num8", "Num5", "Num4", "Num6".
Shift & Up::Send, {vk68 Down}
Shift & Up Up::Send, {vk68 Up}
Shift & Down::Send, {vk65 Down}
Shift & Down Up::Send, {vk65 Up}
Shift & Left::Send, {vk64 Down}
Shift & Left Up::Send, {vk64 Up}
Shift & Right::Send, {vk66 Down}
Shift & Right Up::Send, {vk66 Up}
Twente пишет:7) Переназначение комбинации "(E + стрелка вверх) + Shift" на "Num8",
[Удерживаются вместе] [Нажимается]
а также переназначение других аналогичных комбинаций в зависимости от направления соотвественно (num6, num4, num5).
~vk45 & Up:: ; e
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk68 Down}
}
Return
vk45 & Up Up::Send, {vk68 Up}
~vk45 & Down::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk65 Down}
}
Return
vk45 & Down Up::Send, {vk65 Up}
~vk45 & Left::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk64 Down}
}
Return
vk45 & Left Up::Send, {vk64 Up}
~vk45 & Right::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk66 Down}
}
Return
vk45 & Right Up::Send, {vk66 Up}
В итоге:
#UseHook
SendMode, Input
Return
Space::
Send, {vk43 Down} ; c
KeyWait, Space
Send, {vk43 Up}
Return
LCtrl::
Send, {Space Down}
KeyWait, LCtrl
Send, {Space Up}
Return
Up::
If GetKeyState("Space", "P")
{
Send, {vk68 Down}
KeyWait, Up
Send, {vk68 Up}
Return
}
Send, {vk26 Down}
While GetKeyState("Up", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk26 Up}{vk68 Down}
KeyWait, Shift
Send, {vk68 Up}
Return
}
}
Send, {vk26 Up}
Return
Down::
If GetKeyState("Space", "P")
{
Send, {vk65 Down}
KeyWait, Down
Send, {vk65 Up}
Return
}
Send, {vk28 Down}
While GetKeyState("Down", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk28 Up}{vk65 Down}
KeyWait, Shift
Send, {vk65 Up}
Return
}
}
Send, {vk28 Up}
Return
Left::
If GetKeyState("Space", "P")
{
Send, {vk64 Down}
KeyWait, Left
Send, {vk64 Up}
Return
}
Send, {vk25 Down}
While GetKeyState("Left", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk25 Up}{vk64 Down}
KeyWait, Shift
Send, {vk64 Up}
Return
}
}
Send, {vk25 Up}
Return
Right::
If GetKeyState("Space", "P")
{
Send, {vk66 Down}
KeyWait, Right
Send, {vk66 Up}
Return
}
Send, {vk27 Down}
While GetKeyState("Right", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
{
Send, {vk27 Up}{vk66 Down}
KeyWait, Shift
Send, {vk66 Up}
Return
}
}
Send, {vk27 Up}
Return
Shift & Up::Send, {vk68 Down}
Shift & Up Up::Send, {vk68 Up}
Shift & Down::Send, {vk65 Down}
Shift & Down Up::Send, {vk65 Up}
Shift & Left::Send, {vk64 Down}
Shift & Left Up::Send, {vk64 Up}
Shift & Right::Send, {vk66 Down}
Shift & Right Up::Send, {vk66 Up}
~vk45 & Up:: ; e
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk68 Down}
}
Return
vk45 & Up Up::Send, {vk68 Up}
~vk45 & Down::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk65 Down}
}
Return
vk45 & Down Up::Send, {vk65 Up}
~vk45 & Left::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk64 Down}
}
Return
vk45 & Left Up::Send, {vk64 Up}
~vk45 & Right::
While GetKeyState("vk45", "P")
{
Sleep, 30
If GetKeyState("Shift", "P")
Send, {vk66 Down}
}
Return
vk45 & Right Up::Send, {vk66 Up}
Проверьте скрипт вне целевого приложения, у меня в Notepad/Notepad GNU работает. Если перед строкой с директивой #UseHook пропишите директиву #IfWinActive с правильными параметрами Вашего приложения, то это не помешает . В качестве эксперимента запустите код после самого приложения.