Что нового

[Мышь, клавиатура] Как заставить клавишу работать как левый Ctrl?

frostmoth

Новичок
Сообщения
3
Репутация
0
Можно ли с помощью AutoIt при нажатии на клавиатуре клавиши (одной из следующих - Delete, End, Page Down, Num0 или клавиши G13 на A4Tech) "подменять" ее на левый Ctrl (именно левый), чтобы в игре производилось действие, повешенное на этот самый левый Ctrl (работает при удерживании клавиши) и которое невозможно переназначить в игре на другую кнопку? Играю на правой стороне клавиатуры, поэтому жмакать на левый Ctrl не могу.
Программы, предлагаемые на сайте A4Tech, не подошли -Extra Keys Assigner зависает насмерть, а в MKey нет возможности выбрать Ctrl :(
Есть ли такие функции в AutoIt, как называются?
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Если я тебя правильно понял, то тебе нужны функции
Код:
HotKeySet
Send

или это: http://autoit-script.ru/index.php/topic,296.0.html

Сейчас попробую что-то на подобии написать...
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
HotKeySet('{del}','fu1')
While 1
	Sleep(100)
WEnd
Func fu1()
	Send('{lctrl down}')
EndFunc
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Код:
HotKeySet ( "{DELETE}", "_SendLeftCtrl" )
HotKeySet ( "+{ESC}", "_ScriptExit" )

While 1
Sleep (100)
Wend


Func _SendLeftCtrl()
Send ("{LCTRL}")
EndFunc

Func _ScriptExit()
MsgBox(0," ","Выход", 5)
Exit
EndFunc



Добавлено:
Сообщение автоматически объединено:

Немного опоздал :smile:
Ну ладно, Shift + Esc в моем примере - выход из скрипта
При нажатии Delete нажимается Левый CTRL
 
Автор
F

frostmoth

Новичок
Сообщения
3
Репутация
0
вот спасибо :smile: одна проблема - при lctrl down ее надо при повторном нажатии lctrl up ? (просто lctrl, без down, не работает) А как обозначить повторное нажатие? Вот в теме другой нашла пример http://autoit-script.ru/index.php/topic,7424.0.html
он вроде подходит? что значит $hPressed? попробовала, тоже работает только нажатие, а отпускание нет :Lamer:
Код:
#Include <Misc.au3>
 HotKeySet('{del}','fu1')

While 1
    Sleep(100)
WEnd

Func fu1()

$hPressed = 0

    If _IsPressed('2E') Then
        While _IsPressed('2E')
            Sleep(10)
        WEnd
        If $hPressed = 0 Then
            $hPressed = 1
            ConsoleWrite('pressing...')
            Send('{LCTRL DOWN}')
        Else
            $hPressed = 0
            ConsoleWrite('UNpressing...')
            Send('{LCTRL UP}')
		 EndIf
    EndIf
EndFunc
 
Автор
F

frostmoth

Новичок
Сообщения
3
Репутация
0
проблема в том, что не работает LCTRL UP вообще, и клавиша остается зажатой, в любом варианте. :( увы, AutoIt мне не помог, но всем спасибо
пример неработающего отпускания контрола
Код:
HotKeySet("{del}","fu1")
HotKeySet("{end}","fu2")

While 1
Sleep (100)
WEnd

Func fu1()
Send ("{LCTRL DOWN}")
EndFunc

Func fu2()
Send ("{LCTRL UP}")
EndFunc
 

erlik

Продвинутый
Сообщения
317
Репутация
84
frostmoth
А не судьба просто переназначить на время игры LCTRL на любую другую удобную клавишу через remapkey.exe?(входит в стандартный дистрибутив windows - неа только windows server, у меня просто ResourceKit на компе инсталлирован сто лет назад, вот и привык к нему как чему-то стандартному.). Игре по барабану какую кнопку ты жмешь - ей главное нужный скан-код подсунуть.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Потребуется WinAPIEx.au3, но вот эта функция не будет залипать:
Код:
#include-once
#include <WinAPIEx.au3>
;--------------------------------------------------------------
Func Press_Left_CTRL_key_Macross()
	_WinAPI_Keybd_Event ( 0xA2, 0 ) ; Left CTRL key Down
	Sleep(32)
	_WinAPI_Keybd_Event ( 0xA2, 2 ) ; Left CTRL key Up
EndFunc
;--------------------------------------------------------------
 

lemonia

Новичок
Сообщения
126
Репутация
0
А не могли бы Вы изменить код, чтобы вместо р русской (h английской) нажимать Caps Lock?
 
Верх