Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отслеживание нажатий клавиш на клавиатуре (чтоб узнать код нажатой клавиши)

Ответить
Настройки темы
[решено] Отслеживание нажатий клавиш на клавиатуре (чтоб узнать код нажатой клавиши)

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: beve
Дата: 22-08-2009
Вопрос такой: нужно отслеживать нажатие клавиш на клавиатуре и если какая то клавиша нажата, вывести ее скан код, для примера, в ToolTip. (Хочу потом сделать чтото подобное, что есть у Punto Switcher-a, тоесть чтоб озвучивались нажатые клавиши в русской расскладке - одним звуком, в английской - другим, а в украинском - третьим. ) Есть код CreatoR-а: Ссылка, который я вот немного упростил, чтоб показать что мне нужно:
Код: Выделить весь код
HotKeySet("{ESC}", "OnAutoItExit") 


Global Const $WH_KEYBOARD_LL = 13 
Global $sBuffer = "" 
Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr") 
Global $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0) 
Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", _ 
$WH_KEYBOARD_LL, "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0) 

MsgBox(4096, "", "Type anything anywhere and it will appear in the top left corner of the screen.") 


While 1 
Sleep(10) 
WEnd 


Func EvaluateKey($nKeyCode) 
$sBuffer= Chr($nKeyCode)&" - "&$nKeyCode
ToolTip($sBuffer , 0, 80) 
EndFunc 


Func _KeyProc($nCode, $wParam, $lParam) 
Local $aRet, $KEYHOOKSTRUCT 

If $nCode < 0 Then 
$aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam) 
Return $aRet[0] 
EndIf 

If $wParam = 256 Then 
$KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr", $lParam)

EvaluateKey(DllStructGetData($KEYHOOKSTRUCT, 1)) 
EndIf 

$aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam) 
Return $aRet[0] 
EndFunc 

Func OnAutoItExit() 
If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc) 
$hStub_KeyProc = 0 
DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0]) 
If @HotKeyPressed <> "" Then Exit 
EndFunc
так вот, как изменить этот код, или сделать еще проще, чтоб в ToolTip показывался скан код нажатой клавиши, а то в этом примере отображаются только английские символы и причем в верхнем регистре, даже если нажать - ф, то отображается A.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 00:43, 22-08-2009

 

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата dasksting:
а как можно усовершенствовать скрипт чтобы допусти отслеживать (пробел, кнопки мыши, цифровую клавиатуру) ? второй день сижу не могу догнать, спасайте люди добрые »
Нужно так:
читать дальше »
Код: Выделить весь код
#include <Misc.au3>

HotKeySet("{ESC}", "OnAutoItExit")
_OnStart()

Global Const $WH_KEYBOARD_LL = 13
Global $hStub_KeyProc = DllCallbackRegister("_Key_Proc", "int", "int;ptr;ptr")
Global $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_KEYBOARD_LL, _
    "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0)

MsgBox(4096, "", "Type anything anywhere and it will appear in the top left corner of the screen.")

While 1
    Sleep(100)
WEnd

Func _EvaluateKey_Proc($nKeyCode)
    Local $sSound
    Local $sChar

;MsgBox(64,"код нужной клавиши", $nKeyCode) ;с помощью этого узнаем код нужной нам клавиши

    Switch $nKeyCode
        Case 65 To 90, 48 To 57, 186 To 192, 219, 221, 222, 106 ; проверяться будут только нажатия на буквы и цифры и еще клавиши минус и плюс, что после клавиши 0, а код 106 соответствует клавише *

             Switch _WinGetKeyboardLayout(WinGetHandle("[ACTIVE]"))
                Case 0409 ;Если раскладка английская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aEngShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aEng_Codes)
                    EndIf
                    $sSound = "en.wav"
                    
                Case 0419 ;Если расскладка русская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aRusShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aRus_Codes)
                    EndIf
                    $sSound = "ru.wav"
                    
                Case 0422 ;Если расскладка украинская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aUkrShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aUkr_Codes)
                    EndIf
                    $sSound = "ukr.wav"
            EndSwitch

            ToolTip($sChar & " - " & Asc($sChar), 0, 80)
            SoundPlay($sSound) ;проигрывать звук при нажатии
        Case Else ; если была нажата не буква и не цыфра, то выход из функции
            Return
    EndSwitch
EndFunc

Func _Key_Proc($nCode, $wParam, $lParam)
    Local $aRet, $KEYHOOKSTRUCT

    If $nCode < 0 Then
        $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam)
        Return $aRet[0]
    EndIf

    If $wParam = 256 Then
        $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr", $lParam)
        _EvaluateKey_Proc(DllStructGetData($KEYHOOKSTRUCT, 1))
    EndIf

    $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam)
    Return $aRet[0]
EndFunc

;Функция для замены кодов нажатых клавиш с массива
Func _ReplaceKeyCode_Proc($nKeyCode, $aSearch_Array, $aReplace_Array)
    For $i = 1 To $aSearch_Array[0]
        If $nKeyCode==$aSearch_Array[$i]Then 
            $nKeyCode=Asc($aReplace_Array[$i])
            Return Chr($nKeyCode)
        EndIf
    Next
EndFunc

;функция позволяет узнать язык текущей расскладки клавиатуры
Func _WinGetKeyboardLayout($hWnd)
    Local $aRet = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
    $aRet = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $aRet[0])

    Return "0000" & Hex($aRet[0], 4)
EndFunc

Func OnAutoItExit()
    If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc)
    $hStub_KeyProc = 0
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0])
    If @HotKeyPressed <> "" Then Exit
    EndFunc

func _OnStart()
Local $sCapt_Codes, $sEng_Codes, $sEngShift_Codes, $sRus_Codes, $sRusShift_Codes
Local $sUkr_Codes, $sUkrShift_Codes

Global $aEng_Codes, $aEngShift_Codes, $aRus_Codes, $aRusShift_Codes, $aUkr_Codes, $aUkrShift_Codes

$sEng_Codes = _
                "`qwertyuiop[]asdfghjkl;'zxcvbnm,./" & _
                "1234567890-=*"

$sEngShift_Codes = _
                '~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?' & _
                '!@#$%^&*()_+*'

$sRus_Codes = _
                "ёйцукенгшщзхъфывапролджэячсмитьбю." & _
                "1234567890-=*"

$sRusShift_Codes = _
                'ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,' & _
                '!"№;%:?*()_+*'

$sUkr_Codes = _
                "'йцукеягшщзхЇфівапролджєнчсмитьбю." & _
                "1234567890-=*"

$sUkrShift_Codes = _
                "’ЙЦУКЕЯГШЩЗХЇФІВАПРОЛДЖЄНЧСМИТЬБЮ," & _
                '!"№;%:?*()_+*'
;
Global $aCapture_Codes[48]
;АQWERTYUIOPЫЭASDFGHJKLєЮZXCVBNMјѕї1234567890Ѕ»*
$aCapture_Codes[0]=47 ;общее кол.ячеек массива
$aCapture_Codes[1]=192 ;A
$aCapture_Codes[2]=81 ;Q
$aCapture_Codes[3]=87
$aCapture_Codes[4]=69
$aCapture_Codes[5]=82
$aCapture_Codes[6]=84
$aCapture_Codes[7]=89
$aCapture_Codes[8]=85
$aCapture_Codes[9]=73
$aCapture_Codes[10]=79
$aCapture_Codes[11]=80
$aCapture_Codes[12]=219
$aCapture_Codes[13]=221
$aCapture_Codes[14]=65
$aCapture_Codes[15]=83
$aCapture_Codes[16]=68
$aCapture_Codes[17]=70
$aCapture_Codes[18]=71
$aCapture_Codes[19]=72
$aCapture_Codes[20]=74
$aCapture_Codes[21]=75
$aCapture_Codes[22]=76
$aCapture_Codes[23]=186
$aCapture_Codes[24]=222
$aCapture_Codes[25]=90
$aCapture_Codes[26]=88
$aCapture_Codes[27]=67
$aCapture_Codes[28]=86
$aCapture_Codes[29]=66
$aCapture_Codes[30]=78
$aCapture_Codes[31]=77
$aCapture_Codes[32]=188
$aCapture_Codes[33]=190
$aCapture_Codes[34]=191
$aCapture_Codes[35]=49
$aCapture_Codes[36]=50
$aCapture_Codes[37]=51
$aCapture_Codes[38]=52
$aCapture_Codes[39]=53
$aCapture_Codes[40]=54
$aCapture_Codes[41]=55
$aCapture_Codes[42]=56
$aCapture_Codes[43]=57
$aCapture_Codes[44]=48
$aCapture_Codes[45]=189 $aCapture_Codes[46]=187 $aCapture_Codes[47]=106 ;*
;
$aEng_Codes = StringSplit($sEng_Codes, "")
$aEngShift_Codes = StringSplit($sEngShift_Codes, "")

$aRus_Codes = StringSplit($sRus_Codes, "")
$aRusShift_Codes = StringSplit($sRusShift_Codes, "")

$aUkr_Codes = StringSplit($sUkr_Codes, "")
$aUkrShift_Codes = StringSplit($sUkrShift_Codes, "")
EndFunc

Если ты уже 2 день пытаешся, то думаю поймеш суть, сдесь я добавил клавишу <*>, код которой 106, по аналогии добавиш то что тебе нужно, кроме кнопки мыши конечно... Скрипт наверное можно оптимизировать, но на это нету времени, главное же суть.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 11:07, 02-09-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


обалдеть!!!!! Я бы без тебя вообще бы не разобрался, оказалось все очень даже просто, не думал в этом направлении!!!! СПАСИБО тебе ОГРОМНОЕ!!!

Отправлено: 07:15, 03-09-2010 | #12


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


а допустим смотри, я прописал клавишу Enter, а как сделать чтобы он в тултипе выводил не 1 букву а слово Enter ?

Отправлено: 07:34, 03-09-2010 | #13


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


сделал пока так

Код: Выделить весь код
      if Asc($sChar) = $enter then
				ToolTip("Enter", 0, 80)
			ElseIf Asc($sChar) = $backspace Then
				ToolTip("{BackSpace}", 0, 80)
			ElseIf Asc($sChar) = $space Then
				ToolTip("{Space}", 0, 80)
			ElseIf Asc($sChar) = $tab Then
				ToolTip("{Tab}", 0, 80)
			else
				ToolTip($sChar, 0, 80)
			endif

Отправлено: 08:09, 03-09-2010 | #14


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата dasksting:
сделал пока так »
Если тебе требуется узнавать только название нажатой клавиши, то можно вот так:
Код: Выделить весь код
#include <Misc.au3>

HotKeySet("{ESC}", "OnAutoItExit")
_OnStart()

Global Const $WH_KEYBOARD_LL = 13
Global $hStub_KeyProc = DllCallbackRegister("_Key_Proc", "int", "int;ptr;ptr")
Global $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_KEYBOARD_LL, _
    "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0)

MsgBox(4096, "", "Type anything anywhere and it will appear in the top left corner of the screen.")

While 1
    Sleep(100)
WEnd

Func _EvaluateKey_Proc($nKeyCode)
    Local $sSound
    Local $sChar
;MsgBox(64,Chr($nKeyCode), $nKeyCode, 1) ;с помощью этого узнаем код нужной нам клавиши (только без shift, а то будет зависание)

    Switch $nKeyCode
		Case 65 To 90, 48 To 57, 186 To 192, 219, 221, 222, 106, 13 ; проверяться будут только нажатия на буквы и цифры и еще клавиши минус и плюс, что после клавиши 0, а код 106 соответствует клавише * на цифровой клавиатуре, 13 - код клавиши Enter

             Switch _WinGetKeyboardLayout(WinGetHandle("[ACTIVE]"))
                Case 0409 ;Если раскладка английская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aEngShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aEng_Codes)
                    EndIf
                    $sSound = "en.wav"
                    
                Case 0419 ;Если расскладка русская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aRusShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aRus_Codes)
                    EndIf
                    $sSound = "ru.wav"
                    
                Case 0422 ;Если расскладка украинская
                    If _IsPressed(10) Then ; если нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aUkrShift_Codes)
                    Else ; если не нажата клавиша Shift
                        $sChar=_ReplaceKeyCode_Proc($nKeyCode, $aCapture_Codes, $aUkr_Codes)
                    EndIf
                    $sSound = "ukr.wav"
            EndSwitch

            ToolTip($sChar, 0, 80)
            SoundPlay($sSound) ;проигрывать звук при нажатии
		Case Else ; если была нажата не буква и не цыфра, то выход из функции
			ToolTip("", 0, 80)
            Return
    EndSwitch
EndFunc

Func _Key_Proc($nCode, $wParam, $lParam)
    Local $aRet, $KEYHOOKSTRUCT

    If $nCode < 0 Then
        $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam)
        Return $aRet[0]
    EndIf

    If $wParam = 256 Then
        $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr", $lParam)
        _EvaluateKey_Proc(DllStructGetData($KEYHOOKSTRUCT, 1))
    EndIf

    $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam)
    Return $aRet[0]
EndFunc

;Функция для замены кодов нажатых клавиш с массива
Func _ReplaceKeyCode_Proc($nKeyCode, $aSearch_Array, $aReplace_Array)
    For $i = 1 To $aSearch_Array[0]
        If $nKeyCode==$aSearch_Array[$i]Then 
            Return $aReplace_Array[$i]
        EndIf
    Next
EndFunc

;функция позволяет узнать язык текущей расскладки клавиатуры
Func _WinGetKeyboardLayout($hWnd)
    Local $aRet = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
    $aRet = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $aRet[0])

    Return "0000" & Hex($aRet[0], 4)
EndFunc

Func OnAutoItExit()
    If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc)
    $hStub_KeyProc = 0
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0])
    If @HotKeyPressed <> "" Then Exit
	EndFunc

func _OnStart()
Global $aEng_Codes[49]
$aEng_Codes[0]=48 ;общее количество активных ячеек в массиве
$aEng_Codes[1]="`"
$aEng_Codes[2]="q"
$aEng_Codes[3]="w"
$aEng_Codes[4]="e"
$aEng_Codes[5]="r"
$aEng_Codes[6]="t"
$aEng_Codes[7]="y"
$aEng_Codes[8]="u"
$aEng_Codes[9]="i"
$aEng_Codes[10]="o"
$aEng_Codes[11]="p"
$aEng_Codes[12]="["
$aEng_Codes[13]="]"
$aEng_Codes[14]="a"
$aEng_Codes[15]="s"
$aEng_Codes[16]="d"
$aEng_Codes[17]="f"
$aEng_Codes[18]="g"
$aEng_Codes[19]="h"
$aEng_Codes[20]="j"
$aEng_Codes[21]="k"
$aEng_Codes[22]="l"
$aEng_Codes[23]=";"
$aEng_Codes[24]="'"
$aEng_Codes[25]="z"
$aEng_Codes[26]="x"
$aEng_Codes[27]="c"
$aEng_Codes[28]="v"
$aEng_Codes[29]="b"
$aEng_Codes[30]="n"
$aEng_Codes[31]="m"
$aEng_Codes[32]=","
$aEng_Codes[33]="."
$aEng_Codes[34]="/"
$aEng_Codes[35]="1"
$aEng_Codes[36]="2"
$aEng_Codes[37]="3"
$aEng_Codes[38]="4"
$aEng_Codes[39]="5"
$aEng_Codes[40]="6"
$aEng_Codes[41]="7"
$aEng_Codes[42]="8"
$aEng_Codes[43]="9"
$aEng_Codes[44]="0"
$aEng_Codes[45]="-"
$aEng_Codes[46]="="
$aEng_Codes[47]="*"
$aEng_Codes[48]="Enter"

Global $aEngShift_Codes[49]
$aEngShift_Codes[0]=48
$aEngShift_Codes[1]="~"
$aEngShift_Codes[2]="Q"
$aEngShift_Codes[3]="W"
$aEngShift_Codes[4]="E"
$aEngShift_Codes[5]="R"
$aEngShift_Codes[6]="T"
$aEngShift_Codes[7]="Y"
$aEngShift_Codes[8]="U"
$aEngShift_Codes[9]="I"
$aEngShift_Codes[10]="O"
$aEngShift_Codes[11]="P"
$aEngShift_Codes[12]="{"
$aEngShift_Codes[13]="}"
$aEngShift_Codes[14]="A"
$aEngShift_Codes[15]="S"
$aEngShift_Codes[16]="D"
$aEngShift_Codes[17]="F"
$aEngShift_Codes[18]="G"
$aEngShift_Codes[19]="H"
$aEngShift_Codes[20]="J"
$aEngShift_Codes[21]="K"
$aEngShift_Codes[22]="L"
$aEngShift_Codes[23]=":"
$aEngShift_Codes[24]='"'
$aEngShift_Codes[25]="Z"
$aEngShift_Codes[26]="X"
$aEngShift_Codes[27]="C"
$aEngShift_Codes[28]="V"
$aEngShift_Codes[29]="B"
$aEngShift_Codes[30]="N"
$aEngShift_Codes[31]="M"
$aEngShift_Codes[32]="<"
$aEngShift_Codes[33]=">"
$aEngShift_Codes[34]="?"
$aEngShift_Codes[35]="!"
$aEngShift_Codes[36]="@"
$aEngShift_Codes[37]="#"
$aEngShift_Codes[38]="$"
$aEngShift_Codes[39]="%"
$aEngShift_Codes[40]="^"
$aEngShift_Codes[41]="&"
$aEngShift_Codes[42]="*"
$aEngShift_Codes[43]="("
$aEngShift_Codes[44]=")"
$aEngShift_Codes[45]="_"
$aEngShift_Codes[46]="+"
$aEngShift_Codes[47]="*"
$aEngShift_Codes[48]="Enter"


Global $aRus_Codes[49]
$aRus_Codes[0]=48
$aRus_Codes[1]="ё"
$aRus_Codes[2]="й"
$aRus_Codes[3]="ц"
$aRus_Codes[4]="у"
$aRus_Codes[5]="к"
$aRus_Codes[6]="е"
$aRus_Codes[7]="н"
$aRus_Codes[8]="г"
$aRus_Codes[9]="ш"
$aRus_Codes[10]="щ"
$aRus_Codes[11]="з"
$aRus_Codes[12]="х"
$aRus_Codes[13]="ъ"
$aRus_Codes[14]="ф"
$aRus_Codes[15]="ы"
$aRus_Codes[16]="в"
$aRus_Codes[17]="а"
$aRus_Codes[18]="п"
$aRus_Codes[19]="р"
$aRus_Codes[20]="о"
$aRus_Codes[21]="л"
$aRus_Codes[22]="д"
$aRus_Codes[23]="ж"
$aRus_Codes[24]="э"
$aRus_Codes[25]="я"
$aRus_Codes[26]="ч"
$aRus_Codes[27]="с"
$aRus_Codes[28]="м"
$aRus_Codes[29]="и"
$aRus_Codes[30]="т"
$aRus_Codes[31]="ь"
$aRus_Codes[32]="б"
$aRus_Codes[33]="ю"
$aRus_Codes[34]="."
$aRus_Codes[35]="1"
$aRus_Codes[36]="2"
$aRus_Codes[37]="3"
$aRus_Codes[38]="4"
$aRus_Codes[39]="5"
$aRus_Codes[40]="6"
$aRus_Codes[41]="7"
$aRus_Codes[42]="8"
$aRus_Codes[43]="9"
$aRus_Codes[44]="0"
$aRus_Codes[45]="-"
$aRus_Codes[46]="="
$aRus_Codes[47]="*"
$aRus_Codes[48]="Enter"

Global $aRusShift_Codes[49]
$aRusShift_Codes[0]=48
$aRusShift_Codes[1]="Ё"
$aRusShift_Codes[2]="Й"
$aRusShift_Codes[3]="Ц"
$aRusShift_Codes[4]="У"
$aRusShift_Codes[5]="К"
$aRusShift_Codes[6]="Е"
$aRusShift_Codes[7]="Н"
$aRusShift_Codes[8]="Г"
$aRusShift_Codes[9]="Ш"
$aRusShift_Codes[10]="Щ"
$aRusShift_Codes[11]="З"
$aRusShift_Codes[12]="Х"
$aRusShift_Codes[13]="Ъ"
$aRusShift_Codes[14]="Ф"
$aRusShift_Codes[15]="Ы"
$aRusShift_Codes[16]="В"
$aRusShift_Codes[17]="А"
$aRusShift_Codes[18]="П"
$aRusShift_Codes[19]="Р"
$aRusShift_Codes[20]="О"
$aRusShift_Codes[21]="Л"
$aRusShift_Codes[22]="Д"
$aRusShift_Codes[23]="Ж"
$aRusShift_Codes[24]="Э"
$aRusShift_Codes[25]="Я"
$aRusShift_Codes[26]="Ч"
$aRusShift_Codes[27]="С"
$aRusShift_Codes[28]="М"
$aRusShift_Codes[29]="И"
$aRusShift_Codes[30]="Т"
$aRusShift_Codes[31]="Ь"
$aRusShift_Codes[32]="Б"
$aRusShift_Codes[33]="Ю"
$aRusShift_Codes[34]=","
$aRusShift_Codes[35]="!"
$aRusShift_Codes[36]='"'
$aRusShift_Codes[37]="№"
$aRusShift_Codes[38]=";"
$aRusShift_Codes[39]="%"
$aRusShift_Codes[40]=":"
$aRusShift_Codes[41]="?"
$aRusShift_Codes[42]="*"
$aRusShift_Codes[43]="("
$aRusShift_Codes[44]=")"
$aRusShift_Codes[45]="_"
$aRusShift_Codes[46]="+"
$aRusShift_Codes[47]="*"
$aRusShift_Codes[48]="Enter"

Global $aUkr_Codes[49]
$aUkr_Codes[0]=48
$aUkr_Codes[1]="'"
$aUkr_Codes[2]="й"
$aUkr_Codes[3]="ц"
$aUkr_Codes[4]="у"
$aUkr_Codes[5]="к"
$aUkr_Codes[6]="е"
$aUkr_Codes[7]="я"
$aUkr_Codes[8]="г"
$aUkr_Codes[9]="ш"
$aUkr_Codes[10]="щ"
$aUkr_Codes[11]="з"
$aUkr_Codes[12]="х"
$aUkr_Codes[13]="ї"
$aUkr_Codes[14]="ф"
$aUkr_Codes[15]="і"
$aUkr_Codes[16]="в"
$aUkr_Codes[17]="а"
$aUkr_Codes[18]="п"
$aUkr_Codes[19]="р"
$aUkr_Codes[20]="о"
$aUkr_Codes[21]="л"
$aUkr_Codes[22]="д"
$aUkr_Codes[23]="ж"
$aUkr_Codes[24]="є"
$aUkr_Codes[25]="н"
$aUkr_Codes[26]="ч"
$aUkr_Codes[27]="с"
$aUkr_Codes[28]="м"
$aUkr_Codes[29]="и"
$aUkr_Codes[30]="т"
$aUkr_Codes[31]="ь"
$aUkr_Codes[32]="б"
$aUkr_Codes[33]="ю"
$aUkr_Codes[34]="."
$aUkr_Codes[35]="1"
$aUkr_Codes[36]="2"
$aUkr_Codes[37]="3"
$aUkr_Codes[38]="4"
$aUkr_Codes[39]="5"
$aUkr_Codes[40]="6"
$aUkr_Codes[41]="7"
$aUkr_Codes[42]="8"
$aUkr_Codes[43]="9"
$aUkr_Codes[44]="0"
$aUkr_Codes[45]="-"
$aUkr_Codes[46]="="
$aUkr_Codes[47]="*"
$aUkr_Codes[48]="Enter"


Global $aUkrShift_Codes[49]
$aUkrShift_Codes[0]=48
$aUkrShift_Codes[1]="’"
$aUkrShift_Codes[2]="Й"
$aUkrShift_Codes[3]="Ц"
$aUkrShift_Codes[4]="У"
$aUkrShift_Codes[5]="К"
$aUkrShift_Codes[6]="Е"
$aUkrShift_Codes[7]="Я"
$aUkrShift_Codes[8]="Г"
$aUkrShift_Codes[9]="Ш"
$aUkrShift_Codes[10]="Щ"
$aUkrShift_Codes[11]="З"
$aUkrShift_Codes[12]="Х"
$aUkrShift_Codes[13]="Ї"
$aUkrShift_Codes[14]="Ф"
$aUkrShift_Codes[15]="І"
$aUkrShift_Codes[16]="В"
$aUkrShift_Codes[17]="А"
$aUkrShift_Codes[18]="П"
$aUkrShift_Codes[19]="Р"
$aUkrShift_Codes[20]="О"
$aUkrShift_Codes[21]="Л"
$aUkrShift_Codes[22]="Д"
$aUkrShift_Codes[23]="Ж"
$aUkrShift_Codes[24]="Є"
$aUkrShift_Codes[25]="Н"
$aUkrShift_Codes[26]="Ч"
$aUkrShift_Codes[27]="С"
$aUkrShift_Codes[28]="М"
$aUkrShift_Codes[29]="И"
$aUkrShift_Codes[30]="Т"
$aUkrShift_Codes[31]="Ь"
$aUkrShift_Codes[32]="Б"
$aUkrShift_Codes[33]="Ю"
$aUkrShift_Codes[34]=","
$aUkrShift_Codes[35]="!"
$aUkrShift_Codes[36]='"'
$aUkrShift_Codes[37]="№"
$aUkrShift_Codes[38]=";"
$aUkrShift_Codes[39]="%"
$aUkrShift_Codes[40]=":"
$aUkrShift_Codes[41]="?"
$aUkrShift_Codes[42]="*"
$aUkrShift_Codes[43]="("
$aUkrShift_Codes[44]=")"
$aUkrShift_Codes[45]="_"
$aUkrShift_Codes[46]="+"
$aUkrShift_Codes[47]="*"
$aUkrShift_Codes[48]="Enter"
;
Global $aCapture_Codes[49]
$aCapture_Codes[0]=48 ;общее кол. акт. ячеек массива
$aCapture_Codes[1]=192
$aCapture_Codes[2]=81 
$aCapture_Codes[3]=87
$aCapture_Codes[4]=69
$aCapture_Codes[5]=82
$aCapture_Codes[6]=84
$aCapture_Codes[7]=89
$aCapture_Codes[8]=85
$aCapture_Codes[9]=73
$aCapture_Codes[10]=79
$aCapture_Codes[11]=80
$aCapture_Codes[12]=219
$aCapture_Codes[13]=221
$aCapture_Codes[14]=65
$aCapture_Codes[15]=83
$aCapture_Codes[16]=68
$aCapture_Codes[17]=70
$aCapture_Codes[18]=71
$aCapture_Codes[19]=72
$aCapture_Codes[20]=74
$aCapture_Codes[21]=75
$aCapture_Codes[22]=76
$aCapture_Codes[23]=186
$aCapture_Codes[24]=222
$aCapture_Codes[25]=90
$aCapture_Codes[26]=88
$aCapture_Codes[27]=67
$aCapture_Codes[28]=86
$aCapture_Codes[29]=66
$aCapture_Codes[30]=78
$aCapture_Codes[31]=77
$aCapture_Codes[32]=188
$aCapture_Codes[33]=190
$aCapture_Codes[34]=191
$aCapture_Codes[35]=49
$aCapture_Codes[36]=50
$aCapture_Codes[37]=51
$aCapture_Codes[38]=52
$aCapture_Codes[39]=53
$aCapture_Codes[40]=54
$aCapture_Codes[41]=55
$aCapture_Codes[42]=56
$aCapture_Codes[43]=57
$aCapture_Codes[44]=48
$aCapture_Codes[45]=189
$aCapture_Codes[46]=187
$aCapture_Codes[47]=106 ;* на цифровой клавиатуре
$aCapture_Codes[48]=13 ;Код клавиши Enter
EndFunc

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 15:06, 03-09-2010 | #15


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


У меня почему то всеровно с цифровой клавиатуры набор не идёт, не могу понять как сделать, какие кода символов...

-------
Автоматизация прежде всего....


Отправлено: 10:17, 21-02-2011 | #16


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


beve
Что то не пойму через что он цикл проверки крутит Там же голый цикл со слипом и функции Через что эти функции вызывваются?

Отправлено: 01:54, 23-03-2015 | #17


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата RRAVSS:
Через что эти функции вызывваются? »
Цитата beve:
Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_KEYBOARD_LL, _
"ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0) »
SetWindowsHookEx function (Windows)

Отправлено: 02:14, 23-03-2015 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отслеживание нажатий клавиш на клавиатуре (чтоб узнать код нажатой клавиши)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Какая разница между пирамидальной и обычной раскладкой клавиш на клавиатуре? Sev Флейм 2 17-02-2009 12:01
[решено] Горячие клавиши на Клавиатуре. krema Хочу все знать 2 04-02-2009 22:52
Как назначить кнопкам джойстика функцию нажатой клавиши на клаве. spiritmen Игры 4 05-06-2007 13:44




 
Переход