Detect Tab key + either shift key

BlitzMax Forums/BlitzMax Beginners Area/Detect Tab key + either shift key

TAS(Posted 2012) [#1]
Why dosn't this work?

Select EventData()
Case KEY_TAB
If KeyDown(KEY_LSHIFT) Or KeyDown(KEY_RSHIFT)
mapX=MapX-GadgetWidth(screen)
MapX=Max(MapX,0)
Else
mapX=MapX+GadgetWidth(screen)
MapX=Min(MapX,MapXmax)
EndIf
update_screen()


col(Posted 2012) [#2]
Hiya,

Some gadgets don't have default keyboard or mouse events emitted. To set them for specific gadgets look into
SetGadgetSensitivity(gadget:TGadget,flags)


You can use
Print CurrentEvent.ToString()

to see the event datas to aid debugging.


An example:-
Import MaxGui.Drivers

Global Window:TGadget = CreateWindow("Test",0,0,300,200,Null,WINDOW_DEFAULT|WINDOW_CENTERED)
SetGadgetSensitivity(Window,SENSITIZE_ALL)

Repeat
	WaitEvent()
	
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
			
		Case EVENT_KEYDOWN
			If EventData() = KEY_TAB And EventMods() = 1 '1 for any SHIFT, 2 for any CTRL
				Print CurrentEvent.ToString()
			EndIf
	EndSelect
Forever



TAS(Posted 2012) [#3]
Thanks, it looks like all I needed to use was the EventsMod() function. This works;

Function Main_KeyUp()
Select EventData()
Case KEY_TAB
If EventMods()=MODIFIER_SHIFT
mapX=MapX-GadgetWidth(screen)
MapX=Max(MapX,0)
Else
mapX=MapX+GadgetWidth(screen)
MapX=Min(MapX,MapXmax)
EndIf
update_screen()
..........