How can I disable a key from being used?
Blitz3D Forums/Blitz3D Beginners Area/How can I disable a key from being used?
| ||
How can I disable a key from being used? Here is what I am trying to do If KeyHit(57) DisableKey(57) EndIf How? |
| ||
FlushKeys() [Edit] Local State_Key% = False Local Key_Space% = 57 If KeyHit(Key_Space%) = True And State_Key% = False Print "Key 57 Hit" State_Key% = true End If Last edited 2012 |
| ||
With computer languages you can only affect things inside the computer, you have no change to manipulate the user. So... How can I disable a key from being used? ...the anser is No way! ;-) But, why not simply ingnore it? In Blitz nothing happens with keys before you did not code it. So, if you will not allow SPACE to be added to a string, do not add it: Local Name$ Repeat Key=GetKey() If Key>0 then Name=Name+ Chr(Key) Endif Print Name Until KeyHit(1) becomes: Local Name$ Repeat Key=Allowed( GetKey() ) If Key>0 then Name=Name+ Chr(Key) Endif Print Name Until KeyHit(1) Function Allowed%(Key%) ; GetKey works with ASCII not Scancodes! If Key= 0 Then Return 0 If Key= 32 Then Return 0 ; more lines here f.e. forbid all numbers: If (Key>47) and (Key< 58) Then Return 0 Return Key End Function This also could be a possibility to switch key permission ON or OFF during the game: Dim CancelKey%(255) CancelKey(57)=TRUE For i%=48 to 57 CancelKey(i)=TRUE Next Time=Millisecs()+10*1000 Repeat If Allowed(57) Then ; do something in the game Endif ; sample: allow SPACE after 10 seconds: If Time<Millisecs() CancelKey(57)=FALSE Endif Until KeyHit(1) Function Allowed%(KeyNr%) KeyH%=KeyHit(KeyNr) If CancelKey(KeyNr)=TRUE then Return 0 Return KeyH End Function |