proc auto_config_joypad { } {
    # clear existing joypad configuration
    global joystick1_config
    dict for {btn binding} $joystick1_config { dict set joystick1_config $btn {} }

    bind_default "joy1 button2 down" "keymatrixdown 6 0x20"
    bind_default "joy1 button2 up" "keymatrixup 6 0x20"
    bind_default "joy1 button3 down" "keymatrixdown 6 0x40"
    bind_default "joy1 button3 up" "keymatrixup 6 0x40"
    bind_default "joy1 button6 down" "main_menu_open"
    bind_default "joy1 button7 down" "toggle_osd_keyboard"
    bind "joy1 button6 down" -layer osd_menu "main_menu_close"
    dict lappend joystick1_config A button1
    dict lappend joystick1_config B button0
    dict lappend joystick1_config DOWN +axis1
    dict lappend joystick1_config DOWN D_hat0
    dict lappend joystick1_config LEFT -axis0
    dict lappend joystick1_config LEFT L_hat0
    dict lappend joystick1_config RIGHT +axis0
    dict lappend joystick1_config RIGHT R_hat0
    dict lappend joystick1_config UP -axis1
    dict lappend joystick1_config UP U_hat0
}
