AddVirtualPadButton ( pad,button[,label$] )

Parameters

pad: gamepad group. button: standard position 1..21. label: optional text.

Description

Adds a momentary button and returns its control handle. Raw and standard button numbers match. Buttons 15..21 allow guide/misc/paddle/touchpad bindings omitted by the presets. Use VirtualControlRect to position it; multiple buttons can bind the same position.

Native overlays are supported on iOS, Android, macOS and Windows, including IDE run presets and saved layouts, and on the web, where the page draws them over the canvas. Controls use presentation coordinates, remain responsive during blocking input waits, and are excluded from SaveBuffer. See the mobile input guide.

Example

; AddVirtualPadButton Example
; Virtual pad: existing Joy and Gamepad APIs, no touch update/draw commands.
Graphics 800,480,0,2
SetBuffer BackBuffer()
Local pad=CreateVirtualGamepad("standard")
If pad=0 Then RuntimeError MobileInputError$()
; Keep only the controls used by this game.
VirtualControlVisible VirtualControl(pad,"east"),0
VirtualControlVisible VirtualControl(pad,"west"),0
VirtualControlVisible VirtualControl(pad,"north"),0
VirtualControlVisible VirtualControl(pad,"left-shoulder"),0
VirtualControlVisible VirtualControl(pad,"right-shoulder"),0
VirtualControlVisible VirtualControl(pad,"left-click"),0
VirtualControlVisible VirtualControl(pad,"right-click"),0
Local port=VirtualGamepadPort(pad),x#=400,y#=210,score=0
extra=AddVirtualPadButton(pad,1,"Action")
VirtualControlRect extra,2,150,12,80,44
Local target_x#=530,target_y#=210,previous=MilliSecs()
While Not KeyHit(1)
    If GamepadHit(7,port) Then Exit
    If GamepadHit(8,port) Then score=0
    Local now=MilliSecs(),dt#=Float(now-previous)/1000
    previous=now
    If dt<0 Then dt=0
    If dt>0.05 Then dt=0.05
    Local speed#=180*(1-0.75*GamepadAxis(5,port)+GamepadAxis(6,port))
    x=x+(GamepadAxis(1,port)+GamepadDown(14,port)-GamepadDown(13,port))*speed*dt
    y=y+(GamepadAxis(2,port)+GamepadDown(12,port)-GamepadDown(11,port))*speed*dt
    If x<15 Then x=15
    If x>785 Then x=785
    If y<85 Then y=85
    If y>465 Then y=465
    If GamepadHit(1,port)
        If (x-target_x)^2+(y-target_y)^2<65^2
            score=score+1
            target_x=Rnd(180,610)
            target_y=Rnd(120,280)
        EndIf
    EndIf
    Cls
    Color 255,255,255
    Text 150,48,"Move L/d-pad; aim R; LT slows, RT boosts. Score: "+score
    Text 150,68,"Tap A near gold. Start resets; Back exits. Hat: "+JoyHat(port)
    Text 150,88,"Triggers: "+GamepadAxis(5,port)+", "+GamepadAxis(6,port)
    Color 255,200,40
    Oval target_x-15,target_y-15,30,30,True
    Color 70,200,255
    Oval x-12,y-12,24,24,True
    Line x,y,x+GamepadAxis(3,port)*55,y+GamepadAxis(4,port)*55
    Flip
Wend
FreeVirtualControls pad
End

Open example ยท Command index