Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
KeyCode
- Упрощает работу с отловом клавиш.
- Пригодиться, если все время лень заходить сюда.
- Из очень полезного есть два массива, один со всеми клавишами, другой с названиями.
- С помощью этих двух массивов можно очень легко сделать сменяемые хоткеи на фреймы, например.
- Только ради этого и сделана эта наработка...
Код
KeyMain
library KeyLibrary

    struct KeyCode
        
        // Mouse
        static integer LMB  = 0x01 
        static integer RMB  = 0x02 
        static integer MMB  = 0x04
        static integer X1MB = 0x05
        static integer X2MB = 0x06
        
        // Keyboard misc
        static integer Backspace   = 0x08
        static integer Clear       = 0x0C // (?)
        static integer Enter       = 0x0D
        static integer Shift       = 0x10
        static integer CTRL        = 0x11
        static integer ALT         = 0x12
        static integer Pause       = 0x13
        static integer CapsLock    = 0x14
        static integer Esc         = 0x1B
        static integer Space       = 0x20
        static integer PageUp      = 0x21
        static integer PageDown    = 0x22
        static integer End         = 0x23
        static integer Home        = 0x24
        static integer LeftArrow   = 0x25
        static integer UpArrow     = 0x26
        static integer RightArrow  = 0x27
        static integer DownArrow   = 0x28
        static integer Select      = 0x29
        static integer Print       = 0x2A
        static integer Execute     = 0x2B
        static integer PrintScreen = 0x2C
        static integer Insert      = 0x2D
        static integer Delete      = 0x2E
        static integer Help        = 0x2F
        static integer LeftWin     = 0x5B
        static integer RightWin    = 0x5C
        static integer App         = 0x5D
        static integer SleepKey    = 0x5F
        static integer ScrollLock  = 0x91
        static integer LeftShift   = 0xA0
        static integer RightShift  = 0xA1
        static integer LeftCTRL    = 0xA2
        static integer RightCTRL   = 0xA3
        static integer LeftMenu    = 0xA4
        static integer RightMenu   = 0xA5
        
        // Numbers
        static integer Key0 = 0x30
        static integer Key1 = 0x31
        static integer Key2 = 0x32
        static integer Key3 = 0x33
        static integer Key4 = 0x34
        static integer Key5 = 0x35
        static integer Key6 = 0x36
        static integer Key7 = 0x37
        static integer Key8 = 0x38
        static integer Key9 = 0x39
        
        // Letters
        static integer A = 0x41
        static integer B = 0x42
        static integer C = 0x43
        static integer D = 0x44
        static integer E = 0x45
        static integer F = 0x46
        static integer G = 0x47
        static integer H = 0x48
        static integer I = 0x49
        static integer J = 0x4A
        static integer K = 0x4B
        static integer L = 0x4C
        static integer M = 0x4D
        static integer N = 0x4E
        static integer O = 0x4F
        static integer P = 0x50
        static integer Q = 0x51
        static integer R = 0x52
        static integer S = 0x53
        static integer T = 0x54
        static integer U = 0x55
        static integer V = 0x56
        static integer W = 0x57
        static integer X = 0x58
        static integer Y = 0x59
        static integer Z = 0x5A
        
        // Numpad
        static integer Num0 = 0x60
        static integer Num1 = 0x61
        static integer Num2 = 0x62
        static integer Num3 = 0x63
        static integer Num4 = 0x64
        static integer Num5 = 0x65
        static integer Num6 = 0x66
        static integer Num7 = 0x67
        static integer Num8 = 0x68
        static integer Num9 = 0x69
        static integer Multiply  = 0x6A
        static integer Add       = 0x6B
        static integer Separator = 0x6C
        static integer Subtract  = 0x6D
        static integer Decimal   = 0x6E
        static integer Divide    = 0x6F
        static integer NumLock   = 0x90
        
        // FKeys
        static integer F1    = 0x70
        static integer F2    = 0x71
        static integer F3    = 0x72
        static integer F4    = 0x73
        static integer F5    = 0x74
        static integer F6    = 0x75
        static integer F7    = 0x76
        static integer F8    = 0x77
        static integer F9    = 0x78
        static integer F10   = 0x79
        static integer F11   = 0x7A
        static integer F12   = 0x7B
        static integer F13   = 0x7C
        static integer F14   = 0x7D
        static integer F15   = 0x7E
        static integer F16   = 0x7F
        static integer F17   = 0x80
        static integer F18   = 0x81
        static integer F19   = 0x82
        static integer F20   = 0x83
        static integer F21   = 0x84
        static integer F22   = 0x85
        static integer F23   = 0x86
        static integer F24   = 0x87
        
        // IME
        static integer IMEKana       = 0x15 // Hanguel, Hangul
        static integer IMEOn         = 0x16
        static integer IMEJunja      = 0x17
        static integer IMEFinal      = 0x18
        static integer IMEHanja      = 0x19 // Kanji
        static integer IMEOff        = 0x1A
        static integer IMEConvert    = 0x1C
        static integer IMENonConvert = 0x1D
        static integer IMEAccept     = 0x1E
        static integer IMEModeChange = 0x1F
                
        // Browser
        static integer BrowserBack      = 0xA6
        static integer BrowserForward   = 0xA7
        static integer BrowserRefresh   = 0xA8
        static integer BrowserStop      = 0xA9
        static integer BrowserSearch    = 0xAA
        static integer BrowserFavorites = 0xAB
        static integer BrowserHome      = 0xAC // Browser Start and Home key
        
        // Keyboard Advance
        static integer VolumeMute        = 0xAD
        static integer VolumeDown        = 0xAE
        static integer VolumeUp          = 0xAF
        static integer NextTrack         = 0xB0
        static integer PrevTrack         = 0xB1
        static integer StopMedia         = 0xB2
        static integer PlayPauseMedia    = 0xB3
        static integer StartMail         = 0xB4
        static integer SelectMedia       = 0xB5
        static integer StartApplication1 = 0xB6
        static integer StartApplication2 = 0xB7
        
    endstruct
    
    globals
    
        integer array Buttons[146]
        string array  ButtonsNames[146]
        
    endglobals
    
    function KeyLibInit takes nothing returns nothing
        
        set Buttons[0] = KeyCode.LMB
        set Buttons[1] = KeyCode.RMB
        set Buttons[2] = KeyCode.MMB
        set Buttons[3] = KeyCode.X1MB
        set Buttons[4] = KeyCode.X2MB
        set Buttons[5] = KeyCode.Backspace
        set Buttons[6] = KeyCode.Clear
        set Buttons[7] = KeyCode.Enter
        set Buttons[8] = KeyCode.Shift
        set Buttons[9] = KeyCode.CTRL
        set Buttons[10] = KeyCode.ALT
        set Buttons[11] = KeyCode.Pause
        set Buttons[12] = KeyCode.CapsLock
        set Buttons[13] = KeyCode.Esc
        set Buttons[14] = KeyCode.Space
        set Buttons[15] = KeyCode.PageUp
        set Buttons[16] = KeyCode.PageDown
        set Buttons[17] = KeyCode.End
        set Buttons[18] = KeyCode.Home
        set Buttons[19] = KeyCode.LeftArrow
        set Buttons[20] = KeyCode.UpArrow
        set Buttons[21] = KeyCode.RightArrow
        set Buttons[22] = KeyCode.DownArrow
        set Buttons[23] = KeyCode.Select
        set Buttons[24] = KeyCode.Print
        set Buttons[25] = KeyCode.Execute
        set Buttons[26] = KeyCode.PrintScreen
        set Buttons[27] = KeyCode.Insert
        set Buttons[28] = KeyCode.Delete
        set Buttons[29] = KeyCode.Help
        set Buttons[30] = KeyCode.LeftWin
        set Buttons[31] = KeyCode.RightWin
        set Buttons[32] = KeyCode.App
        set Buttons[33] = KeyCode.SleepKey
        set Buttons[34] = KeyCode.ScrollLock
        set Buttons[35] = KeyCode.LeftShift
        set Buttons[36] = KeyCode.RightShift
        set Buttons[37] = KeyCode.LeftCTRL
        set Buttons[38] = KeyCode.RightCTRL
        set Buttons[39] = KeyCode.LeftMenu
        set Buttons[40] = KeyCode.RightMenu
        set Buttons[41] = KeyCode.Key0
        set Buttons[42] = KeyCode.Key1
        set Buttons[43] = KeyCode.Key2
        set Buttons[44] = KeyCode.Key3
        set Buttons[45] = KeyCode.Key4
        set Buttons[46] = KeyCode.Key5
        set Buttons[47] = KeyCode.Key6
        set Buttons[48] = KeyCode.Key7
        set Buttons[49] = KeyCode.Key8
        set Buttons[50] = KeyCode.Key9
        set Buttons[51] = KeyCode.A
        set Buttons[52] = KeyCode.B
        set Buttons[53] = KeyCode.C
        set Buttons[54] = KeyCode.D
        set Buttons[55] = KeyCode.E
        set Buttons[56] = KeyCode.F
        set Buttons[57] = KeyCode.G
        set Buttons[58] = KeyCode.H
        set Buttons[59] = KeyCode.I
        set Buttons[60] = KeyCode.J
        set Buttons[61] = KeyCode.K
        set Buttons[62] = KeyCode.L
        set Buttons[63] = KeyCode.M
        set Buttons[64] = KeyCode.N
        set Buttons[65] = KeyCode.O
        set Buttons[66] = KeyCode.P
        set Buttons[67] = KeyCode.Q
        set Buttons[68] = KeyCode.R
        set Buttons[69] = KeyCode.S
        set Buttons[70] = KeyCode.T
        set Buttons[71] = KeyCode.U
        set Buttons[72] = KeyCode.V
        set Buttons[73] = KeyCode.W
        set Buttons[74] = KeyCode.X
        set Buttons[75] = KeyCode.Y
        set Buttons[76] = KeyCode.Z
        set Buttons[77] = KeyCode.Num0
        set Buttons[78] = KeyCode.Num1
        set Buttons[79] = KeyCode.Num2
        set Buttons[80] = KeyCode.Num3
        set Buttons[81] = KeyCode.Num4
        set Buttons[82] = KeyCode.Num5
        set Buttons[83] = KeyCode.Num6
        set Buttons[84] = KeyCode.Num7
        set Buttons[85] = KeyCode.Num8
        set Buttons[86] = KeyCode.Num9
        set Buttons[87] = KeyCode.Multiply
        set Buttons[88] = KeyCode.Add
        set Buttons[89] = KeyCode.Separator
        set Buttons[90] = KeyCode.Subtract
        set Buttons[91] = KeyCode.Decimal
        set Buttons[92] = KeyCode.Divide
        set Buttons[93] = KeyCode.NumLock
        set Buttons[94] = KeyCode.F1
        set Buttons[95] = KeyCode.F2
        set Buttons[96] = KeyCode.F3
        set Buttons[97] = KeyCode.F4
        set Buttons[98] = KeyCode.F5
        set Buttons[99] = KeyCode.F6
        set Buttons[100] = KeyCode.F7
        set Buttons[101] = KeyCode.F8
        set Buttons[102] = KeyCode.F9
        set Buttons[103] = KeyCode.F10
        set Buttons[104] = KeyCode.F11
        set Buttons[105] = KeyCode.F12
        set Buttons[106] = KeyCode.F13
        set Buttons[107] = KeyCode.F14
        set Buttons[108] = KeyCode.F15
        set Buttons[109] = KeyCode.F16
        set Buttons[110] = KeyCode.F17
        set Buttons[111] = KeyCode.F18
        set Buttons[112] = KeyCode.F19
        set Buttons[113] = KeyCode.F20
        set Buttons[114] = KeyCode.F21
        set Buttons[115] = KeyCode.F22
        set Buttons[116] = KeyCode.F23
        set Buttons[117] = KeyCode.F24
        set Buttons[118] = KeyCode.IMEKana
        set Buttons[119] = KeyCode.IMEOn
        set Buttons[120] = KeyCode.IMEJunja
        set Buttons[121] = KeyCode.IMEFinal
        set Buttons[122] = KeyCode.IMEHanja
        set Buttons[123] = KeyCode.IMEOff
        set Buttons[124] = KeyCode.IMEConvert
        set Buttons[125] = KeyCode.IMENonConvert
        set Buttons[126] = KeyCode.IMEAccept
        set Buttons[127] = KeyCode.IMEModeChange
        set Buttons[128] = KeyCode.BrowserBack
        set Buttons[129] = KeyCode.BrowserForward
        set Buttons[130] = KeyCode.BrowserRefresh
        set Buttons[131] = KeyCode.BrowserStop
        set Buttons[132] = KeyCode.BrowserSearch
        set Buttons[133] = KeyCode.BrowserFavorites
        set Buttons[134] = KeyCode.BrowserHome
        set Buttons[135] = KeyCode.VolumeMute
        set Buttons[136] = KeyCode.VolumeDown
        set Buttons[137] = KeyCode.VolumeUp
        set Buttons[138] = KeyCode.NextTrack
        set Buttons[139] = KeyCode.PrevTrack
        set Buttons[140] = KeyCode.StopMedia
        set Buttons[141] = KeyCode.PlayPauseMedia
        set Buttons[142] = KeyCode.StartMail
        set Buttons[143] = KeyCode.SelectMedia
        set Buttons[144] = KeyCode.StartApplication1
        set Buttons[145] = KeyCode.StartApplication2
        
        set ButtonsNames[0] = "LMB"
        set ButtonsNames[1] = "RMB"
        set ButtonsNames[2] = "MMB"
        set ButtonsNames[3] = "X1MB"
        set ButtonsNames[4] = "X2MB"
        set ButtonsNames[5] = "Backspace"
        set ButtonsNames[6] = "Clear"
        set ButtonsNames[7] = "Enter"
        set ButtonsNames[8] = "Shift"
        set ButtonsNames[9] = "CTRL"
        set ButtonsNames[10] = "ALT"
        set ButtonsNames[11] = "Pause"
        set ButtonsNames[12] = "CapsLock"
        set ButtonsNames[13] = "Esc"
        set ButtonsNames[14] = "Space"
        set ButtonsNames[15] = "PageUp"
        set ButtonsNames[16] = "PageDown"
        set ButtonsNames[17] = "End"
        set ButtonsNames[18] = "Home"
        set ButtonsNames[19] = "LeftArrow"
        set ButtonsNames[20] = "UpArrow"
        set ButtonsNames[21] = "RightArrow"
        set ButtonsNames[22] = "DownArrow"
        set ButtonsNames[23] = "Select"
        set ButtonsNames[24] = "Print"
        set ButtonsNames[25] = "Execute"
        set ButtonsNames[26] = "PrintScreen"
        set ButtonsNames[27] = "Insert"
        set ButtonsNames[28] = "Delete"
        set ButtonsNames[29] = "Help"
        set ButtonsNames[30] = "LeftWin"
        set ButtonsNames[31] = "RightWin"
        set ButtonsNames[32] = "App"
        set ButtonsNames[33] = "SleepKey"
        set ButtonsNames[34] = "ScrollLock"
        set ButtonsNames[35] = "LeftShift"
        set ButtonsNames[36] = "RightShift"
        set ButtonsNames[37] = "LeftCTRL"
        set ButtonsNames[38] = "RightCTRL"
        set ButtonsNames[39] = "LeftMenu"
        set ButtonsNames[40] = "RightMenu"
        set ButtonsNames[41] = "Key0"
        set ButtonsNames[42] = "Key1"
        set ButtonsNames[43] = "Key2"
        set ButtonsNames[44] = "Key3"
        set ButtonsNames[45] = "Key4"
        set ButtonsNames[46] = "Key5"
        set ButtonsNames[47] = "Key6"
        set ButtonsNames[48] = "Key7"
        set ButtonsNames[49] = "Key8"
        set ButtonsNames[50] = "Key9"
        set ButtonsNames[51] = "A"
        set ButtonsNames[52] = "B"
        set ButtonsNames[53] = "C"
        set ButtonsNames[54] = "D"
        set ButtonsNames[55] = "E"
        set ButtonsNames[56] = "F"
        set ButtonsNames[57] = "G"
        set ButtonsNames[58] = "H"
        set ButtonsNames[59] = "I"
        set ButtonsNames[60] = "J"
        set ButtonsNames[61] = "K"
        set ButtonsNames[62] = "L"
        set ButtonsNames[63] = "M"
        set ButtonsNames[64] = "N"
        set ButtonsNames[65] = "O"
        set ButtonsNames[66] = "P"
        set ButtonsNames[67] = "Q"
        set ButtonsNames[68] = "R"
        set ButtonsNames[69] = "S"
        set ButtonsNames[70] = "T"
        set ButtonsNames[71] = "U"
        set ButtonsNames[72] = "V"
        set ButtonsNames[73] = "W"
        set ButtonsNames[74] = "X"
        set ButtonsNames[75] = "Y"
        set ButtonsNames[76] = "Z"
        set ButtonsNames[77] = "Num0"
        set ButtonsNames[78] = "Num1"
        set ButtonsNames[79] = "Num2"
        set ButtonsNames[80] = "Num3"
        set ButtonsNames[81] = "Num4"
        set ButtonsNames[82] = "Num5"
        set ButtonsNames[83] = "Num6"
        set ButtonsNames[84] = "Num7"
        set ButtonsNames[85] = "Num8"
        set ButtonsNames[86] = "Num9"
        set ButtonsNames[87] = "*"
        set ButtonsNames[88] = "+"
        set ButtonsNames[89] = "\\"
        set ButtonsNames[90] = "-"
        set ButtonsNames[91] = "."
        set ButtonsNames[92] = "/"
        set ButtonsNames[93] = "NumLock"
        set ButtonsNames[94] = "F1"
        set ButtonsNames[95] = "F2"
        set ButtonsNames[96] = "F3"
        set ButtonsNames[97] = "F4"
        set ButtonsNames[98] = "F5"
        set ButtonsNames[99] = "F6"
        set ButtonsNames[100] = "F7"
        set ButtonsNames[101] = "F8"
        set ButtonsNames[102] = "F9"
        set ButtonsNames[103] = "F10"
        set ButtonsNames[104] = "F11"
        set ButtonsNames[105] = "F12"
        set ButtonsNames[106] = "F13"
        set ButtonsNames[107] = "F14"
        set ButtonsNames[108] = "F15"
        set ButtonsNames[109] = "F16"
        set ButtonsNames[110] = "F17"
        set ButtonsNames[111] = "F18"
        set ButtonsNames[112] = "F19"
        set ButtonsNames[113] = "F20"
        set ButtonsNames[114] = "F21"
        set ButtonsNames[115] = "F22"
        set ButtonsNames[116] = "F23"
        set ButtonsNames[117] = "F24"
        set ButtonsNames[118] = "IMEKana"
        set ButtonsNames[119] = "IMEOn"
        set ButtonsNames[120] = "IMEJunja"
        set ButtonsNames[121] = "IMEFinal"
        set ButtonsNames[122] = "IMEHanja"
        set ButtonsNames[123] = "IMEOff"
        set ButtonsNames[124] = "IMEConvert"
        set ButtonsNames[125] = "IMENonConvert"
        set ButtonsNames[126] = "IMEAccept"
        set ButtonsNames[127] = "IMEModeChange"
        set ButtonsNames[128] = "BrowserBack"
        set ButtonsNames[129] = "BrowserForward"
        set ButtonsNames[130] = "BrowserRefresh"
        set ButtonsNames[131] = "BrowserStop"
        set ButtonsNames[132] = "BrowserSearch"
        set ButtonsNames[133] = "BrowserFavorites"
        set ButtonsNames[134] = "BrowserHome"
        set ButtonsNames[135] = "VolumeMute"
        set ButtonsNames[136] = "VolumeDown"
        set ButtonsNames[137] = "VolumeUp"
        set ButtonsNames[138] = "NextTrack"
        set ButtonsNames[139] = "PrevTrack"
        set ButtonsNames[140] = "StopMedia"
        set ButtonsNames[141] = "PlayPauseMedia"
        set ButtonsNames[142] = "StartMail"
        set ButtonsNames[143] = "SelectMedia"
        set ButtonsNames[144] = "StartApplication1"
        set ButtonsNames[145] = "StartApplication2"
        
    endfunction
    
    function ButtonToName takes integer but returns string
    
        local integer i = 0
        
        loop
        exitwhen i == 146
        
        if Buttons[i] == but then
            return ButtonsNames[i]
        endif
        
        set i = i + 1
        endloop
        
        return ""
    
    endfunction
    
    //===========================================================================
    function InitTrig_KeyMain takes nothing returns nothing
        set gg_trg_KeyMain = CreateTrigger(  )
        call KeyLibInit()
    endfunction

endlibrary
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
13
3 года назад
0
А есть кнопка или действие обозначающее что кнопка не зажата?
2
22
3 года назад
2
Блин, этот функционал был, но я его вырезал из-за ненадобности.
Делается ещё один массив, уже булевых, ну и в ините заполняется false.
И дальше какая нибудь функция с периодическим срабатыванием проверяет циклом все кнопки.
IsKeyPressed(Buttons[i])
Если тру, то и переменная из массива тру, фолс > фолс.
0
15
2 года назад
0
ofeerist, тут явно надо юзать RenderEdge_mini.dll, потому что 100+ раз вызывать IsKeyPressed с низким периодиком будет очень дорого по производительности.
Наработка полезная, спасибо.
0
25
2 года назад
Отредактирован Jack-of-shadow
0
это все можно в одну строку проверять без огромного цикла, через таблицы.
пример
 globals 
   key  ButtonKey
   hashtable hash
  endglobals

  function ButtonIni takes nothing returns nothing 
    hash = CreateHeshtable()
    SaveInteger (hash,ButtonKey,KeyCode.LMB,0)
    SaveInteger (hash,ButtonKey,KeyCode.MMB,1)
   //....
    SaveString (hash,ButtonKey,KeyCode.LMB,"LMB")
    SaveString (hash,ButtonKey,KeyCode.MMB,"RMB")
   //....
  endfunction

  function ButtonToName takes integer key returns string
    return LoadString(hash,ButtonKey,key) 
  endfunction

  function IsButtonKey takes integer key returns boolean
    return LoadInteger(hash,ButtonKey,key) == key
  endfunction

0
27
2 года назад
0
Это для мемхака? Вроде классно сделано
Чтобы оставить комментарий, пожалуйста, войдите на сайт.