December 03, 2020, 07:23:11 PM

Author Topic: [bb] Control Configuration Functions by _PJ_ [ 1+ years ago ]  (Read 703 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Control Configuration Functions
Author : _PJ_
Posted : 1+ years ago

Description : In these pages, and also in a lot of the games that are made with Blitz, control options seem vastly limited when com[ared to what's offered  in the more 'mainstream' development areas. As I wanted to incorporate the use of Joypads and Joysticks into a project and allow for reconfiguration of the controls, it made sense to follow through with a completely comprehensive set of generic functions.

Hope you all liek them, and they come in useful.

There are likely areas where iut can be optimised and it's unfortunately rather cumbersome as it checks scancodes against references then back again all over the place. If anyone feels the desire or can optimise it, please feel free, although it should be fast enough for most situations, it MAY be a little of an unnecessary overhead for more intensive applications.


Code :
Code: BlitzBasic
  1. ; HERE ARE THE COMMANDS THAT CAN BE DEFINED IN-GAME.
  2. ; NOTE, THE USE OF AN ARRAY WHICH ALLOWS FOR ANALOGUE VALUES OR AXES
  3. ; AS WELL AS INDIIDUAL BUTTON STROKES
  4.  
  5. ;THE ARRAY KEY_COMMANDS CAN BE WRITTEN TO A FILE OR BANK ETC. TO STORE/SAVE REDEFINED KEY DEFINITIONS.
  6.  
  7. Const KEY_COMMANDSET_MAX=9                                              ; VERY IMPORTANT. THIS SHOULD REFLECT THE TOTAL NUMBER OF COMMANDS USED IN THE GAME, INCLUDING BUTTONS FOR "PAUSE GAME" etc.
  8.  
  9. Dim KEY_COMMANDS(KEY_COMMANDSET_MAX,3)                                                                                                                                                                                  ;9 here must match the number of commands set below. The 3 represents the following KEY_ACTION_* Values following the commands below.
  10. Dim KEY_S_DESCRIPTION$(KEY_COMMANDSET_MAX)      ; USEFUL FOR RECONFIGURATION AND USER-INTERACTION
  11.  
  12. ;THESE ARE FOR EXAMPLE ONLY. YOU WILL NEED VALUES FOR EACH CONTROL IN THE GAME.
  13. ;FOR THIS EXAMPLE I USE SOME RUDIMENTATRY TYPICAL 'FIRST-PERSON SHOOTER' TYPE CONTROLS. NOTE THERE SHOULD BE ONE OF THESE FOR EACH
  14. ; COMMAND UP TO KEY_COMMANDSET_MAX
  15. Const KEY_COMMAND_FORWARD       =                               1
  16. Const KEY_COMMAND_BACK                  =                               2
  17. Const KEY_COMMAND_LEFT                  =                               3
  18. Const KEY_COMMAND_RIGHT         =                               4
  19. Const KEY_COMMAND_FIRE                  =                               5
  20. Const KEY_COMMAND_CROUCH                =                               6
  21. Const KEY_COMMAND_JUMP                  =                               7
  22. Const KEY_COMMAND_LOOKHORIZ     =                               8
  23. Const KEY_COMMAND_LOOKVERT      =                               9
  24.  
  25. ; NON ESSENTIAL, BUT MAYBE USEFUL
  26. KEY_S_DESCRIPTION$(KEY_COMMAND_FORWARD)="MOVE FORWARD"
  27. KEY_S_DESCRIPTION$(KEY_COMMAND_BACK)="MOVE BACKWARDS"
  28. KEY_S_DESCRIPTION$(KEY_COMMAND_LEFT)="SIDESTEP LEFT"
  29. KEY_S_DESCRIPTION$(KEY_COMMAND_RIGHT)="SIDESTEP RIGHT"
  30. KEY_S_DESCRIPTION$(KEY_COMMAND_FIRE)="PRIMARY WEAPON"
  31. KEY_S_DESCRIPTION$(KEY_COMMAND_CROUCH)="SNEAK"
  32. KEY_S_DESCRIPTION$(KEY_COMMAND_JUMP)="JUMP"
  33. KEY_S_DESCRIPTION$(KEY_COMMAND_LOOKHORIZ)="TURN AROUND"
  34. KEY_S_DESCRIPTION$(KEY_COMMAND_LOOKVERT)="LOOK UP & DOWN"
  35.  
  36. ;THESE CONSTANTS JUST MAKE IT EASIER TO WORK WITH DIFFERENT INPUT TYPES. THIS SHOULD COVER ALL POSSIBLE METHODS OF INPUT
  37.  
  38. Const KEY_TYPE_KEYBOARD_CLICK                           =               0                                                                                                                               ; Key Depression
  39. Const KEY_TYPE_MOUSE_CLICK                                      =               1                                                                                                                               ; Mouse Button
  40. Const KEY_TYPE_CONTROLLER_CLICK                 =               2                                                                                                                               ; Controller Button
  41. Const KEY_TYPE_MOUSE_AXIS_HORIZ                 =               3                                                                                                                               ; Mouse Horizontal
  42. Const KEY_TYPE_CONTROLLER_AXIS_HORIZ            =               4                                                                                                                               ; Controller Axis Horizontal
  43. Const KEY_TYPE_MOUSE_AXIS_VERT                  =               5                                                                                                                               ; Mouse Vertical
  44. Const KEY_TYPE_CONTROLLER_AXIS_VERT             =               6                                                                                                                               ; Controller Axis Vertical
  45. Const KEY_TYPE_MOUSEWHEEL_AXIS                  =               7                                                                                                                               ; Mousewheel Scroll
  46. Const KEY_TYPE_CONTROLLER_AXIS2_HORIZ           =               8                                                                                                                               ; Controller Secondary Axis Horizontal
  47. Const KEY_TYPE_CONTROLLER_AXIS2_VERT            =               9                                                                                                                               ; Controller Secondary Axis Vertical
  48. Const KEY_TYPE_CONTROLLER_AXIS_THROTTLE =               10                                                                                                                              ; Controller Axis Throttle
  49. Const KEY_TYPE_CONTROLLER_HAT_HORIZ             =               11                                                                                                                              ; Controller Hat X
  50. Const KEY_TYPE_CONTROLLER_HAT_VERT                      =               12                                                                                                                              ; Controller Hat Y
  51. Const KEY_TYPE_CONTROLLER_ANALOGUE_PITCH        =               13                                                                                                                              ; Controller Pitch
  52. Const KEY_TYPE_CONTROLLER_ANALOGUE_YAW  =               14                                                                                                                              ; Controller Yaw
  53. Const KEY_TYPE_CONTROLLER_ANALOGUE_ROLL =               15                                                                                                                              ; Controller Roll
  54.  
  55. Const KEY_ACTION_TYPE                           =                       1
  56. Const KEY_ACTION_ANALOGUEVECTOR =                       2
  57. Const KEY_ACTION_SCANCODE                       =                       3
  58.  
  59. ; Note - References to these values may be * -1 if INVERT AXIS is required for camera control etc. Note the *_BOTH option.
  60. Const KEY_ANALOGUE_POSITIVE                     =                       1
  61. Const KEY_ANALOGUE_NEGATIVE             =                       -1
  62. Const KEY_ANALOGUE_NONE                 =                       0
  63. Const KEY_ANALOGUE_BOTH                 =                       2
  64.  
  65. ;EACH CONTOL COMMAND HAS 3 VALUES.
  66. ; 1 (KEY_ACTION_TYPE)                                   - Defines Whether Control is a button press, an Analogue axis movement or a Mousewheel scroll etc.
  67. ; 2 (KEY_ACTION_ANALOGUEVECTOR)         - If KEY_ACTION_TYPE is Analogue, This value represents whether the Command corresponds to + or -      
  68. ; 3 (KEY_ACTION_SCANCODE)                       - If KEY_ACTION_TYPE is a Keyboard Button press, this represents the Keyboard Scancode. Otherwise, it is an arbitratry Scancode Value assigneed to controller options of 238 - 280 (See Below)
  69.  
  70. ; DEFAULT CONTROLS
  71. ;Here are some example control methods defined with the values
  72. KEY_COMMANDS(KEY_COMMAND_FORWARD,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                       ;INPUT TYPE
  73. KEY_COMMANDS(KEY_COMMAND_FORWARD,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_POSITIVE               ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  74. KEY_COMMANDS(KEY_COMMAND_FORWARD,KEY_ACTION_SCANCODE)=KEY_UPARROW                                                       ;INPUT SCANCODE
  75.  
  76. KEY_COMMANDS(KEY_COMMAND_BACK,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                          ;INPUT TYPE
  77. KEY_COMMANDS(KEY_COMMAND_BACK,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_NEGATIVE                  ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  78. KEY_COMMANDS(KEY_COMMAND_BACK,KEY_ACTION_SCANCODE)=KEY_DOWNARROW                                                        ;INPUT SCANCODE
  79.  
  80. KEY_COMMANDS(KEY_COMMAND_LEFT,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                          ;INPUT TYPE
  81. KEY_COMMANDS(KEY_COMMAND_LEFT,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_NEGATIVE                          ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  82. KEY_COMMANDS(KEY_COMMAND_LEFT,KEY_ACTION_SCANCODE)=KEY_LEFTARROW                                                                ;INPUT SCANCODE
  83.  
  84. KEY_COMMANDS(KEY_COMMAND_RIGHT,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                         ;INPUT TYPE
  85. KEY_COMMANDS(KEY_COMMAND_RIGHT,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_POSITIVE                 ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  86. KEY_COMMANDS(KEY_COMMAND_RIGHT,KEY_ACTION_SCANCODE)=KEY_RIGHTARROW                                                      ;INPUT SCANCODE
  87.  
  88. KEY_COMMANDS(KEY_COMMAND_FIRE,KEY_ACTION_TYPE)=KEY_TYPE_MOUSE_CLICK                                                     ;INPUT TYPE
  89. KEY_COMMANDS(KEY_COMMAND_FIRE,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_POSITIVE                          ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  90. KEY_COMMANDS(KEY_COMMAND_FIRE,KEY_ACTION_SCANCODE)=KEY_MOUSE_LEFT                                                               ;INPUT SCANCODE
  91.  
  92. KEY_COMMANDS(KEY_COMMAND_CROUCH,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                        ;INPUT TYPE
  93. KEY_COMMANDS(KEY_COMMAND_CROUCH,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_POSITIVE                        ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  94. KEY_COMMANDS(KEY_COMMAND_CROUCH,KEY_ACTION_SCANCODE)=KEY_RCTRL                                                          ;INPUT SCANCODE
  95.  
  96. KEY_COMMANDS(KEY_COMMAND_JUMP,KEY_ACTION_TYPE)=KEY_TYPE_KEYBOARD_CLICK                                          ;INPUT TYPE
  97. KEY_COMMANDS(KEY_COMMAND_JUMP,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_POSITIVE                          ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  98. KEY_COMMANDS(KEY_COMMAND_JUMP,KEY_ACTION_SCANCODE)=KEY_SPACEBAR                                                         ;INPUT SCANCODE
  99.  
  100. KEY_COMMANDS(KEY_COMMAND_LOOKHORIZ,KEY_ACTION_TYPE)=KEY_TYPE_MOUSE_AXIS_HORIZ                           ;INPUT TYPE
  101. KEY_COMMANDS(KEY_COMMAND_LOOKHORIZ,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_BOTH                 ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  102. KEY_COMMANDS(KEY_COMMAND_LOOKHORIZ,KEY_ACTION_SCANCODE)=KEY_MOUSEX                                                      ;INPUT SCANCODE
  103.  
  104. KEY_COMMANDS(KEY_COMMAND_LOOKVERT,KEY_ACTION_TYPE)=KEY_TYPE_MOUSE_AXIS_HORIZ                            ;INPUT TYPE
  105. KEY_COMMANDS(KEY_COMMAND_LOOKVERT,KEY_ACTION_ANALOGUEVECTOR)=KEY_ANALOGUE_BOTH                  ;IF ANALOGUE SET POSITIVE OR NEGATIVE
  106. KEY_COMMANDS(KEY_COMMAND_LOOKVERT,KEY_ACTION_SCANCODE)=KEY_MOUSEY                                                       ;INPUT SCANCODE
  107.  
  108. ; SOME VALUES HAVE BEEN SUBSTITUTED IN FOR JOYSTICKS, GAMEPAD CONTROLLERS AND MOUSE FUNCTIONS TO
  109. ; USE THE SCANCODE VALUES OF 238 - 280
  110.  
  111. Const KEY_NONE=0
  112. Const KEY_ESCAPE=1
  113. Const KEY_1=2
  114. Const KEY_2=3
  115. Const KEY_3=4
  116. Const KEY_4=5
  117. Const KEY_5=6
  118. Const KEY_6=7
  119. Const KEY_7=8
  120. Const KEY_8=9
  121. Const KEY_9=10
  122. Const KEY_0=11
  123. Const KEY_MINUS=12
  124. Const KEY_PLUS=13
  125. Const KEY_BACKSPACE=14
  126. Const KEY_TAB=15
  127. Const KEY_Q=16
  128. Const KEY_W=17
  129. Const KEY_E=18
  130. Const KEY_R=19
  131. Const KEY_T=20
  132. Const KEY_Y=21
  133. Const KEY_U=22
  134. Const KEY_I=23
  135. Const KEY_O=24
  136. Const KEY_P=25
  137. Const KEY_LEFTBRACKET=26
  138. Const KEY_RIGHTBRACKET=27
  139. Const KEY_RETURN=28
  140. Const KEY_LCTRL=29
  141. Const KEY_A=30
  142. Const KEY_S=31
  143. Const KEY_D=32
  144. Const KEY_F=33
  145. Const KEY_G=34
  146. Const KEY_H=35
  147. Const KEY_J=36
  148. Const KEY_K=37
  149. Const KEY_L=38
  150. Const KEY_SEMICOLON=39
  151. Const KEY_APOSTROPHE=40
  152. Const KEY_TILDE=41
  153. Const KEY_LSHIFT=42
  154. Const KEY_HASH=43
  155. Const KEY_Z=44
  156. Const KEY_X=45
  157. Const KEY_C=46
  158. Const KEY_V=47
  159. Const KEY_B=48
  160. Const KEY_N=49
  161. Const KEY_M=50
  162. Const KEY_COMMA=51
  163. Const KEY_FULLSTOP=52
  164. Const KEY_SLASH=53
  165. Const KEY_RSHIFT=54
  166. Const KEY_NUM_ASTERISK=55
  167. Const KEY_LALT=56
  168. Const KEY_SPACEBAR=57
  169. Const KEY_CAPSLOCK=58
  170. Const KEY_FUNC_1=59
  171. Const KEY_FUNC_2=60
  172. Const KEY_FUNC_3=61
  173. Const KEY_FUNC_4=62
  174. Const KEY_FUNC_5=63
  175. Const KEY_FUNC_6=64
  176. Const KEY_FUNC_7=65
  177. Const KEY_FUNC_8=66
  178. Const KEY_FUNC_9=67
  179. Const KEY_FUNC_10=68
  180. Const KEY_PAUSE=69
  181. Const KEY_SCROLL_LOCK=70
  182. Const KEY_NUM_7=71
  183. Const KEY_NUM_8=72
  184. Const KEY_NUM_9=73
  185. Const KEY_NUM_MINUS=74
  186. Const KEY_NUM_4=75
  187. Const KEY_NUM_5=76
  188. Const KEY_NUM_6=77
  189. Const KEY_NUM_PLUS=78
  190. Const KEY_NUM_1=79
  191. Const KEY_NUM_2=80
  192. Const KEY_NUM_3=81
  193. Const KEY_NUM_0=82
  194. Const KEY_NUM_DEL=83
  195. Const KEY_BAR=86
  196. Const KEY_F11=87
  197. Const KEY_F12=88
  198. Const KEY_F13=100
  199. Const KEY_F14=101
  200. Const KEY_F15=102
  201. Const KEY_KANA=112
  202. Const KEY_ABNT_C1=115
  203. Const KEY_CONVERT=121
  204. Const KEY_NOCONVERT=123
  205. Const KEY_YEN=125
  206. Const KEY_EQUALS=141
  207. Const KEY_MEDIA_PTRACK=144
  208. Const KEY_AT=145
  209. Const KEY_COLON=146
  210. Const KEY_UNDERLINE=147
  211. Const KEY_KANJI=148
  212. Const KEY_MEDIA_STOP=149
  213. Const KEY_AX=150
  214. Const KEY_UNLABELED=151
  215. Const KEY_MEDIA_NTRACK=153
  216. Const KEY_NUM_ENTER=156
  217. Const KEY_RCTRL=157
  218. Const KEY_MEDIA_MUTE=160
  219. Const KEY_MEDIA_CALC=161
  220. Const KEY_MEDIA_PLAYPAUSE=162
  221. Const KEY_MEDIA_QUIT=164
  222. Const KEY_MEDIA_VOLDOWN=174
  223. Const KEY_MEDIA_VOLUP=176
  224. Const KEY_WEB_HOME=178
  225. Const KEY_NUM_COMMA=179
  226. Const KEY_NUM_SLASH=181
  227. Const KEY_PRNTSCRN=183
  228. Const KEY_RALT=184
  229. Const KEY_NUMLOCK=197
  230. Const KEY_HOME=199
  231. Const KEY_UPARROW=200
  232. Const KEY_PG_UP=201
  233. Const KEY_LEFTARROW=203
  234. Const KEY_RIGHTARROW=205
  235. Const KEY_END=207
  236. Const KEY_DOWNARROW=208
  237. Const KEY_PG_DOWN=209
  238. Const KEY_INSERT=210
  239. Const KEY_DELETE=211
  240. Const KEY_LMICROSOFTWIN=219
  241. Const KEY_RMICROSOFTWIN=220
  242. Const KEY_CONTEXT_MENU=221
  243. Const KEY_POWER=222
  244. Const KEY_SLEEP=223
  245. Const KEY_WAKE=227
  246. Const KEY_WEB_SRCH=229
  247. Const KEY_WEB_FAVS=230
  248. Const KEY_WEB_REFRESH=231
  249. Const KEY_WEB_STOP=232
  250. Const KEY_WEB_FWD=233
  251. Const KEY_WEB_BCK=234
  252. Const KEY_MYCOMP=235
  253. Const KEY_MAIL=236
  254. Const KEY_MEDIA=237
  255.  
  256. Const KEY_MOUSE_LEFT=238
  257. Const KEY_MOUSE_RIGHT=239
  258. Const KEY_MOUSE_MIDDLE=240
  259. Const KEY_MOUSE_4=241
  260. Const KEY_MOUSE_5=242
  261. Const KEY_MOUSE_6=243
  262. Const KEY_MOUSE_7=244
  263.  
  264. Const KEY_CONTROLLER_1=245
  265. Const KEY_CONTROLLER_2=246
  266. Const KEY_CONTROLLER_3=247
  267. Const KEY_CONTROLLER_4=248
  268. Const KEY_CONTROLLER_5=249
  269. Const KEY_CONTROLLER_6=250
  270. Const KEY_CONTROLLER_7=251
  271. Const KEY_CONTROLLER_8=252
  272. Const KEY_CONTROLLER_9=253
  273. Const KEY_CONTROLLER_10=254
  274. Const KEY_CONTROLLER_11=255
  275. Const KEY_CONTROLLER_12=256
  276. Const KEY_CONTROLLER_13=257
  277. Const KEY_CONTROLLER_14=258
  278. Const KEY_CONTROLLER_15=259
  279. Const KEY_CONTROLLER_16=260
  280. Const KEY_CONTROLLER_17=261
  281. Const KEY_CONTROLLER_18=262
  282. Const KEY_CONTROLLER_19=263
  283. Const KEY_CONTROLLER_20=264
  284.  
  285. Const KEY_MOUSE_X=265
  286. Const KEY_MOUSE_Y=266
  287.  
  288. Const KEY_MOUSEWHEEL=267
  289.  
  290. Const KEY_CONTROLLER_X=268
  291. Const KEY_CONTROLLER_Y=269
  292. Const KEY_CONTROLLER_THROTTLE=270
  293.  
  294. Const KEY_CONTROLLER_HAT=271
  295. Const KEY_CONTROLLER_A=272
  296. Const KEY_CONTROLLER_B=273
  297. Const KEY_CONTROLLER_C=274
  298. Const KEY_CONTROLLER_D=275
  299.  
  300. Const KEY_CONTROLLER_X2=276
  301. Const KEY_CONTROLLER_Y2=277
  302.  
  303. Const KEY_CONTROLLER_PITCH=278
  304. Const KEY_CONTROLLER_YAW=279
  305. Const KEY_CONTROLLER_ROLL=280
  306.  
  307.  
  308.  
  309. ;For the MOUSESPEED functions
  310. Global KEY_MOUSEXSPEED_OLD=MouseXSpeed()
  311. Global KEY_MOUSEYSPEED_OLD=MouseYSpeed()
  312.  
  313.  
  314.  
  315.         Function KEY_S_FRIENDLY_NAME$(KEY_SCANCODE)
  316.  
  317.                 If KEY_SCANCODE<238            
  318.                         Select KEY_SCANCODE
  319.                                 Case 0 Return ""
  320.                                 Case 1 Return"ESCAPE"  
  321.                                 Case 2 Return"1"       
  322.                                 Case 3 Return"2"       
  323.                                 Case 4 Return"3"       
  324.                                 Case 5 Return"4"       
  325.                                 Case 6 Return"5"       
  326.                                 Case 7 Return"6"       
  327.                                 Case 8 Return"7"       
  328.                                 Case 9 Return"8"       
  329.                                 Case 10 Return"9"      
  330.                                 Case 11 Return"0"      
  331.                                 Case 12 Return"MINUS"  
  332.                                 Case 13 Return"PLUS"   
  333.                                 Case 14 Return"BACKSPACE"      
  334.                                 Case 15 Return"TAB"    
  335.                                 Case 16 Return"Q"      
  336.                                 Case 17 Return"W"      
  337.                                 Case 18 Return"E"      
  338.                                 Case 19 Return"R"      
  339.                                 Case 20 Return"T"      
  340.                                 Case 21 Return"Y"      
  341.                                 Case 22 Return"U"      
  342.                                 Case 23 Return"I"      
  343.                                 Case 24 Return"O"      
  344.                                 Case 25 Return"P"      
  345.                                 Case 26 Return"LEFTBRACKET"    
  346.                                 Case 27 Return"RIGHTBRACKET"   
  347.                                 Case 28 Return"RETURN" 
  348.                                 Case 29 Return"LCTRL"  
  349.                                 Case 30 Return"A"      
  350.                                 Case 31 Return"S"      
  351.                                 Case 32 Return"D"      
  352.                                 Case 33 Return"F"      
  353.                                 Case 34 Return"G"      
  354.                                 Case 35 Return"H"      
  355.                                 Case 36 Return"J"      
  356.                                 Case 37 Return"K"      
  357.                                 Case 38 Return"L"      
  358.                                 Case 39 Return"SEMICOLON"      
  359.                                 Case 40 Return"APOSTROPHE"     
  360.                                 Case 41 Return"TILDE"  
  361.                                 Case 42 Return"LSHIFT" 
  362.                                 Case 43 Return"HASH"   
  363.                                 Case 44 Return"Z"      
  364.                                 Case 45 Return"X"      
  365.                                 Case 46 Return"C"      
  366.                                 Case 47 Return"V"      
  367.                                 Case 48 Return"B"      
  368.                                 Case 49 Return"N"      
  369.                                 Case 50 Return"M"      
  370.                                 Case 51 Return"COMMA"  
  371.                                 Case 52 Return"FULLSTOP"       
  372.                                 Case 53 Return"SLASH"  
  373.                                 Case 54 Return"RSHIFT" 
  374.                                 Case 55 Return"NUM ASTERISK"   
  375.                                 Case 56 Return"LALT"   
  376.                                 Case 57 Return"SPACEBAR"       
  377.                                 Case 58 Return"CAPSLOCK"       
  378.                                 Case 59 Return"FUNC 1" 
  379.                                 Case 60 Return"FUNC 2" 
  380.                                 Case 61 Return"FUNC 3" 
  381.                                 Case 62 Return"FUNC 4" 
  382.                                 Case 63 Return"FUNC 5" 
  383.                                 Case 64 Return"FUNC 6" 
  384.                                 Case 65 Return"FUNC 7" 
  385.                                 Case 66 Return"FUNC 8" 
  386.                                 Case 67 Return"FUNC 9" 
  387.                                 Case 68 Return"FUNC 10"
  388.                                 Case 69 Return"PAUSE"  
  389.                                 Case 70 Return"SCROLL LOCK"    
  390.                                 Case 71 Return"NUM 7"  
  391.                                 Case 72 Return"NUM 8"  
  392.                                 Case 73 Return"NUM 9"  
  393.                                 Case 74 Return"NUM MINUS"      
  394.                                 Case 75 Return"NUM 4"  
  395.                                 Case 76 Return"NUM 5"  
  396.                                 Case 77 Return"NUM 6"  
  397.                                 Case 78 Return"NUM PLUS"       
  398.                                 Case 79 Return"NUM 1"  
  399.                                 Case 80 Return"NUM 2"  
  400.                                 Case 81 Return"NUM 3"  
  401.                                 Case 82 Return"NUM 0"  
  402.                                 Case 83 Return"NUM DEL"
  403.                                 Case 86 Return"BAR"    
  404.                                 Case 87 Return"F11"    
  405.                                 Case 88 Return"F12"    
  406.                                 ;Case 100 Return"F13"  
  407.                                 ;Case 101 Return"F14"  
  408.                                 ;Case 102 Return"F15"  
  409.                                 ;Case 112 Return"KANA" 
  410.                                 ;Case 115 Return"ABNT C1"      
  411.                                 ;Case 121 Return"CONVERT"      
  412.                                 ;Case 123 Return"NOCONVERT"    
  413.                                 ;Case 125 Return"YEN"  
  414.                                 ;Case 126 Return"NUM DEL"       Used if Separate Decimal /Delete on NumPad
  415.                                 Case 128 Return"MISC MEDIA CONTROL"
  416.                                 ;Case 141 Return"EQUALS"       
  417.                                 ;Case 144 Return"MEDIA PTRACK" 
  418.                                 ;Case 145 Return"AT"   
  419.                                 ;Case 146 Return"COLON"
  420.                                 ;Case 147 Return"UNDERLINE"    
  421.                                 ;Case 148 Return"KANJI"
  422.                                 ;Case 149 Return"MEDIA STOP"   
  423.                                 ;Case 150 Return"AX"   
  424.                                 ;Case 151 Return"UNLABELED"    
  425.                                 ;Case 153 Return"MEDIA NTRACK" 
  426.                                 Case 156 Return"NUM ENTER"     
  427.                                 Case 157 Return"RCTRL" 
  428.                                 ;Case 160 Return"MEDIA MUTE"   
  429.                                 ;Case 161 Return"MEDIA CALC"   
  430.                                 ;Case 162 Return"MEDIA PLAYPAUSE"      
  431.                                 ;Case 164 Return"MEDIA QUIT"   
  432.                                 ;Case 174 Return"MEDIA VOLDOWN"
  433.                                 ;Case 176 Return"MEDIA VOLUP"  
  434.                                 ;Case 178 Return"WEB HOME"     
  435.                                 ;Case 179 Return"NUM COMMA"    
  436.                                 Case 181 Return"NUM SLASH"     
  437.                                 ;Case 183 Return"PRNTSCRN"     
  438.                                 Case 184 Return"RALT"    ; 184 returns 29 also.
  439.                                 Case 197 Return"NUMLOCK"       
  440.                                 Case 199 Return"HOME"  
  441.                                 Case 200 Return"UPARROW"       
  442.                                 Case 201 Return"PG UP" 
  443.                                 Case 203 Return"LEFTARROW"     
  444.                                 Case 205 Return"RIGHTARROW"    
  445.                                 Case 207 Return"END"   
  446.                                 Case 208 Return"DOWNARROW"     
  447.                                 Case 209 Return"PG DOWN"       
  448.                                 Case 210 Return"INSERT"
  449.                                 Case 211 Return"DELETE"
  450.                                 Case 219 Return"LMICROSOFTWIN" 
  451.                                 Case 220 Return"RMICROSOFTWIN" 
  452.                                 Case 221 Return"CONTEXT MENU"  
  453.                                 ;Case 222 Return"POWER"
  454.                                 ;Case 223 Return"SLEEP"
  455.                                 ;Case 227 Return"WAKE" 
  456.                                 ;Case 229 Return"WEB SRCH"     
  457.                                 ;Case 230 Return"WEB FAVS"     
  458.                                 ;Case 231 Return"WEB REFRESH"  
  459.                                 ;Case 232 Return"WEB STOP"     
  460.                                 ;Case 233 Return"WEB FWD"      
  461.                                 ;Case 234 Return"WEB BCK"      
  462.                                 ;Case 235 Return"MYCOMP"       
  463.                                 ;Case 236 Return"MAIL" 
  464.                                 ;Case 237 Return"MEDIA"
  465.                         End Select
  466.                 End If
  467.                         Select KEY_SCANCODE
  468.                                 Case 238 Return "LEFT MOUSE"
  469.                                 Case 239 Return "RIGHT MOUSE"
  470.                                 Case 240 Return "MIDDLE MOUSE"
  471.                                 Case 241 Return "MOUSE 4"
  472.                                 Case 242 Return "MOUSE 5"
  473.                                 Case 243 Return "MOUSE 6"
  474.                                 Case 244 Return "MOUSE 7"
  475.  
  476.                                 Case 245 Return "CONTROLLER 1"
  477.                                 Case 246 Return "CONTROLLER 2"
  478.                                 Case 247 Return "CONTROLLER 3"
  479.                                 Case 248 Return "CONTROLLER 4"
  480.                                 Case 249 Return "CONTROLLER 5"
  481.                                 Case 250 Return "CONTROLLER 6"
  482.                                 Case 251 Return "CONTROLLER 7"
  483.                                 Case 252 Return "CONTROLLER 8"
  484.                                 Case 253 Return "CONTROLLER 9"
  485.                                 Case 254 Return "CONTROLLER 10"
  486.                                 Case 255 Return "CONTROLLER 11"
  487.                                 Case 256 Return "CONTROLLER 12"                        
  488.                                 Case 257 Return "CONTROLLER 13"
  489.                                 Case 258 Return "CONTROLLER 14"
  490.                                 Case 259 Return "CONTROLLER 15"                        
  491.                                 Case 260 Return "CONTROLLER 16"
  492.                                 Case 261 Return "CONTROLLER 17"
  493.                                 Case 262 Return "CONTROLLER 18"
  494.                                 Case 263 Return "CONTROLLER 19"
  495.                                 Case 264 Return "CONTROLLER 20"
  496.  
  497.                                 Case 265 Return "MOUSE X"
  498.                                 Case 266 Return "MOUSE Y"
  499.                                 Case 267 Return "MOUSEWHEEL"                   
  500.                                                                
  501.                                 Case 268 Return "CONTROLLER X"
  502.                                 Case 269 Return "CONTROLLER Y"                         
  503.                                 Case 270 Return "CONTROLLER Z"
  504.                                
  505.                                                                
  506.                                 Case 271 Return "CONTROLLER ^"                          ;; Use this ^ for ANALOGUE
  507.                                 Case 272 Return "CONTROLLER ^1"                 ;; THE FOUR FOR DIGITAL
  508.                                 Case 273 Return "CONTROLLER ^2"                 ;; -----------------------
  509.                                 Case 274 Return "CONTROLLER ^3"                 ;;------------------------
  510.                                 Case 275 Return "CONTROLLER ^4"
  511.                                
  512.                                 Case 276 Return "CONTROLLER X2"
  513.                                 Case 277 Return "CONTROLLER Y2"                        
  514.                                
  515.                                 Case 278 Return "CONTROLLER PITCH"
  516.                                 Case 279 Return "CONTROLLER YAW"
  517.                                 Case 280 Return "CONTROLLER ROLL"
  518.                                                                
  519.                                 Default Return "INVALID KEY"
  520.                         End Select
  521.         End Function
  522.        
  523. ;******************************************************************************************************************
  524. ;******************************************************************************************************************
  525.  
  526. Function KEY_GETCOMMAND_BY_SCANCODE(KEY_CHECK_SCANCODE)
  527.         KEY_RETURN_COMMAND=0
  528.         For KEY_ITER_COMMANDS=1 To KEY_COMMANDSET_MAX
  529.                 If KEY_COMMANDS(KEY_ITER_COMMANDS,KEY_ACTION_SCANCODE)=KEY_CHECK_SCANCODE
  530.                         KEY_RETURN_COMMAND=KEY_ITER_COMMANDS
  531.                         Exit
  532.                 EndIf
  533.         Next
  534.        
  535.         Return KEY_RETURN_COMMAND              
  536. End Function
  537.  
  538. Function KEY_GETSCANCODE_BY_COMMAND(KEY_CHECK_COMMMAND)
  539.         KEY_RETURN_SCANCODE=KEY_COMMANDS(KEY_CHECK_COMMAND,KEY_ACTION_SCANCODE)
  540.  
  541.         Return KEY_RETURN_SCANCODE
  542. End Function
  543.  
  544. Function KEY_GETTYPE_BY_COMMAND(KEY_CHECK_COMMAND)
  545.         KEY_RETURN_TYPE=KEY_COMMANDS(KEY_CHECK_COMMAND,KEY_ACTION_TYPE)
  546.  
  547.         Return KEY_RETURN_TYPE
  548.        
  549. End Function
  550.  
  551. Function KEY_GETVECTOR_BY_COMMAND(KEY_CHECK_COMMAND)
  552.         KEY_RETURN_VECTOR=KEY_COMMANDS(KEY_CHECK_COMMAND,KEY_ACTION_ANALOGUEVECTOR)
  553.  
  554.         Return KEY_RETURN_VECTOR
  555. End Function
  556.        
  557. Function KEY_GET_SCANCODE_OF_INPUT()   
  558.        
  559.         KEY_RETURN_SCANCODE=0
  560.        
  561.         For     KEY_ITER_KEYBOARD=1 To 237
  562.                 If KEY_GET_SCANCODE_KEYBOARD_INPUT(KEY_ITER_KEYBOARD)
  563.                         KEY_RETURN_SCANCODE=KEY_ITER_KEYBOARD
  564.                         Exit
  565.                 End If
  566.         Next
  567.        
  568.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  569.        
  570.         For     KEY_ITER_MOUSE=238 To 244
  571.                 If KEY_GET_SCANCODE_MOUSE_INPUT(KEY_ITER_MOUSE)
  572.                         KEY_RETURN_SCANCODE=KEY_ITER_MOUSE
  573.                         Exit
  574.                 End If
  575.         Next
  576.        
  577.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  578.        
  579.         For     KEY_ITER_CONTROLLER=245 To 264
  580.                 If KEY_GET_SCANCODE_CONTROLLER_INPUT(KEY_ITER_CONTROLLER)
  581.                         KEY_RETURN_SCANCODE=KEY_ITER_CONTROLLER
  582.                         Exit
  583.                 End If
  584.         Next
  585.                
  586.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  587.        
  588.         If Abs(KEY_GET_MOUSEX_INPUT())>0 Then KEY_RETURN_SCANCODE=KEY_MOUSE_X
  589.        
  590.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  591.        
  592.         If Abs(KEY_GET_MOUSEY_INPUT())>0 Then KEY_RETURN_SCANCODE=KEY_MOUSE_Y
  593.        
  594.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  595.        
  596.         If KEY_GET_MOUSEWHEEL_INPUT()<>0 Then KEY_RETURN_SCANCODE=KEY_MOUSEWHEEL
  597.        
  598.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  599.        
  600.         If Abs(KEY_GET_CONTROLLERX_INPUT())<>0 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_X
  601.        
  602.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  603.        
  604.         If Abs(KEY_GET_CONTROLLERY_INPUT())<>0 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_Y
  605.        
  606.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  607.        
  608.         If Abs(KEY_GET_CONTROLLER_THROTTLE_INPUT())<>0 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_THROTTLE
  609.        
  610.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE      
  611.        
  612.         If Abs(KEY_GET_CONTROLLERX2_INPUT())<>0 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_X2
  613.        
  614.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  615.        
  616.         If Abs(KEY_GET_CONTROLLERY2_INPUT())<>0 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_Y3
  617.        
  618.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  619.  
  620. ;       DIGITAL HAT CONTROL FOR 4 DIRECTIONS - ANALOGUE 'SCANCODE' 271 NOT USED
  621.         If KEY_GET_CONTROLLER_HATX_INPUT()=1 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_B
  622.         If KEY_GET_CONTROLLER_HATX_INPUT()=-1 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_D
  623.        
  624.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  625.        
  626.         If KEY_GET_CONTROLLER_HATY_INPUT()=1 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_A
  627.         If KEY_GET_CONTROLLER_HATY_INPUT()=-1 Then KEY_RETURN_SCANCODE=KEY_CONTROLLER_C
  628.        
  629.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  630.        
  631.         KEY_RETURN_SCANCODE=Abs(KEY_CONTROLLER_PITCH*KEY_GET_CONTROLLER_PITCH_INPUT()) 
  632.        
  633.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  634.        
  635.         KEY_RETURN_SCANCODE=Abs(KEY_CONTROLLER_YAW*KEY_GET_CONTROLLER_YAW_INPUT())
  636.        
  637.         If KEY_RETURN_SCANCODE<>0 Then Return KEY_RETURN_SCANCODE
  638.        
  639.         KEY_RETURN_SCANCODE=Abs(KEY_CONTROLLER_YAW*KEY_GET_CONTROLLER_ROLL_INPUT())
  640.        
  641.         Return KEY_RETURN_SCANCODE
  642. End Function   
  643.        
  644. Function KEY_GETCOMMAND_INPUT(KEY_CHECK_COMMAND)       
  645.         If KEY_CHECK_COMMAND=0
  646.                 Return False
  647.         End If
  648.        
  649.         KEY_RETURN_VERIFY=False
  650.        
  651.         KEY_THIS_TYPE=KEY_GETTYPE_BY_COMMAND(KEY_CHECK_COMMAND)
  652.         KEY_THIS_VECTOR=KEY_GETVECTOR_BY_COMMAND(KEY_CHECK_COMMAND)    
  653.         KEY_THIS_SCANCODE=KEY_GETSCANCODE_BY_COMMAND(KEY_CHECK_COMMAND)
  654.                
  655.         Select KEY_THIS_TYPE
  656.        
  657.                 Case KEY_TYPE_KEYBOARD_CLICK
  658.                         KEY_RETURN_VERIFY=KEY_GET_SCANCODE_KEYBOARD_INPUT(KEY_THIS_SCANCODE)   
  659.                        
  660.                 Case KEY_TYPE_MOUSE_CLICK
  661.                         KEY_RETURN_VERIFY=KEY_GET_SCANCODE_MOUSE_INPUT(KEY_THIS_SCANCODE)
  662.                        
  663.                 Case KEY_TYPE_CONTROLLER_CLICK
  664.                         KEY_RETURN_VERIFY=KEY_GET_SCANCODE_CONTROLLER_INPUT(KEY_THIS_SCANCODE) 
  665.                        
  666.                 Case KEY_TYPE_MOUSE_AXIS_HORIZ
  667.                         KEY_MOUSEX_RETURN=KEY_GET_MOUSEX_INPUT()
  668.                         KEY_MOUSEXSPEED_OLD=MouseXSpeed()                      
  669.                         If KEY_MOUSEX_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  670.                                 If KEY_MOUSEX_RETURN<>0
  671.                                         KEY_RETURN_VERIFY=True
  672.                                 EndIf
  673.                         End If
  674.                
  675.                 Case KEY_TYPE_CONTROLLER_AXIS_HORIZ
  676.                         KEY_CONTROLLERX_RETURN=KEY_GET_CONTROLLERX_INPUT()
  677.                        
  678.                         If KEY_CONTROLLERX_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  679.                                 If KEY_CONTROLLERX_RETURN<>0
  680.                                         KEY_RETURN_VERIFY=True
  681.                                 EndIf
  682.                         End If 
  683.                        
  684.                 Case KEY_TYPE_MOUSE_AXIS_VERT
  685.                         KEY_MOUSEY_RETURN=KEY_GET_MOUSEY_INPUT()
  686.                         KEY_MOUSEYSPEED_OLD=MouseYSpeed()
  687.                        
  688.                         If KEY_MOUSEY_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  689.                                 If KEY_MOUSEY_RETURN<>0
  690.                                         KEY_RETURN_VERIFY=True
  691.                                 EndIf
  692.                         End If 
  693.                
  694.                 Case KEY_TYPE_CONTROLLER_AXIS_VERT
  695.                         KEY_CONTROLLERY_RETURN=KEY_GET_CONTROLLERY_INPUT()
  696.                        
  697.                         If KEY_CONTROLLERY_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  698.                                 If KEY_CONTROLLERY_RETURN<>0
  699.                                         KEY_RETURN_VERIFY=True
  700.                                 EndIf
  701.                         End If 
  702.  
  703.                 Case KEY_TYPE_MOUSEWHEEL_AXIS
  704.                         KEY_MOUSEWHEEL_RETURN=KEY_GET_MOUSEWHEEL_INPUT()
  705.                        
  706.                         If KEY_MOUSEWHEEL_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  707.                                 If KEY_MOUSEWHEEL_RETURN<>0
  708.                                         KEY_RETURN_VERIFY=True
  709.                                 EndIf
  710.                         End If 
  711.  
  712.                 Case KEY_TYPE_CONTROLLER_AXIS2_HORIZ
  713.                         KEY_CONTROLLERX2_RETURN=KEY_GET_CONTROLLERX2_INPUT()
  714.                        
  715.                         If KEY_CONTROLLERX2_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  716.                                 If KEY_CONTROLLERX2_RETURN<>0
  717.                                         KEY_RETURN_VERIFY=True
  718.                                 EndIf
  719.                         End If 
  720.  
  721.                 Case KEY_TYPE_CONTROLLER_AXIS2_VERT
  722.                         KEY_CONTROLLERY2_RETURN=KEY_GET_CONTROLLERY2_INPUT()
  723.                        
  724.                         If KEY_CONTROLLERY2_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  725.                                 If KEY_CONTROLLERY2_RETURN<>0
  726.                                         KEY_RETURN_VERIFY=True
  727.                                 EndIf
  728.                         End If
  729.                        
  730.                 Case KEY_TYPE_CONTROLLER_AXIS_THROTTLE
  731.                         KEY_CONTROLLER_THROTTLE_RETURN=KEY_GET_CONTROLLER_THROTTLE_INPUT()
  732.                        
  733.                         If KEY_CONTROLLER_THROTTLE_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  734.                                 If KEY_CONTROLLER_THROTTLE_RETURN<>0
  735.                                         KEY_RETURN_VERIFY=True
  736.                                 EndIf
  737.                         End If
  738.  
  739.                 Case KEY_TYPE_CONTROLLER_HAT_HORIZ
  740.                         KEY_CONTROLLER_HATX_RETURN=KEY_GET_CONTROLLER_HATX_INPUT()
  741.                        
  742.                         If KEY_CONTROLLER_HATX_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2 Or KEY_THIS_VECTOR=0
  743.                                 If KEY_CONTROLLER_HATX_RETURN<>0
  744.                                         KEY_RETURN_VERIFY=True
  745.                                 EndIf
  746.                         End If
  747.                        
  748.                 Case KEY_TYPE_CONTROLLER_HAT_VERT
  749.                         KEY_CONTROLLER_HATY_RETURN=KEY_GET_CONTROLLER_HATY_INPUT()
  750.                        
  751.                         If KEY_CONTROLLER_HATY_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2 Or KEY_THIS_VECTOR=0
  752.                                 If KEY_CONTROLLER_HATY_RETURN<>0
  753.                                         KEY_RETURN_VERIFY=True
  754.                                 EndIf
  755.                         End If
  756.        
  757.                 Case KEY_TYPE_CONTROLLER_ANALOGUE_PITCH
  758.                         KEY_CONTROLLER_PITCH_RETURN=KEY_GET_CONTROLLER_PITCH_INPUT()
  759.                        
  760.                         If KEY_CONTROLLER_PITCH_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  761.                                 If KEY_CONTROLLER_PITCH_RETURN<>0
  762.                                         KEY_RETURN_VERIFY=True
  763.                                 EndIf
  764.                         End If
  765.        
  766.                 Case KEY_TYPE_CONTROLLER_ANALOGUE_YAW
  767.                         KEY_CONTROLLER_YAW_RETURN=KEY_GET_CONTROLLER_YAW_INPUT()
  768.                        
  769.                         If KEY_CONTROLLER_YAW_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  770.                                 If KEY_CONTROLLER_YAW_RETURN<>0
  771.                                         KEY_RETURN_VERIFY=True
  772.                                 EndIf
  773.                         End If
  774.                        
  775.                 Case KEY_TYPE_CONTROLLER_ANALOGUE_ROLL
  776.                         KEY_CONTROLLER_ROLL_RETURN=KEY_GET_CONTROLLER_ROLL_INPUT()
  777.                        
  778.                         If KEY_CONTROLLER_ROLL_RETURN=KEY_THIS_VECTOR Or KEY_THIS_VECTOR=2
  779.                                 If KEY_CONTROLLER_ROLL_RETURN<>0
  780.                                         KEY_RETURN_VERIFY=True
  781.                                 EndIf
  782.                         End If 
  783.                
  784.                 Default
  785.                         ; NO CONTROL METHOD?           
  786.         End Select
  787.        
  788.         Return KEY_RETURN_VERIFY
  789.  
  790. End Function
  791.  
  792. Function KEY_GET_SCANCODE_KEYBOARD_INPUT(KEY_THIS_SCANCODE)    
  793.         KEY_RETURN_VERIFY=False
  794.         If (KeyHit(KEY_THIS_SCANCODE)>0 Or KeyDown(KEY_THIS_SCANCODE))                 
  795.                 KEY_RETURN_VERIFY=True
  796.         End If 
  797.  
  798.         Return KEY_RETURN_VERIFY
  799.        
  800. End Function
  801.  
  802. Function KEY_GET_SCANCODE_MOUSE_INPUT(KEY_THIS_SCANCODE)       
  803.         KEY_RETURN_VERIFY=False
  804.         KEY_THIS_SCANCODE=KEY_THIS_SCANCODE-237
  805.         If (MouseHit(KEY_THIS_SCANCODE)>0 Or MouseDown(KEY_THIS_SCANCODE))                     
  806.                 KEY_RETURN_VERIFY=True
  807.         End If
  808.        
  809.         Return KEY_RETURN_VERIFY
  810. End Function
  811.        
  812. Function KEY_GET_SCANCODE_CONTROLLER_INPUT(KEY_THIS_SCANCODE)  
  813.         KEY_RETURN_VERIFY=False
  814.         KEY_THIS_SCANCODE=KEY_THIS_SCANCODE-244
  815.         If (JoyHit(KEY_THIS_SCANCODE)>0 Or JoyDown(KEY_THIS_SCANCODE))                 
  816.                 KEY_RETURN_VERIFY=True
  817.         End If
  818.        
  819.         Return KEY_RETURN_VERIFY
  820. End Function   
  821.        
  822. Function KEY_GET_MOUSEX_INPUT()
  823.         KEY_RETURN_VECTOR=0
  824.         KEY_RETURN_VECTOR=Sgn(MouseXSpeed()-KEY_MOUSEXSPEED_OLD)
  825.         KEY_MOUSEXSPEED_OLD=MouseXSpeed()
  826.         Return KEY_RETURN_VECTOR
  827. End Function           
  828.        
  829. Function KEY_GET_MOUSEY_INPUT()
  830.         KEY_RETURN_VECTOR=0
  831.         KEY_RETURN_VECTOR=Sgn(MouseYSpeed()-KEY_MOUSEYSPEED_OLD)
  832.         KEY_MOUSEXYSPEED_OLD=MouseYSpeed()
  833.         Return KEY_RETURN_VECTOR
  834. End Function           
  835.  
  836. Function KEY_GET_CONTROLLERX_INPUT()   
  837.         KEY_RETURN_VECTOR=0
  838.         ; DO SOME FIXING FOR POOR CALIBRATION
  839.         If Abs(JoyX#())<0.1  Then Return 0
  840.         KEY_RETURN_VECTOR=Sgn(JoyX#())
  841.         Return KEY_RETURN_VECTOR
  842. End Function   
  843.  
  844. Function KEY_GET_CONTROLLERY_INPUT()
  845.         ; DO SOME FIXING FOR POOR CALIBRATION  
  846.         If Abs(JoyY#())<0.1  Then Return 0     
  847.         KEY_RETURN_VECTOR=0
  848.         KEY_RETURN_VECTOR=Sgn(JoyY#())
  849.         Return KEY_RETURN_VECTOR
  850. End Function   
  851.  
  852. Function KEY_GET_MOUSEWHEEL_INPUT()    
  853.         KEY_RETURN_VECTOR=0
  854.         KEY_RETURN_VECTOR=Sgn(MouseZSpeed())
  855.         Return KEY_RETURN_VECTOR
  856. End Function   
  857.        
  858. Function KEY_GET_CONTROLLERX2_INPUT()  
  859.         ; DO SOME FIXING FOR POOR CALIBRATION
  860.         If Abs(JoyU#())<0.1  Then Return 0
  861.         KEY_RETURN_VECTOR=0
  862.         KEY_RETURN_VECTOR=Sgn(JoyU#())
  863.         Return KEY_RETURN_VECTOR
  864. End Function   
  865.  
  866. Function KEY_GET_CONTROLLERY2_INPUT()  
  867.         ; DO SOME FIXING FOR POOR CALIBRATION
  868.         If Abs(JoyV#())<0.1  Then Return 0
  869.         KEY_RETURN_VECTOR=0
  870.         KEY_RETURN_VECTOR=Sgn(JoyV#())
  871.         Return KEY_RETURN_VECTOR
  872. End Function   
  873.        
  874. Function KEY_GET_CONTROLLER_THROTTLE_INPUT()   
  875.         ; DO SOME FIXING FOR POOR CALIBRATION
  876.         If Abs(JoyZ#())<0.1  Then Return 0
  877.         KEY_RETURN_VECTOR=0
  878.         KEY_RETURN_VECTOR=Sgn(JoyZ#())
  879.         Return KEY_RETURN_VECTOR
  880. End Function
  881.  
  882. Function KEY_GET_CONTROLLER_HATX_INPUT()       
  883.         KEY_RETURN_VECTOR=JoyHat()
  884.         If KEY_RETURN_VECTOR>44 And KEY_RETURN_VECTOR<136
  885.                 Return 1
  886.         Else If KEY_RETURN_VECTOR>224 And KEY_RETURN_VECTOR<316
  887.                 Return -1
  888.         Else
  889.                 Return 0
  890.         End If
  891. End Function
  892.  
  893. Function KEY_GET_CONTROLLER_HATY_INPUT()       
  894.         KEY_RETURN_VECTOR=JoyHat()
  895.         If KEY_RETURN_VECTOR>314 Or KEY_RETURN_VECTOR<46 And KEY_RETURN_VECTOR<>-1
  896.                 Return 1
  897.         Else If KEY_RETURN_VECTOR>134 And KEY_RETURN_VECTOR<226
  898.                 Return -1
  899.         Else
  900.                 Return 0
  901.         End If
  902. End Function
  903.  
  904. Function KEY_GET_CONTROLLER_PITCH_INPUT()      
  905.         ; DO SOME FIXING FOR POOR CALIBRATION
  906.         If Abs(JoyPitch#())<0.1  Then Return 0
  907.         KEY_RETURN_VECTOR=Sgn(JoyPitch#())
  908.         Return KEY_RETURN_VECTOR
  909. End Function
  910.  
  911. Function KEY_GET_CONTROLLER_YAW_INPUT()
  912.         ; DO SOME FIXING FOR POOR CALIBRATION
  913.         If Abs(JoyYaw#())<0.1  Then Return 0
  914.         KEY_RETURN_VECTOR=Sgn(JoyYaw#())
  915.         Return KEY_RETURN_VECTOR
  916. End Function
  917.  
  918. Function KEY_GET_CONTROLLER_ROLL_INPUT()       
  919.         ; DO SOME FIXING FOR POOR CALIBRATION
  920.         If Abs(JoyRoll#())<0.1  Then Return 0
  921.         KEY_RETURN_VECTOR=Sgn(JoyRoll#())
  922.         Return KEY_RETURN_VECTOR
  923. End Function


Comments :


Stevie G(Posted 1+ years ago)

 You sure that's written in Blitz - looks more like COBOL ;) I'm sure this would be handy for alot of people so how about some example code?Just an observation but you're missing alot of analogue commands such as pitch / roll / hat etc.. and what about joyhit, mousehit and keyhit?


plash(Posted 1+ years ago)

 Aye.. you've gone a bit rogue with this - hardly looks like *basic* and the function names are ridiculously long.


_PJ_(Posted 1+ years ago)

 .


plash(Posted 1+ years ago)

 The comments, and everything else, in CAPS LOCK doesn't help much either..


_PJ_(Posted 1+ years ago)

 Are HAT switches used a lot?I have no experience of them so they are not considered for now.JoyHit() etc. exists as JoyDown() There are flush commands in there which would negate the use of JoyHit/MouseHit etc.I will try and see how I can slot them in somewhere if necessary though.


_PJ_(Posted 1+ years ago)

 <div class="quote"> (Posted 3 minutes ago)  The comments, and everything else, in CAPS LOCK doesn't help much either  </div>Sorry, this is a habit from other prgramming techniques where function names and constants are clearer marked as capitals.If it's easier, why not just copy & paste into a WP and format to 'proper'  case :)


plash(Posted 1+ years ago)

 I only use Max now, so this code is of no use to me; I just thought I would give some friendly advice :)


Stevie G(Posted 1+ years ago)

 You need joyhat to make use of the right stick on an xbox360  controller if I remember.


_PJ_(Posted 1+ years ago)

 alrighty, bear with me Im re-working a lot of it and will incorporate the missing controls.


_PJ_(Posted 1+ years ago)

 Example code:
Code: [Select]
Graphics 1024,768,2

;This is the line to include the Controller functions library.
Include "g_inc_input.bb"

While Not KeyDown(1)
SCANCODE=KEY_GET_SCANCODE_OF_INPUT()

If SCANCODE<>0

COMMAND=KEY_GETCOMMAND_BY_SCANCODE(SCANCODE)

DISPLAY$="NOT A COMMAND"

If (COMMAND>0 And COMMAND<KEY_COMMANDSET_MAX)
DISPLAY$=KEY_S_DESCRIPTION$(COMMAND)
End If

Print "CONTROL: "+KEY_S_FRIENDLY_NAME$(SCANCODE)+" ("+DISPLAY$+")"

End If

FlushMouse
FlushKeys
FlushJoy

Wend



hockings(Posted 1+ years ago)

 Any update with the missing controls?


_PJ_(Posted 1+ years ago)

 Ive run into a few issues at the mo. Hopefully though, I'll get something posted within the next two weeks or so. (Sorry for the delay, I dont have so much time for Blitz these days)


Nexinarus(Posted 1+ years ago)

 in my opinion, its not bad, but wouldnt it be easier to load a CFG file or something to go with it?


Rick Nasher(Posted 1+ years ago)

 Missing the mousewheel.. ;-) [/i]

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal