Advertisement
khanhdu

Full Keyboard Module - Raizen

Dec 14th, 2017
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.75 KB | None | 0 0
  1. #==================================================================
  2. # Full Keyboard Module
  3. # Autor: Raizen
  4. # Compatibilidade: RMVX, RMVXA, RMXP
  5. #==================================================================
  6. # Instruções:
  7. # Para inserir uma tecla basta olhar a tabela abaixo
  8. # e utilizar o comando de tecla dos scripts normalmente que são.
  9.  
  10. # Esse é como um gatilho, ao apertar ele indica que foi apertado
  11. # uma vez, e só volta a retornar verdadeiro caso seja solto a tecla
  12. # e pressionado novamente
  13. # Input.trigger?(tecla)
  14.  
  15. # Esse é o identico ao dos eventos, ele indica se a tecla está pressionada.
  16. # Input.press?(tecla)
  17.  
  18. # Esse é o utilizado nas lojas e menus, ele indica verdadeiro no momento
  19. # que se pressiona, e indica falso até um certo tempo, depois volta a indicar
  20. # verdadeiro.
  21. # Input.repeat?(tecla)
  22.  
  23. # Para utilizar é bem simples, basta olhar a tabela abaixo e colocar
  24. # um Key:: na frente, por exemplo
  25. # Input.trigger?(Key::F)   => indica se foi pressionado a tecla F
  26. # Input.press?(Key::Ctrl)  => indica se o Ctrl está pressionado
  27. # Input.repeat?(Key::K6)   => indica se o numerador 6 foi pressionado
  28. # e fará a verificação de quanto tempo ele está pressionado.
  29.  
  30. # Coloque esse código nas Condições dos eventos, 4ª aba das condições, Script:
  31. # Input.trigger?(Key::valor da tecla abaixo) ou
  32. # Input.press?(Key::valor da tecla abaixo) ou
  33. # Input.repeat?(Key::valor da tecla abaixo)
  34.  
  35. #==================================================================
  36. module Key
  37. K0 = 0x30 #Tecla 0
  38. K1 = 0x31 #Tecla 1
  39. K2 = 0x32 #Tecla 2
  40. K3 = 0x33 #Tecla 3
  41. K4 = 0x34 #Tecla 4
  42. K5 = 0x35 #Tecla 5
  43. K6 = 0x36 #Tecla 6
  44. K7 = 0x37 #Tecla 7
  45. K8 = 0x38 #Tecla 8
  46. K9 = 0x39 #Tecla 9
  47. Ced = 0xBA # Tecla Ç
  48. A = 0x41 #Tecla A
  49. B = 0x42 #Tecla B
  50. C = 0x43 #Tecla C
  51. D = 0x44 #Tecla D
  52. E = 0x45 #Tecla E
  53. F = 0x46 #Tecla F
  54. G = 0x47 #Tecla G
  55. H = 0x48 #Tecla H
  56. I = 0x49 #Tecla I
  57. J = 0x4A #Tecla J
  58. K = 0x4B #Tecla K
  59. L = 0x4C #Tecla L
  60. M = 0x4D #Tecla M
  61. N = 0x4E #Tecla N
  62. O = 0x4F #Tecla O
  63. P = 0x50 #Tecla P
  64. Q = 0x51 #Tecla Q
  65. R = 0x52 #Tecla R
  66. S = 0x53 #Teclar S
  67. T = 0x54 #Tecla T
  68. U = 0x55 #Tecla U
  69. V = 0x56 #Tecla V
  70. W = 0x57 #Tecla W
  71. X = 0x58 #Tecla X
  72. Y = 0x59 #Tecla Y
  73. Z = 0x5A #Tecla Z
  74. Mouse1 = 0x01 #Botão esquerdo do mouse
  75. Mouse2 = 0x02 #Botão direito do mouse
  76. Cancel = 0x03 #Cancelar/interromper processamento
  77. Mousewheel = 0x04 #Botão do meio do mouse (em um mouse de três botões)  
  78. Mouse3 = 0x05 #Windows 2000/XP: Botão X1 do mouse
  79. Mouse4 = 0x06 #Windows 2000/XP: Botão X2 do mouse
  80. Back = 0x08 #Tecla BACKSPACE
  81. Tab = 0x09 #Tecla TAB
  82. Clear = 0x0C #Tecla CLEAR
  83. Enter = 0x0D #Tecla ENTER
  84. Shift = 0x10 #Tecla SHIFT
  85. Ctrl = 0x11 #Tecla CTRL
  86. Alt = 0x12 #Tecla ALT
  87. Pause = 0x13 #Tecla PAUSE
  88. Caps = 0x14 #Tecla CAPS LOCK
  89. Esc = 0x1B #Tecla ESC
  90. Space = 0x20 #Tecla SPACEBAR (Espaço)
  91. Pageup = 0x21 #Tecla PAGE UP
  92. Pagedown = 0x22 #Tecla PAGE DOWN
  93. End = 0x23 #Tecla END
  94. Home = 0x24 #Tecla HOME
  95. Left = 0x25 #Tecla LEFT ARROW (Seta para a esquerda)
  96. Up = 0x26 #Tecla UP ARROW (Seta para cima)
  97. Right = 0x27 #Tecla RIGHT ARROW (Seta para a direita)
  98. Down = 0x28 #Tecla DOWN ARROW (Seta para baixo)
  99. Select = 0x29 #Tecla SELECT
  100. Print = 0x2A #Tecla PRINT
  101. Execute = 0x2B #Tecla EXECUTE
  102. Print = 0x2C #Tecla PRINT SCREEN
  103. Ins = 0x2D #Tecla INS
  104. Del = 0x2E #Tecla DEL
  105. Help = 0x2F #Tecla HELP
  106. Lw = 0x5B #Tecla Windows do lado esquerdo
  107. Lr = 0x5C #Tecla Windows do lado direito
  108. Apps = 0x5D #Menu de contexto
  109. Sleep = 0x5F #Tecla Sleep
  110. Num0 = 0x60 #Tecla 0 (T. numérico)
  111. Num1 = 0x61 #Tecla 1 (T. numérico)
  112. Num2 = 0x62 #Tecla 2 (T. numérico)
  113. Num3 = 0x63 #Tecla 3 (T. numérico)
  114. Num4 = 0x64 #Tecla 4 (T. numérico)
  115. Num5 = 0x65 #Tecla 5 (T. numérico)
  116. Num6 = 0x66 #Tecla 6 (T. numérico)
  117. Num7 = 0x67 #Tecla 7 (T. numérico)
  118. Num8 = 0x68 #Tecla 8 (T. numérico)
  119. Num9 = 0x69 #Tecla 9 (T. numérico)
  120. NumX = 0x6A #Tecla Multiplicar
  121. NumA = 0x6B #Tecla Adicionar
  122. NumS = 0x6C #Tecla Separador
  123. NumM = 0x6D #Tecla Subtrair
  124. Dec = 0x6E #Tecla Decimal
  125. Div = 0x6F #Tecla Dividir
  126. F1 = 0x70 #Tecla F1
  127. F2 = 0x71 #Tecla F2
  128. F3 = 0x72 #Tecla F3
  129. F4 = 0x73 #Tecla F4
  130. F5 = 0x74 #Tecla F5
  131. F6 = 0x75 #Tecla F6
  132. F7 = 0x76 #Tecla F7
  133. F8 = 0x77 #Tecla F8
  134. F9 = 0x78 #Tecla F9
  135. F10 = 0x79 #Tecla F10
  136. F11 = 0x7A #Tecla F11
  137. F12 = 0x7B #Tecla F12
  138. NUMLOCK = 0x90 #Tecla NUM LOCK
  139. SCROLL = 0x91 #Tecla SCROLL LOCK
  140. end
  141.  
  142.  
  143. module Input
  144.   @trigger_keys = []
  145.   @index = []
  146.   GetKeyState = Win32API.new("user32","GetAsyncKeyState",'i','i')
  147.   module_function
  148.   def press(key)
  149.     GetKeyState.call(key) != 0
  150.   end
  151.   def trigger(key)
  152.     unless GetKeyState.call(key) == 0
  153.      @trigger_keys.include?(key) ? (return false) : @trigger_keys.push(key)
  154.      return true
  155.     else
  156.       @trigger_keys.delete(key) if @trigger_keys.include?(key)
  157.       return false
  158.     end
  159.   end
  160.   def repeat(key)
  161.     unless GetKeyState.call(key) == 0
  162.       @trigger_keys.push(key) unless @trigger_keys.include?(key)
  163.       index = @trigger_keys.index(key)
  164.       @index[index] = 0 unless @index[index]
  165.       @index[index] += 1
  166.       return true if @index[index] == 1
  167.       @index[index] >= 30 && @index[index] % 4 == 1 ? (return true) : (return false)
  168.     else
  169.       index = @trigger_keys.index(key) if @trigger_keys.include?(key)
  170.       @index[index] = nil if index
  171.     end
  172.   end
  173. end
  174. class << Input
  175.   alias raizen_trigger? trigger?
  176.   alias raizen_repeat? repeat?
  177.   alias raizen_press? press?
  178.   def trigger?(key)
  179.     raizen_trigger?(key) == false ? (trigger(key) if key.is_a?(Integer)) : true
  180.   end
  181.   def repeat?(key)
  182.     raizen_repeat?(key) == false ? (repeat(key) if key.is_a?(Integer)) : true
  183.   end
  184.   def press?(key)
  185.     raizen_press?(key) == false ? (press(key) if key.is_a?(Integer)) : true
  186.   end
  187. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement