gitextract_ilg710ob/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ └── ISSUE_TEMPLATE/ │ ├── bug-.md │ └── question.md ├── .gitignore ├── .junie/ │ └── guidelines.md ├── CHANGES.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── TODO.md ├── _assets/ │ ├── .gdignore │ ├── action.afdesign │ ├── arrows.afdesign │ ├── bg.afdesign │ ├── boat.afdesign │ ├── joy.afdesign │ ├── logo_editor_small.afdesign │ ├── mouse.afdesign │ ├── node_icons.afdesign │ ├── spaceship.afdesign │ └── touch.afdesign ├── addons/ │ ├── gdUnit4/ │ │ ├── GdUnitRunner.cfg │ │ ├── LICENSE │ │ ├── bin/ │ │ │ ├── GdUnitBuildTool.gd │ │ │ ├── GdUnitBuildTool.gd.uid │ │ │ ├── GdUnitCmdTool.gd │ │ │ ├── GdUnitCmdTool.gd.uid │ │ │ ├── GdUnitCopyLog.gd │ │ │ └── GdUnitCopyLog.gd.uid │ │ ├── plugin.cfg │ │ ├── plugin.gd │ │ ├── plugin.gd.uid │ │ ├── runtest.cmd │ │ ├── runtest.sh │ │ └── src/ │ │ ├── Comparator.gd │ │ ├── Comparator.gd.uid │ │ ├── Fuzzers.gd │ │ ├── Fuzzers.gd.uid │ │ ├── GdUnitArrayAssert.gd │ │ ├── GdUnitArrayAssert.gd.uid │ │ ├── GdUnitAssert.gd │ │ ├── GdUnitAssert.gd.uid │ │ ├── GdUnitAwaiter.gd │ │ ├── GdUnitAwaiter.gd.uid │ │ ├── GdUnitBoolAssert.gd │ │ ├── GdUnitBoolAssert.gd.uid │ │ ├── GdUnitConstants.gd │ │ ├── GdUnitConstants.gd.uid │ │ ├── GdUnitDictionaryAssert.gd │ │ ├── GdUnitDictionaryAssert.gd.uid │ │ ├── GdUnitFailureAssert.gd │ │ ├── GdUnitFailureAssert.gd.uid │ │ ├── GdUnitFileAssert.gd │ │ ├── GdUnitFileAssert.gd.uid │ │ ├── GdUnitFloatAssert.gd │ │ ├── GdUnitFloatAssert.gd.uid │ │ ├── GdUnitFuncAssert.gd │ │ ├── GdUnitFuncAssert.gd.uid │ │ ├── GdUnitGodotErrorAssert.gd │ │ ├── GdUnitGodotErrorAssert.gd.uid │ │ ├── GdUnitIntAssert.gd │ │ ├── GdUnitIntAssert.gd.uid │ │ ├── GdUnitObjectAssert.gd │ │ ├── GdUnitObjectAssert.gd.uid │ │ ├── GdUnitResultAssert.gd │ │ ├── GdUnitResultAssert.gd.uid │ │ ├── GdUnitSceneRunner.gd │ │ ├── GdUnitSceneRunner.gd.uid │ │ ├── GdUnitSignalAssert.gd │ │ ├── GdUnitSignalAssert.gd.uid │ │ ├── GdUnitStringAssert.gd │ │ ├── GdUnitStringAssert.gd.uid │ │ ├── GdUnitTestSuite.gd │ │ ├── GdUnitTestSuite.gd.uid │ │ ├── GdUnitTuple.gd │ │ ├── GdUnitTuple.gd.uid │ │ ├── GdUnitValueExtractor.gd │ │ ├── GdUnitValueExtractor.gd.uid │ │ ├── GdUnitVectorAssert.gd │ │ ├── GdUnitVectorAssert.gd.uid │ │ ├── asserts/ │ │ │ ├── CallBackValueProvider.gd │ │ │ ├── CallBackValueProvider.gd.uid │ │ │ ├── DefaultValueProvider.gd │ │ │ ├── DefaultValueProvider.gd.uid │ │ │ ├── GdAssertMessages.gd │ │ │ ├── GdAssertMessages.gd.uid │ │ │ ├── GdAssertReports.gd │ │ │ ├── GdAssertReports.gd.uid │ │ │ ├── GdUnitArrayAssertImpl.gd │ │ │ ├── GdUnitArrayAssertImpl.gd.uid │ │ │ ├── GdUnitAssertImpl.gd │ │ │ ├── GdUnitAssertImpl.gd.uid │ │ │ ├── GdUnitAssertions.gd │ │ │ ├── GdUnitAssertions.gd.uid │ │ │ ├── GdUnitBoolAssertImpl.gd │ │ │ ├── GdUnitBoolAssertImpl.gd.uid │ │ │ ├── GdUnitDictionaryAssertImpl.gd │ │ │ ├── GdUnitDictionaryAssertImpl.gd.uid │ │ │ ├── GdUnitFailureAssertImpl.gd │ │ │ ├── GdUnitFailureAssertImpl.gd.uid │ │ │ ├── GdUnitFileAssertImpl.gd │ │ │ ├── GdUnitFileAssertImpl.gd.uid │ │ │ ├── GdUnitFloatAssertImpl.gd │ │ │ ├── GdUnitFloatAssertImpl.gd.uid │ │ │ ├── GdUnitFuncAssertImpl.gd │ │ │ ├── GdUnitFuncAssertImpl.gd.uid │ │ │ ├── GdUnitGodotErrorAssertImpl.gd │ │ │ ├── GdUnitGodotErrorAssertImpl.gd.uid │ │ │ ├── GdUnitIntAssertImpl.gd │ │ │ ├── GdUnitIntAssertImpl.gd.uid │ │ │ ├── GdUnitObjectAssertImpl.gd │ │ │ ├── GdUnitObjectAssertImpl.gd.uid │ │ │ ├── GdUnitResultAssertImpl.gd │ │ │ ├── GdUnitResultAssertImpl.gd.uid │ │ │ ├── GdUnitSignalAssertImpl.gd │ │ │ ├── GdUnitSignalAssertImpl.gd.uid │ │ │ ├── GdUnitStringAssertImpl.gd │ │ │ ├── GdUnitStringAssertImpl.gd.uid │ │ │ ├── GdUnitVectorAssertImpl.gd │ │ │ ├── GdUnitVectorAssertImpl.gd.uid │ │ │ ├── ValueProvider.gd │ │ │ └── ValueProvider.gd.uid │ │ ├── cmd/ │ │ │ ├── CmdArgumentParser.gd │ │ │ ├── CmdArgumentParser.gd.uid │ │ │ ├── CmdCommand.gd │ │ │ ├── CmdCommand.gd.uid │ │ │ ├── CmdCommandHandler.gd │ │ │ ├── CmdCommandHandler.gd.uid │ │ │ ├── CmdConsole.gd │ │ │ ├── CmdConsole.gd.uid │ │ │ ├── CmdOption.gd │ │ │ ├── CmdOption.gd.uid │ │ │ ├── CmdOptions.gd │ │ │ └── CmdOptions.gd.uid │ │ ├── core/ │ │ │ ├── GdArrayTools.gd │ │ │ ├── GdArrayTools.gd.uid │ │ │ ├── GdDiffTool.gd │ │ │ ├── GdDiffTool.gd.uid │ │ │ ├── GdFunctionDoubler.gd │ │ │ ├── GdFunctionDoubler.gd.uid │ │ │ ├── GdObjects.gd │ │ │ ├── GdObjects.gd.uid │ │ │ ├── GdUnit4Version.gd │ │ │ ├── GdUnit4Version.gd.uid │ │ │ ├── GdUnitClassDoubler.gd │ │ │ ├── GdUnitClassDoubler.gd.uid │ │ │ ├── GdUnitFileAccess.gd │ │ │ ├── GdUnitFileAccess.gd.uid │ │ │ ├── GdUnitObjectInteractions.gd │ │ │ ├── GdUnitObjectInteractions.gd.uid │ │ │ ├── GdUnitObjectInteractionsTemplate.gd │ │ │ ├── GdUnitObjectInteractionsTemplate.gd.uid │ │ │ ├── GdUnitProperty.gd │ │ │ ├── GdUnitProperty.gd.uid │ │ │ ├── GdUnitResult.gd │ │ │ ├── GdUnitResult.gd.uid │ │ │ ├── GdUnitRunner.gd │ │ │ ├── GdUnitRunner.gd.uid │ │ │ ├── GdUnitRunner.tscn │ │ │ ├── GdUnitRunnerConfig.gd │ │ │ ├── GdUnitRunnerConfig.gd.uid │ │ │ ├── GdUnitSceneRunnerImpl.gd │ │ │ ├── GdUnitSceneRunnerImpl.gd.uid │ │ │ ├── GdUnitScriptType.gd │ │ │ ├── GdUnitScriptType.gd.uid │ │ │ ├── GdUnitSettings.gd │ │ │ ├── GdUnitSettings.gd.uid │ │ │ ├── GdUnitSignalAwaiter.gd │ │ │ ├── GdUnitSignalAwaiter.gd.uid │ │ │ ├── GdUnitSignalCollector.gd │ │ │ ├── GdUnitSignalCollector.gd.uid │ │ │ ├── GdUnitSignals.gd │ │ │ ├── GdUnitSignals.gd.uid │ │ │ ├── GdUnitSingleton.gd │ │ │ ├── GdUnitSingleton.gd.uid │ │ │ ├── GdUnitTestSuiteBuilder.gd │ │ │ ├── GdUnitTestSuiteBuilder.gd.uid │ │ │ ├── GdUnitTestSuiteScanner.gd │ │ │ ├── GdUnitTestSuiteScanner.gd.uid │ │ │ ├── GdUnitTools.gd │ │ │ ├── GdUnitTools.gd.uid │ │ │ ├── GodotVersionFixures.gd │ │ │ ├── GodotVersionFixures.gd.uid │ │ │ ├── LocalTime.gd │ │ │ ├── LocalTime.gd.uid │ │ │ ├── _TestCase.gd │ │ │ ├── _TestCase.gd.uid │ │ │ ├── assets/ │ │ │ │ └── touch-button.png.import │ │ │ ├── command/ │ │ │ │ ├── GdUnitCommand.gd │ │ │ │ ├── GdUnitCommand.gd.uid │ │ │ │ ├── GdUnitCommandHandler.gd │ │ │ │ ├── GdUnitCommandHandler.gd.uid │ │ │ │ ├── GdUnitShortcut.gd │ │ │ │ ├── GdUnitShortcut.gd.uid │ │ │ │ ├── GdUnitShortcutAction.gd │ │ │ │ └── GdUnitShortcutAction.gd.uid │ │ │ ├── discovery/ │ │ │ │ ├── GdUnitTestDiscoverGuard.gd │ │ │ │ ├── GdUnitTestDiscoverGuard.gd.uid │ │ │ │ ├── GdUnitTestDiscoverer.gd │ │ │ │ └── GdUnitTestDiscoverer.gd.uid │ │ │ ├── event/ │ │ │ │ ├── GdUnitEvent.gd │ │ │ │ ├── GdUnitEvent.gd.uid │ │ │ │ ├── GdUnitEventInit.gd │ │ │ │ ├── GdUnitEventInit.gd.uid │ │ │ │ ├── GdUnitEventStop.gd │ │ │ │ ├── GdUnitEventStop.gd.uid │ │ │ │ ├── GdUnitEventTestDiscoverEnd.gd │ │ │ │ ├── GdUnitEventTestDiscoverEnd.gd.uid │ │ │ │ ├── GdUnitEventTestDiscoverStart.gd │ │ │ │ ├── GdUnitEventTestDiscoverStart.gd.uid │ │ │ │ ├── GdUnitEventTestDiscoverTestAdded.gd │ │ │ │ ├── GdUnitEventTestDiscoverTestAdded.gd.uid │ │ │ │ ├── GdUnitEventTestDiscoverTestRemoved.gd │ │ │ │ ├── GdUnitEventTestDiscoverTestRemoved.gd.uid │ │ │ │ ├── GdUnitEventTestDiscoverTestSuiteAdded.gd │ │ │ │ └── GdUnitEventTestDiscoverTestSuiteAdded.gd.uid │ │ │ ├── execution/ │ │ │ │ ├── GdUnitExecutionContext.gd │ │ │ │ ├── GdUnitExecutionContext.gd.uid │ │ │ │ ├── GdUnitMemoryObserver.gd │ │ │ │ ├── GdUnitMemoryObserver.gd.uid │ │ │ │ ├── GdUnitTestReportCollector.gd │ │ │ │ ├── GdUnitTestReportCollector.gd.uid │ │ │ │ ├── GdUnitTestSuiteExecutor.gd │ │ │ │ ├── GdUnitTestSuiteExecutor.gd.uid │ │ │ │ └── stages/ │ │ │ │ ├── GdUnitTestCaseAfterStage.gd │ │ │ │ ├── GdUnitTestCaseAfterStage.gd.uid │ │ │ │ ├── GdUnitTestCaseBeforeStage.gd │ │ │ │ ├── GdUnitTestCaseBeforeStage.gd.uid │ │ │ │ ├── GdUnitTestCaseExecutionStage.gd │ │ │ │ ├── GdUnitTestCaseExecutionStage.gd.uid │ │ │ │ ├── GdUnitTestSuiteAfterStage.gd │ │ │ │ ├── GdUnitTestSuiteAfterStage.gd.uid │ │ │ │ ├── GdUnitTestSuiteBeforeStage.gd │ │ │ │ ├── GdUnitTestSuiteBeforeStage.gd.uid │ │ │ │ ├── GdUnitTestSuiteExecutionStage.gd │ │ │ │ ├── GdUnitTestSuiteExecutionStage.gd.uid │ │ │ │ ├── IGdUnitExecutionStage.gd │ │ │ │ ├── IGdUnitExecutionStage.gd.uid │ │ │ │ ├── fuzzed/ │ │ │ │ │ ├── GdUnitTestCaseFuzzedExecutionStage.gd │ │ │ │ │ ├── GdUnitTestCaseFuzzedExecutionStage.gd.uid │ │ │ │ │ ├── GdUnitTestCaseFuzzedTestStage.gd │ │ │ │ │ └── GdUnitTestCaseFuzzedTestStage.gd.uid │ │ │ │ ├── parameterized/ │ │ │ │ │ ├── GdUnitTestCaseParameterSetTestStage.gd │ │ │ │ │ ├── GdUnitTestCaseParameterSetTestStage.gd.uid │ │ │ │ │ ├── GdUnitTestCaseParameterizedExecutionStage.gd │ │ │ │ │ ├── GdUnitTestCaseParameterizedExecutionStage.gd.uid │ │ │ │ │ ├── GdUnitTestCaseParameterizedTestStage.gd │ │ │ │ │ └── GdUnitTestCaseParameterizedTestStage.gd.uid │ │ │ │ └── single/ │ │ │ │ ├── GdUnitTestCaseSingleExecutionStage.gd │ │ │ │ ├── GdUnitTestCaseSingleExecutionStage.gd.uid │ │ │ │ ├── GdUnitTestCaseSingleTestStage.gd │ │ │ │ └── GdUnitTestCaseSingleTestStage.gd.uid │ │ │ ├── parse/ │ │ │ │ ├── GdClassDescriptor.gd │ │ │ │ ├── GdClassDescriptor.gd.uid │ │ │ │ ├── GdDefaultValueDecoder.gd │ │ │ │ ├── GdDefaultValueDecoder.gd.uid │ │ │ │ ├── GdFunctionArgument.gd │ │ │ │ ├── GdFunctionArgument.gd.uid │ │ │ │ ├── GdFunctionDescriptor.gd │ │ │ │ ├── GdFunctionDescriptor.gd.uid │ │ │ │ ├── GdScriptParser.gd │ │ │ │ ├── GdScriptParser.gd.uid │ │ │ │ ├── GdUnitExpressionRunner.gd │ │ │ │ ├── GdUnitExpressionRunner.gd.uid │ │ │ │ ├── GdUnitTestParameterSetResolver.gd │ │ │ │ └── GdUnitTestParameterSetResolver.gd.uid │ │ │ ├── report/ │ │ │ │ ├── GdUnitReport.gd │ │ │ │ └── GdUnitReport.gd.uid │ │ │ ├── templates/ │ │ │ │ └── test_suite/ │ │ │ │ ├── GdUnitTestSuiteDefaultTemplate.gd │ │ │ │ ├── GdUnitTestSuiteDefaultTemplate.gd.uid │ │ │ │ ├── GdUnitTestSuiteTemplate.gd │ │ │ │ └── GdUnitTestSuiteTemplate.gd.uid │ │ │ └── thread/ │ │ │ ├── GdUnitThreadContext.gd │ │ │ ├── GdUnitThreadContext.gd.uid │ │ │ ├── GdUnitThreadManager.gd │ │ │ └── GdUnitThreadManager.gd.uid │ │ ├── doubler/ │ │ │ ├── CallableDoubler.gd │ │ │ └── CallableDoubler.gd.uid │ │ ├── extractors/ │ │ │ ├── GdUnitFuncValueExtractor.gd │ │ │ └── GdUnitFuncValueExtractor.gd.uid │ │ ├── fuzzers/ │ │ │ ├── FloatFuzzer.gd │ │ │ ├── FloatFuzzer.gd.uid │ │ │ ├── Fuzzer.gd │ │ │ ├── Fuzzer.gd.uid │ │ │ ├── IntFuzzer.gd │ │ │ ├── IntFuzzer.gd.uid │ │ │ ├── StringFuzzer.gd │ │ │ ├── StringFuzzer.gd.uid │ │ │ ├── Vector2Fuzzer.gd │ │ │ ├── Vector2Fuzzer.gd.uid │ │ │ ├── Vector3Fuzzer.gd │ │ │ └── Vector3Fuzzer.gd.uid │ │ ├── matchers/ │ │ │ ├── AnyArgumentMatcher.gd │ │ │ ├── AnyArgumentMatcher.gd.uid │ │ │ ├── AnyBuildInTypeArgumentMatcher.gd │ │ │ ├── AnyBuildInTypeArgumentMatcher.gd.uid │ │ │ ├── AnyClazzArgumentMatcher.gd │ │ │ ├── AnyClazzArgumentMatcher.gd.uid │ │ │ ├── ChainedArgumentMatcher.gd │ │ │ ├── ChainedArgumentMatcher.gd.uid │ │ │ ├── EqualsArgumentMatcher.gd │ │ │ ├── EqualsArgumentMatcher.gd.uid │ │ │ ├── GdUnitArgumentMatcher.gd │ │ │ ├── GdUnitArgumentMatcher.gd.uid │ │ │ ├── GdUnitArgumentMatchers.gd │ │ │ └── GdUnitArgumentMatchers.gd.uid │ │ ├── mocking/ │ │ │ ├── GdUnitMock.gd │ │ │ ├── GdUnitMock.gd.uid │ │ │ ├── GdUnitMockBuilder.gd │ │ │ ├── GdUnitMockBuilder.gd.uid │ │ │ ├── GdUnitMockFunctionDoubler.gd │ │ │ ├── GdUnitMockFunctionDoubler.gd.uid │ │ │ ├── GdUnitMockImpl.gd │ │ │ └── GdUnitMockImpl.gd.uid │ │ ├── monitor/ │ │ │ ├── ErrorLogEntry.gd │ │ │ ├── ErrorLogEntry.gd.uid │ │ │ ├── GdUnitMonitor.gd │ │ │ ├── GdUnitMonitor.gd.uid │ │ │ ├── GdUnitOrphanNodesMonitor.gd │ │ │ ├── GdUnitOrphanNodesMonitor.gd.uid │ │ │ ├── GodotGdErrorMonitor.gd │ │ │ └── GodotGdErrorMonitor.gd.uid │ │ ├── mono/ │ │ │ ├── GdUnit4CSharpApi.cs │ │ │ ├── GdUnit4CSharpApi.cs.uid │ │ │ ├── GdUnit4CSharpApiLoader.gd │ │ │ └── GdUnit4CSharpApiLoader.gd.uid │ │ ├── network/ │ │ │ ├── GdUnitServer.gd │ │ │ ├── GdUnitServer.gd.uid │ │ │ ├── GdUnitServer.tscn │ │ │ ├── GdUnitServerConstants.gd │ │ │ ├── GdUnitServerConstants.gd.uid │ │ │ ├── GdUnitTask.gd │ │ │ ├── GdUnitTask.gd.uid │ │ │ ├── GdUnitTcpClient.gd │ │ │ ├── GdUnitTcpClient.gd.uid │ │ │ ├── GdUnitTcpServer.gd │ │ │ ├── GdUnitTcpServer.gd.uid │ │ │ └── rpc/ │ │ │ ├── RPC.gd │ │ │ ├── RPC.gd.uid │ │ │ ├── RPCClientConnect.gd │ │ │ ├── RPCClientConnect.gd.uid │ │ │ ├── RPCClientDisconnect.gd │ │ │ ├── RPCClientDisconnect.gd.uid │ │ │ ├── RPCGdUnitEvent.gd │ │ │ ├── RPCGdUnitEvent.gd.uid │ │ │ ├── RPCGdUnitTestSuite.gd │ │ │ ├── RPCGdUnitTestSuite.gd.uid │ │ │ ├── RPCMessage.gd │ │ │ ├── RPCMessage.gd.uid │ │ │ └── dtos/ │ │ │ ├── GdUnitResourceDto.gd │ │ │ ├── GdUnitResourceDto.gd.uid │ │ │ ├── GdUnitTestCaseDto.gd │ │ │ ├── GdUnitTestCaseDto.gd.uid │ │ │ ├── GdUnitTestSuiteDto.gd │ │ │ └── GdUnitTestSuiteDto.gd.uid │ │ ├── report/ │ │ │ ├── GdUnitByPathReport.gd │ │ │ ├── GdUnitByPathReport.gd.uid │ │ │ ├── GdUnitHtmlPatterns.gd │ │ │ ├── GdUnitHtmlPatterns.gd.uid │ │ │ ├── GdUnitHtmlReport.gd │ │ │ ├── GdUnitHtmlReport.gd.uid │ │ │ ├── GdUnitReportSummary.gd │ │ │ ├── GdUnitReportSummary.gd.uid │ │ │ ├── GdUnitTestCaseReport.gd │ │ │ ├── GdUnitTestCaseReport.gd.uid │ │ │ ├── GdUnitTestSuiteReport.gd │ │ │ ├── GdUnitTestSuiteReport.gd.uid │ │ │ ├── JUnitXmlReport.gd │ │ │ ├── JUnitXmlReport.gd.uid │ │ │ ├── XmlElement.gd │ │ │ ├── XmlElement.gd.uid │ │ │ └── template/ │ │ │ ├── css/ │ │ │ │ ├── breadcrumb.css │ │ │ │ ├── logo.png.import │ │ │ │ └── styles.css │ │ │ ├── folder_report.html │ │ │ ├── index.html │ │ │ └── suite_report.html │ │ ├── spy/ │ │ │ ├── GdUnitSpyBuilder.gd │ │ │ ├── GdUnitSpyBuilder.gd.uid │ │ │ ├── GdUnitSpyFunctionDoubler.gd │ │ │ ├── GdUnitSpyFunctionDoubler.gd.uid │ │ │ ├── GdUnitSpyImpl.gd │ │ │ └── GdUnitSpyImpl.gd.uid │ │ ├── ui/ │ │ │ ├── GdUnitConsole.gd │ │ │ ├── GdUnitConsole.gd.uid │ │ │ ├── GdUnitConsole.tscn │ │ │ ├── GdUnitFonts.gd │ │ │ ├── GdUnitFonts.gd.uid │ │ │ ├── GdUnitInspector.gd │ │ │ ├── GdUnitInspector.gd.uid │ │ │ ├── GdUnitInspector.tscn │ │ │ ├── GdUnitInspectorTreeConstants.gd │ │ │ ├── GdUnitInspectorTreeConstants.gd.uid │ │ │ ├── GdUnitUiTools.gd │ │ │ ├── GdUnitUiTools.gd.uid │ │ │ ├── ScriptEditorControls.gd │ │ │ ├── ScriptEditorControls.gd.uid │ │ │ ├── menu/ │ │ │ │ ├── EditorFileSystemContextMenuHandler.gd │ │ │ │ ├── EditorFileSystemContextMenuHandler.gd.uid │ │ │ │ ├── GdUnitContextMenuItem.gd │ │ │ │ ├── GdUnitContextMenuItem.gd.uid │ │ │ │ ├── ScriptEditorContextMenuHandler.gd │ │ │ │ └── ScriptEditorContextMenuHandler.gd.uid │ │ │ ├── parts/ │ │ │ │ ├── InspectorMonitor.gd │ │ │ │ ├── InspectorMonitor.gd.uid │ │ │ │ ├── InspectorMonitor.tscn │ │ │ │ ├── InspectorProgressBar.gd │ │ │ │ ├── InspectorProgressBar.gd.uid │ │ │ │ ├── InspectorProgressBar.tscn │ │ │ │ ├── InspectorStatusBar.gd │ │ │ │ ├── InspectorStatusBar.gd.uid │ │ │ │ ├── InspectorStatusBar.tscn │ │ │ │ ├── InspectorToolBar.gd │ │ │ │ ├── InspectorToolBar.gd.uid │ │ │ │ ├── InspectorToolBar.tscn │ │ │ │ ├── InspectorTreeMainPanel.gd │ │ │ │ ├── InspectorTreeMainPanel.gd.uid │ │ │ │ └── InspectorTreePanel.tscn │ │ │ ├── settings/ │ │ │ │ ├── GdUnitInputCapture.gd │ │ │ │ ├── GdUnitInputCapture.gd.uid │ │ │ │ ├── GdUnitInputCapture.tscn │ │ │ │ ├── GdUnitSettingsDialog.gd │ │ │ │ ├── GdUnitSettingsDialog.gd.uid │ │ │ │ ├── GdUnitSettingsDialog.tscn │ │ │ │ └── logo.png.import │ │ │ └── templates/ │ │ │ ├── TestSuiteTemplate.gd │ │ │ ├── TestSuiteTemplate.gd.uid │ │ │ └── TestSuiteTemplate.tscn │ │ └── update/ │ │ ├── GdMarkDownReader.gd │ │ ├── GdMarkDownReader.gd.uid │ │ ├── GdUnitPatch.gd │ │ ├── GdUnitPatch.gd.uid │ │ ├── GdUnitPatcher.gd │ │ ├── GdUnitPatcher.gd.uid │ │ ├── GdUnitUpdate.gd │ │ ├── GdUnitUpdate.gd.uid │ │ ├── GdUnitUpdate.tscn │ │ ├── GdUnitUpdateClient.gd │ │ ├── GdUnitUpdateClient.gd.uid │ │ ├── GdUnitUpdateNotify.gd │ │ ├── GdUnitUpdateNotify.gd.uid │ │ ├── GdUnitUpdateNotify.tscn │ │ └── assets/ │ │ ├── border_bottom.png.import │ │ ├── border_top.png.import │ │ ├── dot1.png.import │ │ ├── dot2.png.import │ │ ├── embedded.png.import │ │ ├── fonts/ │ │ │ ├── LICENSE.txt │ │ │ ├── README.txt │ │ │ └── static/ │ │ │ ├── RobotoMono-Bold.ttf.import │ │ │ ├── RobotoMono-BoldItalic.ttf.import │ │ │ ├── RobotoMono-ExtraLight.ttf.import │ │ │ ├── RobotoMono-ExtraLightItalic.ttf.import │ │ │ ├── RobotoMono-Italic.ttf.import │ │ │ ├── RobotoMono-Light.ttf.import │ │ │ ├── RobotoMono-LightItalic.ttf.import │ │ │ ├── RobotoMono-Medium.ttf.import │ │ │ ├── RobotoMono-MediumItalic.ttf.import │ │ │ ├── RobotoMono-Regular.ttf.import │ │ │ ├── RobotoMono-SemiBold.ttf.import │ │ │ ├── RobotoMono-SemiBoldItalic.ttf.import │ │ │ ├── RobotoMono-Thin.ttf.import │ │ │ └── RobotoMono-ThinItalic.ttf.import │ │ └── horizontal-line2.png.import │ └── guide/ │ ├── LICENSE.md │ ├── debugger/ │ │ ├── guide_debugger.gd │ │ ├── guide_debugger.gd.uid │ │ └── guide_debugger.tscn │ ├── editor/ │ │ ├── action_mapping_editor/ │ │ │ ├── action_mapping_editor.gd │ │ │ ├── action_mapping_editor.gd.uid │ │ │ └── action_mapping_editor.tscn │ │ ├── action_slot/ │ │ │ ├── action_slot.gd │ │ │ ├── action_slot.gd.uid │ │ │ ├── action_slot.tscn │ │ │ ├── action_slot_line_edit.gd │ │ │ ├── action_slot_line_edit.gd.uid │ │ │ ├── action_value_type_axis1d.svg.import │ │ │ ├── action_value_type_axis2d.svg.import │ │ │ ├── action_value_type_axis3d.svg.import │ │ │ ├── action_value_type_bool.svg.import │ │ │ └── missing_action.svg.import │ │ ├── array_edit/ │ │ │ ├── array_edit.gd │ │ │ ├── array_edit.gd.uid │ │ │ ├── array_edit.tscn │ │ │ ├── array_edit_item.gd │ │ │ ├── array_edit_item.gd.uid │ │ │ ├── array_edit_item.tscn │ │ │ ├── dragger.gd │ │ │ └── dragger.gd.uid │ │ ├── binding_dialog/ │ │ │ ├── binding_dialog.gd │ │ │ ├── binding_dialog.gd.uid │ │ │ └── binding_dialog.tscn │ │ ├── class_scanner.gd │ │ ├── class_scanner.gd.uid │ │ ├── guide_project_settings.gd │ │ ├── guide_project_settings.gd.uid │ │ ├── input_display/ │ │ │ ├── input_display.gd │ │ │ ├── input_display.gd.uid │ │ │ └── input_display.tscn │ │ ├── input_mapping_editor/ │ │ │ ├── input_mapping_editor.gd │ │ │ ├── input_mapping_editor.gd.uid │ │ │ └── input_mapping_editor.tscn │ │ ├── logo_editor_small.svg.import │ │ ├── mapping_context_editor/ │ │ │ ├── mapping_context_editor.gd │ │ │ ├── mapping_context_editor.gd.uid │ │ │ └── mapping_context_editor.tscn │ │ ├── modifier_slot/ │ │ │ ├── modifier_slot.gd │ │ │ ├── modifier_slot.gd.uid │ │ │ └── modifier_slot.tscn │ │ ├── resource_scanner.gd │ │ ├── resource_scanner.gd.uid │ │ ├── resource_slot/ │ │ │ ├── resource_slot.gd │ │ │ └── resource_slot.gd.uid │ │ ├── trigger_slot/ │ │ │ ├── trigger_slot.gd │ │ │ ├── trigger_slot.gd.uid │ │ │ └── trigger_slot.tscn │ │ ├── utils.gd │ │ └── utils.gd.uid │ ├── guide.gd │ ├── guide.gd.uid │ ├── guide_action.gd │ ├── guide_action.gd.uid │ ├── guide_action.svg.import │ ├── guide_action_mapping.gd │ ├── guide_action_mapping.gd.uid │ ├── guide_input_mapping.gd │ ├── guide_input_mapping.gd.uid │ ├── guide_input_tracker.gd │ ├── guide_input_tracker.gd.uid │ ├── guide_internal.svg.import │ ├── guide_mapping_context.gd │ ├── guide_mapping_context.gd.uid │ ├── guide_mapping_context.svg.import │ ├── guide_reset.gd │ ├── guide_reset.gd.uid │ ├── guide_set.gd │ ├── guide_set.gd.uid │ ├── inputs/ │ │ ├── guide_input.gd │ │ ├── guide_input.gd.uid │ │ ├── guide_input.svg.import │ │ ├── guide_input_action.gd │ │ ├── guide_input_action.gd.uid │ │ ├── guide_input_any.gd │ │ ├── guide_input_any.gd.uid │ │ ├── guide_input_joy_axis_1d.gd │ │ ├── guide_input_joy_axis_1d.gd.uid │ │ ├── guide_input_joy_axis_2d.gd │ │ ├── guide_input_joy_axis_2d.gd.uid │ │ ├── guide_input_joy_base.gd │ │ ├── guide_input_joy_base.gd.uid │ │ ├── guide_input_joy_button.gd │ │ ├── guide_input_joy_button.gd.uid │ │ ├── guide_input_key.gd │ │ ├── guide_input_key.gd.uid │ │ ├── guide_input_mouse_axis_1d.gd │ │ ├── guide_input_mouse_axis_1d.gd.uid │ │ ├── guide_input_mouse_axis_2d.gd │ │ ├── guide_input_mouse_axis_2d.gd.uid │ │ ├── guide_input_mouse_button.gd │ │ ├── guide_input_mouse_button.gd.uid │ │ ├── guide_input_mouse_position.gd │ │ ├── guide_input_mouse_position.gd.uid │ │ ├── guide_input_state.gd │ │ ├── guide_input_state.gd.uid │ │ ├── guide_input_touch_angle.gd │ │ ├── guide_input_touch_angle.gd.uid │ │ ├── guide_input_touch_axis_1d.gd │ │ ├── guide_input_touch_axis_1d.gd.uid │ │ ├── guide_input_touch_axis_2d.gd │ │ ├── guide_input_touch_axis_2d.gd.uid │ │ ├── guide_input_touch_axis_base.gd │ │ ├── guide_input_touch_axis_base.gd.uid │ │ ├── guide_input_touch_base.gd │ │ ├── guide_input_touch_base.gd.uid │ │ ├── guide_input_touch_distance.gd │ │ ├── guide_input_touch_distance.gd.uid │ │ ├── guide_input_touch_position.gd │ │ └── guide_input_touch_position.gd.uid │ ├── modifiers/ │ │ ├── guide_modifier.gd │ │ ├── guide_modifier.gd.uid │ │ ├── guide_modifier.svg.import │ │ ├── guide_modifier_3d_coordinates.gd │ │ ├── guide_modifier_3d_coordinates.gd.uid │ │ ├── guide_modifier_8_way_direction.gd │ │ ├── guide_modifier_8_way_direction.gd.uid │ │ ├── guide_modifier_canvas_coordinates.gd │ │ ├── guide_modifier_canvas_coordinates.gd.uid │ │ ├── guide_modifier_curve.gd │ │ ├── guide_modifier_curve.gd.uid │ │ ├── guide_modifier_deadzone.gd │ │ ├── guide_modifier_deadzone.gd.uid │ │ ├── guide_modifier_input_swizzle.gd │ │ ├── guide_modifier_input_swizzle.gd.uid │ │ ├── guide_modifier_magnitude.gd │ │ ├── guide_modifier_magnitude.gd.uid │ │ ├── guide_modifier_map_range.gd │ │ ├── guide_modifier_map_range.gd.uid │ │ ├── guide_modifier_negate.gd │ │ ├── guide_modifier_negate.gd.uid │ │ ├── guide_modifier_normalize.gd │ │ ├── guide_modifier_normalize.gd.uid │ │ ├── guide_modifier_positive_negative.gd │ │ ├── guide_modifier_positive_negative.gd.uid │ │ ├── guide_modifier_scale.gd │ │ ├── guide_modifier_scale.gd.uid │ │ ├── guide_modifier_virtual_cursor.gd │ │ ├── guide_modifier_virtual_cursor.gd.uid │ │ ├── guide_modifier_window_relative.gd │ │ └── guide_modifier_window_relative.gd.uid │ ├── plugin.cfg │ ├── plugin.gd │ ├── plugin.gd.uid │ ├── remapping/ │ │ ├── guide_input_detector.gd │ │ ├── guide_input_detector.gd.uid │ │ ├── guide_remapper.gd │ │ ├── guide_remapper.gd.uid │ │ ├── guide_remapping_config.gd │ │ └── guide_remapping_config.gd.uid │ ├── triggers/ │ │ ├── guide_trigger.gd │ │ ├── guide_trigger.gd.uid │ │ ├── guide_trigger.svg.import │ │ ├── guide_trigger_chorded_action.gd │ │ ├── guide_trigger_chorded_action.gd.uid │ │ ├── guide_trigger_combo.gd │ │ ├── guide_trigger_combo.gd.uid │ │ ├── guide_trigger_combo_cancel_action.gd │ │ ├── guide_trigger_combo_cancel_action.gd.uid │ │ ├── guide_trigger_combo_step.gd │ │ ├── guide_trigger_combo_step.gd.uid │ │ ├── guide_trigger_down.gd │ │ ├── guide_trigger_down.gd.uid │ │ ├── guide_trigger_hair.gd │ │ ├── guide_trigger_hair.gd.uid │ │ ├── guide_trigger_hold.gd │ │ ├── guide_trigger_hold.gd.uid │ │ ├── guide_trigger_pressed.gd │ │ ├── guide_trigger_pressed.gd.uid │ │ ├── guide_trigger_pulse.gd │ │ ├── guide_trigger_pulse.gd.uid │ │ ├── guide_trigger_released.gd │ │ ├── guide_trigger_released.gd.uid │ │ ├── guide_trigger_stability.gd │ │ ├── guide_trigger_stability.gd.uid │ │ ├── guide_trigger_tap.gd │ │ └── guide_trigger_tap.gd.uid │ └── ui/ │ ├── guide_formatting_utils.gd │ ├── guide_formatting_utils.gd.uid │ ├── guide_icon_renderer.gd │ ├── guide_icon_renderer.gd.uid │ ├── guide_input_formatter.gd │ ├── guide_input_formatter.gd.uid │ ├── guide_input_formatting_options.gd │ ├── guide_input_formatting_options.gd.uid │ ├── guide_text_provider.gd │ ├── guide_text_provider.gd.uid │ ├── icon_maker/ │ │ ├── icon_maker.gd │ │ ├── icon_maker.gd.uid │ │ └── icon_maker.tscn │ ├── renderers/ │ │ ├── controllers/ │ │ │ ├── guide_controller_render_style.gd │ │ │ ├── guide_controller_render_style.gd.uid │ │ │ ├── guide_controller_renderer.gd │ │ │ ├── guide_controller_renderer.gd.uid │ │ │ ├── guide_controller_renderer.tscn │ │ │ └── styles/ │ │ │ ├── microsoft/ │ │ │ │ ├── XboxSeriesX_A.png.import │ │ │ │ ├── XboxSeriesX_B.png.import │ │ │ │ ├── XboxSeriesX_Dpad.png.import │ │ │ │ ├── XboxSeriesX_Dpad_Down.png.import │ │ │ │ ├── XboxSeriesX_Dpad_Left.png.import │ │ │ │ ├── XboxSeriesX_Dpad_Right.png.import │ │ │ │ ├── XboxSeriesX_Dpad_Up.png.import │ │ │ │ ├── XboxSeriesX_LB.png.import │ │ │ │ ├── XboxSeriesX_LT.png.import │ │ │ │ ├── XboxSeriesX_Left_Stick.png.import │ │ │ │ ├── XboxSeriesX_Left_Stick_Click.png.import │ │ │ │ ├── XboxSeriesX_Menu.png.import │ │ │ │ ├── XboxSeriesX_RB.png.import │ │ │ │ ├── XboxSeriesX_RT.png.import │ │ │ │ ├── XboxSeriesX_Right_Stick.png.import │ │ │ │ ├── XboxSeriesX_Right_Stick_Click.png.import │ │ │ │ ├── XboxSeriesX_Share.png.import │ │ │ │ ├── XboxSeriesX_View.png.import │ │ │ │ ├── XboxSeriesX_X.png.import │ │ │ │ ├── XboxSeriesX_Y.png.import │ │ │ │ └── microsoft.tres │ │ │ ├── nintendo/ │ │ │ │ ├── Switch_A.png.import │ │ │ │ ├── Switch_B.png.import │ │ │ │ ├── Switch_Controller_Left.png.import │ │ │ │ ├── Switch_Controller_Right.png.import │ │ │ │ ├── Switch_Controllers.png.import │ │ │ │ ├── Switch_Controllers_Separate.png.import │ │ │ │ ├── Switch_Down.png.import │ │ │ │ ├── Switch_Dpad.png.import │ │ │ │ ├── Switch_Dpad_Down.png.import │ │ │ │ ├── Switch_Dpad_Left.png.import │ │ │ │ ├── Switch_Dpad_Right.png.import │ │ │ │ ├── Switch_Dpad_Up.png.import │ │ │ │ ├── Switch_Home.png.import │ │ │ │ ├── Switch_LB.png.import │ │ │ │ ├── Switch_LT.png.import │ │ │ │ ├── Switch_Left.png.import │ │ │ │ ├── Switch_Left_Stick.png.import │ │ │ │ ├── Switch_Left_Stick_Click.png.import │ │ │ │ ├── Switch_Minus.png.import │ │ │ │ ├── Switch_Plus.png.import │ │ │ │ ├── Switch_RB.png.import │ │ │ │ ├── Switch_RT.png.import │ │ │ │ ├── Switch_Right.png.import │ │ │ │ ├── Switch_Right_Stick.png.import │ │ │ │ ├── Switch_Right_Stick_Click.png.import │ │ │ │ ├── Switch_Square.png.import │ │ │ │ ├── Switch_Up.png.import │ │ │ │ ├── Switch_X.png.import │ │ │ │ ├── Switch_Y.png.import │ │ │ │ └── nintendo.tres │ │ │ ├── sony/ │ │ │ │ ├── PS5_Circle.png.import │ │ │ │ ├── PS5_Cross.png.import │ │ │ │ ├── PS5_Dpad.png.import │ │ │ │ ├── PS5_Dpad_Down.png.import │ │ │ │ ├── PS5_Dpad_Left.png.import │ │ │ │ ├── PS5_Dpad_Right.png.import │ │ │ │ ├── PS5_Dpad_Up.png.import │ │ │ │ ├── PS5_L1.png.import │ │ │ │ ├── PS5_L2.png.import │ │ │ │ ├── PS5_Left_Stick.png.import │ │ │ │ ├── PS5_Left_Stick_Click.png.import │ │ │ │ ├── PS5_Microphone.png.import │ │ │ │ ├── PS5_Options.png.import │ │ │ │ ├── PS5_Options_Alt.png.import │ │ │ │ ├── PS5_R1.png.import │ │ │ │ ├── PS5_R2.png.import │ │ │ │ ├── PS5_Right_Stick.png.import │ │ │ │ ├── PS5_Right_Stick_Click.png.import │ │ │ │ ├── PS5_Share.png.import │ │ │ │ ├── PS5_Share_Alt.png.import │ │ │ │ ├── PS5_Square.png.import │ │ │ │ ├── PS5_Touch_Pad.png.import │ │ │ │ ├── PS5_Triangle.png.import │ │ │ │ └── sony.tres │ │ │ └── steam_deck/ │ │ │ ├── SteamDeck_A.png.import │ │ │ ├── SteamDeck_B.png.import │ │ │ ├── SteamDeck_Dots.png.import │ │ │ ├── SteamDeck_Dpad.png.import │ │ │ ├── SteamDeck_Dpad_Down.png.import │ │ │ ├── SteamDeck_Dpad_Left.png.import │ │ │ ├── SteamDeck_Dpad_Right.png.import │ │ │ ├── SteamDeck_Dpad_Up.png.import │ │ │ ├── SteamDeck_Gyro.png.import │ │ │ ├── SteamDeck_Inventory.png.import │ │ │ ├── SteamDeck_L1.png.import │ │ │ ├── SteamDeck_L2.png.import │ │ │ ├── SteamDeck_L4.png.import │ │ │ ├── SteamDeck_L5.png.import │ │ │ ├── SteamDeck_Left_Stick.png.import │ │ │ ├── SteamDeck_Left_Stick_Click.png.import │ │ │ ├── SteamDeck_Left_Track.png.import │ │ │ ├── SteamDeck_Menu.png.import │ │ │ ├── SteamDeck_Minus.png.import │ │ │ ├── SteamDeck_Plus.png.import │ │ │ ├── SteamDeck_Power.png.import │ │ │ ├── SteamDeck_R1.png.import │ │ │ ├── SteamDeck_R2.png.import │ │ │ ├── SteamDeck_R4.png.import │ │ │ ├── SteamDeck_R5.png.import │ │ │ ├── SteamDeck_Right_Stick.png.import │ │ │ ├── SteamDeck_Right_Stick_Click.png.import │ │ │ ├── SteamDeck_Right_Track.png.import │ │ │ ├── SteamDeck_Square.png.import │ │ │ ├── SteamDeck_Steam.png.import │ │ │ ├── SteamDeck_X.png.import │ │ │ ├── SteamDeck_Y.png.import │ │ │ └── steam_deck.tres │ │ ├── joy/ │ │ │ ├── guide_joy_render_style.gd │ │ │ ├── guide_joy_render_style.gd.uid │ │ │ ├── guide_joy_renderer.gd │ │ │ ├── guide_joy_renderer.gd.uid │ │ │ ├── guide_joy_renderer.tscn │ │ │ └── styles/ │ │ │ ├── button_empty.png.import │ │ │ ├── default.tres │ │ │ └── stick_empty.png.import │ │ ├── keyboard/ │ │ │ ├── guide_key_render_style.gd │ │ │ ├── guide_key_render_style.gd.uid │ │ │ ├── guide_key_renderer.gd │ │ │ ├── guide_key_renderer.gd.uid │ │ │ ├── guide_key_renderer.tscn │ │ │ └── styles/ │ │ │ ├── Blank_White_Normal.png.import │ │ │ ├── Lato-Black.ttf.import │ │ │ └── default.tres │ │ ├── misc/ │ │ │ ├── guide_action_renderer.gd │ │ │ ├── guide_action_renderer.gd.uid │ │ │ ├── guide_action_renderer.tscn │ │ │ ├── guide_fallback_renderer.gd │ │ │ ├── guide_fallback_renderer.gd.uid │ │ │ └── guide_fallback_renderer.tscn │ │ ├── mouse/ │ │ │ ├── guide_mouse_render_style.gd │ │ │ ├── guide_mouse_render_style.gd.uid │ │ │ ├── guide_mouse_renderer.gd │ │ │ ├── guide_mouse_renderer.gd.uid │ │ │ ├── guide_mouse_renderer.tscn │ │ │ └── styles/ │ │ │ ├── Mouse_Cursor.png.import │ │ │ ├── Mouse_Left_Key_Light.png.import │ │ │ ├── Mouse_Middle_Key_Light.png.import │ │ │ ├── Mouse_Right_Key_Light.png.import │ │ │ ├── Mouse_Side_Key_1_Light.png.import │ │ │ ├── Mouse_Side_Key_2_Light.png.import │ │ │ ├── Mouse_Simple_Key_Light.png.import │ │ │ └── default.tres │ │ ├── style.svg.import │ │ ├── textures/ │ │ │ ├── action.svg.import │ │ │ ├── arrow_all_directions.svg.import │ │ │ ├── arrow_down.svg.import │ │ │ ├── arrow_horizontal.svg.import │ │ │ ├── arrow_left.svg.import │ │ │ ├── arrow_right.svg.import │ │ │ ├── arrow_up.svg.import │ │ │ └── arrow_vertical.svg.import │ │ └── touch/ │ │ ├── guide_touch_render_style.gd │ │ ├── guide_touch_render_style.gd.uid │ │ ├── guide_touch_renderer.gd │ │ ├── guide_touch_renderer.gd.uid │ │ ├── guide_touch_renderer.tscn │ │ └── styles/ │ │ ├── default.tres │ │ ├── touch_1_finger.png.import │ │ ├── touch_2_fingers.png.import │ │ ├── touch_3_fingers.png.import │ │ ├── touch_4_fingers.png.import │ │ ├── touch_rotate.png.import │ │ └── touch_zoom.png.import │ ├── text_providers/ │ │ ├── controllers/ │ │ │ ├── guide_controller_label_set.gd │ │ │ ├── guide_controller_label_set.gd.uid │ │ │ ├── guide_controller_text_provider.gd │ │ │ ├── guide_controller_text_provider.gd.uid │ │ │ └── label_sets/ │ │ │ ├── microsoft.tres │ │ │ ├── nintendo.tres │ │ │ ├── sony.tres │ │ │ └── steam_deck.tres │ │ ├── default_text_provider.gd │ │ └── default_text_provider.gd.uid │ └── virtual_joy/ │ ├── guide_virtual_joy_base.gd │ ├── guide_virtual_joy_base.gd.uid │ ├── virtual_button/ │ │ ├── guide_virtual_button.gd │ │ ├── guide_virtual_button.gd.uid │ │ ├── guide_virtual_button.svg.import │ │ ├── guide_virtual_button_renderer.gd │ │ ├── guide_virtual_button_renderer.gd.uid │ │ ├── guide_virtual_button_renderer.svg.import │ │ └── texture_renderer/ │ │ ├── actuated.svg.import │ │ ├── guide_virtual_button_texture_renderer.gd │ │ ├── guide_virtual_button_texture_renderer.gd.uid │ │ └── idle.svg.import │ └── virtual_stick/ │ ├── guide_virtual_stick.gd │ ├── guide_virtual_stick.gd.uid │ ├── guide_virtual_stick.svg.import │ ├── guide_virtual_stick_renderer.gd │ ├── guide_virtual_stick_renderer.gd.uid │ ├── guide_virtual_stick_renderer.svg.import │ └── texture_renderer/ │ ├── guide_virtual_stick_texture_renderer.gd │ ├── guide_virtual_stick_texture_renderer.gd.uid │ ├── stick.svg.import │ ├── stick_hidden.svg.import │ └── stick_outline.svg.import ├── asset_library/ │ └── .gdignore ├── docs/ │ ├── .gdignore │ ├── .gitignore │ ├── Gemfile │ ├── _config.yml │ ├── _data/ │ │ └── toc.yml │ ├── _docs/ │ │ ├── 01_installation.md │ │ ├── 02_quick_start.md │ │ ├── 03_video_tutorials.md │ │ ├── 06_faq.md │ │ ├── 07_support.md │ │ ├── reference/ │ │ │ ├── 03_examples.md │ │ │ ├── 04_input_reference.md │ │ │ ├── 05_modifier_reference.md │ │ │ └── 06_trigger_reference.md │ │ └── usage/ │ │ ├── 01_concepts.md │ │ ├── 02_configuration_and_input_handling.md │ │ ├── 03_input_prompts.md │ │ ├── 04_extending_guide.md │ │ ├── 05_remapping_input.md │ │ ├── 06_virtual_joysticks.md │ │ └── 07_recipes.md │ ├── _includes/ │ │ ├── alert.html │ │ ├── doc.html │ │ ├── editable.html │ │ ├── feedback.html │ │ ├── footer.html │ │ ├── google-analytics.html │ │ ├── head.html │ │ ├── header.html │ │ ├── navigation.html │ │ ├── permalinks.html │ │ ├── quiz/ │ │ │ └── multiple-choice.html │ │ ├── quiz.html │ │ ├── scripts.html │ │ ├── scrolltop.html │ │ ├── sidebar.html │ │ ├── tags.html │ │ ├── toc.html │ │ └── video.html │ ├── _layouts/ │ │ ├── default.html │ │ ├── page.html │ │ └── post.html │ ├── _posts/ │ │ └── .gitkeep │ ├── _recipes/ │ │ ├── 01_driving_a_progress_bar.md │ │ └── 02_showing_debug_info_with_custom_ui.md │ ├── assets/ │ │ ├── css/ │ │ │ ├── main.css │ │ │ └── palette.css │ │ └── js/ │ │ ├── main.js │ │ └── search.js │ ├── docker-compose.yaml │ └── pages/ │ ├── archive.md │ ├── feed.xml │ ├── index.md │ ├── search.html │ └── sitemap.xml ├── editorconfig ├── export_presets.cfg ├── ggg.toml ├── guide_examples/ │ ├── 2d_axis_mapping/ │ │ ├── 2d_axis_mapping.gd │ │ ├── 2d_axis_mapping.gd.uid │ │ ├── 2d_axis_mapping.tscn │ │ ├── mapping_contexts/ │ │ │ ├── 2d_axis_mapping.tres │ │ │ └── move.tres │ │ ├── player.gd │ │ └── player.gd.uid │ ├── action_priority/ │ │ ├── action_priority.gd │ │ ├── action_priority.gd.uid │ │ ├── action_priority.tscn │ │ ├── dpad_spells/ │ │ │ ├── dpad_spells.gd │ │ │ ├── dpad_spells.gd.uid │ │ │ └── dpad_spells.tscn │ │ ├── icons/ │ │ │ ├── enchant-acid-3.png.import │ │ │ ├── enchant-blue-3.png.import │ │ │ ├── enchant-jade-3.png.import │ │ │ ├── enchant-red-3.png.import │ │ │ ├── fireball-acid-3.png.import │ │ │ ├── fireball-sky-3.png.import │ │ │ ├── heal-royal-3.png.import │ │ │ └── protect-blue-2.png.import │ │ ├── mapping_contexts/ │ │ │ ├── action_priority.tres │ │ │ └── actions/ │ │ │ ├── acid_bolt.tres │ │ │ ├── acid_enchantment.tres │ │ │ ├── fire_enchantment.tres │ │ │ ├── heal.tres │ │ │ ├── healing_enchantment.tres │ │ │ ├── mana_bolt.tres │ │ │ ├── mana_enchantment.tres │ │ │ ├── shield.tres │ │ │ └── spell_toggle.tres │ │ └── spell_indicator/ │ │ ├── spell_indicator.gd │ │ ├── spell_indicator.gd.uid │ │ └── spell_indicator.tscn │ ├── combine_contexts/ │ │ ├── combine_contexts.gd │ │ ├── combine_contexts.gd.uid │ │ ├── combine_contexts.tscn │ │ └── mapping_contexts/ │ │ ├── controller.tres │ │ ├── keyboard_and_mouse.tres │ │ └── move.tres │ ├── combos/ │ │ ├── combos.gd │ │ ├── combos.gd.uid │ │ ├── combos.tscn │ │ ├── mapping_contexts/ │ │ │ ├── basic_actions/ │ │ │ │ ├── fire.tres │ │ │ │ ├── move_horizontal.tres │ │ │ │ ├── move_left.tres │ │ │ │ └── move_right.tres │ │ │ ├── combo_actions/ │ │ │ │ ├── dash_left.tres │ │ │ │ ├── dash_right.tres │ │ │ │ ├── fireball_left.tres │ │ │ │ └── fireball_right.tres │ │ │ └── combos.tres │ │ ├── player.gd │ │ └── player.gd.uid │ ├── hair_trigger/ │ │ ├── hair_trigger.gd │ │ ├── hair_trigger.gd.uid │ │ ├── hair_trigger.tscn │ │ ├── mapping_contexts/ │ │ │ ├── fire.tres │ │ │ └── fire_context.tres │ │ ├── trigger_visualizer.gd │ │ └── trigger_visualizer.gd.uid │ ├── input_contexts/ │ │ ├── boat.gd │ │ ├── boat.gd.uid │ │ ├── boat.svg.import │ │ ├── input_contexts.gd │ │ ├── input_contexts.gd.uid │ │ ├── input_contexts.tscn │ │ ├── mapping_contexts/ │ │ │ ├── boat_actions/ │ │ │ │ ├── accelerate.tres │ │ │ │ ├── leave.tres │ │ │ │ └── turn.tres │ │ │ ├── boat_context.tres │ │ │ ├── player_actions/ │ │ │ │ ├── move.tres │ │ │ │ └── use.tres │ │ │ └── player_context.tres │ │ ├── player.gd │ │ └── player.gd.uid │ ├── input_prompts/ │ │ ├── input_prompts.gd │ │ ├── input_prompts.gd.uid │ │ ├── input_prompts.tscn │ │ └── mapping_contexts/ │ │ ├── controller_activated.tres │ │ ├── fire.tres │ │ ├── input_prompts.tres │ │ ├── keyboard_activated.tres │ │ └── mouse_activated.tres │ ├── input_scheme_switching/ │ │ ├── input_scheme_switching.gd │ │ ├── input_scheme_switching.gd.uid │ │ ├── input_scheme_switching.tscn │ │ ├── mapping_contexts/ │ │ │ ├── actions/ │ │ │ │ ├── move.tres │ │ │ │ ├── shoot.tres │ │ │ │ ├── switch_to_joystick.tres │ │ │ │ └── switch_to_keyboard.tres │ │ │ ├── joystick_scheme.tres │ │ │ └── keyboard_scheme.tres │ │ ├── player.gd │ │ └── player.gd.uid │ ├── mouse_position_2d/ │ │ ├── background.gd │ │ ├── background.gd.uid │ │ ├── background.svg.import │ │ ├── camera_2d.gd │ │ ├── camera_2d.gd.uid │ │ ├── godot_head.gd │ │ ├── godot_head.gd.uid │ │ ├── godot_head.tscn │ │ ├── mapping_contexts/ │ │ │ ├── actions/ │ │ │ │ ├── camera_movement.tres │ │ │ │ ├── camera_zoom.tres │ │ │ │ ├── cursor.tres │ │ │ │ └── spawn.tres │ │ │ ├── modifiers/ │ │ │ │ └── zoom_sensitivity.tres │ │ │ └── mouse_position.tres │ │ ├── mouse_position.gd │ │ ├── mouse_position.gd.uid │ │ └── mouse_position.tscn │ ├── mouse_position_3d/ │ │ ├── camera_control.gd │ │ ├── camera_control.gd.uid │ │ ├── mapping_context/ │ │ │ ├── actions/ │ │ │ │ ├── camera_move.tres │ │ │ │ ├── camera_pitch.tres │ │ │ │ ├── camera_toggle.tres │ │ │ │ ├── camera_yaw.tres │ │ │ │ ├── cursor_3d.tres │ │ │ │ └── select.tres │ │ │ └── mouse_position_3d.tres │ │ ├── mou4D8E.tmp │ │ ├── mouse_indicator.gd │ │ ├── mouse_indicator.gd.uid │ │ ├── mouse_position_3d.gd │ │ ├── mouse_position_3d.gd.uid │ │ ├── mouse_position_3d.tscn │ │ ├── player.gd │ │ └── player.gd.uid │ ├── quick_start/ │ │ ├── game.gd │ │ ├── game.gd.uid │ │ ├── mapping_contexts/ │ │ │ ├── actions/ │ │ │ │ ├── move.tres │ │ │ │ └── say_hi.tres │ │ │ └── quickstart.tres │ │ ├── player.gd │ │ ├── player.gd.uid │ │ └── quick_start.tscn │ ├── remapping/ │ │ ├── mapping_contexts/ │ │ │ ├── binding_controller.tres │ │ │ ├── binding_keyboard.tres │ │ │ ├── controller.tres │ │ │ ├── controller_actions/ │ │ │ │ ├── next_tab.tres │ │ │ │ ├── player_movement_stick_deadzone.tres │ │ │ │ ├── player_movement_stick_invert.tres │ │ │ │ ├── previous_tab.tres │ │ │ │ ├── switch_to_keyboard.tres │ │ │ │ └── ui_accept.tres │ │ │ ├── keyboard.tres │ │ │ ├── keyboard_actions/ │ │ │ │ └── switch_to_controller.tres │ │ │ └── shared_actions/ │ │ │ ├── close_menu.tres │ │ │ ├── fire.tres │ │ │ ├── open_menu.tres │ │ │ └── player_movement_2d.tres │ │ ├── player.gd │ │ ├── player.gd.uid │ │ ├── remapping.gd │ │ ├── remapping.gd.uid │ │ ├── remapping.tscn │ │ ├── ui/ │ │ │ ├── binding_row.gd │ │ │ ├── binding_row.gd.uid │ │ │ ├── binding_row.tscn │ │ │ ├── binding_section.gd │ │ │ ├── binding_section.gd.uid │ │ │ ├── binding_section.tscn │ │ │ ├── remapping_dialog.gd │ │ │ ├── remapping_dialog.gd.uid │ │ │ └── remapping_dialog.tscn │ │ ├── utils.gd │ │ └── utils.gd.uid │ ├── shared/ │ │ ├── fireball/ │ │ │ ├── fireball.gd │ │ │ ├── fireball.gd.uid │ │ │ ├── fireball.svg.import │ │ │ └── fireball.tscn │ │ ├── godot_logo.svg.import │ │ ├── instructions_label.gd │ │ ├── instructions_label.gd.uid │ │ └── ui_theme.tres │ ├── simple_input/ │ │ ├── mapping_contexts/ │ │ │ ├── move_down.tres │ │ │ ├── move_left.tres │ │ │ ├── move_right.tres │ │ │ ├── move_up.tres │ │ │ └── simple_input.tres │ │ ├── player.gd │ │ ├── player.gd.uid │ │ ├── simple_input.gd │ │ ├── simple_input.gd.uid │ │ └── simple_input.tscn │ ├── tap_and_hold/ │ │ ├── mapping_contexts/ │ │ │ ├── jump.tres │ │ │ ├── somersault.tres │ │ │ └── tap_and_hold.tres │ │ ├── player.gd │ │ ├── player.gd.uid │ │ ├── tap_and_hold.gd │ │ ├── tap_and_hold.gd.uid │ │ └── tap_and_hold.tscn │ ├── top_down_shooter/ │ │ ├── bolt/ │ │ │ ├── bolt.gd │ │ │ ├── bolt.gd.uid │ │ │ ├── bolt.png.import │ │ │ └── bolt.tscn │ │ ├── mapping_contexts/ │ │ │ ├── controller.tres │ │ │ ├── fire.tres │ │ │ ├── keyboard_and_mouse.tres │ │ │ ├── look_absolute.tres │ │ │ ├── look_relative.tres │ │ │ ├── move.tres │ │ │ ├── switch_to_controller.tres │ │ │ └── switch_to_keyboard_and_mouse.tres │ │ ├── player/ │ │ │ ├── mrg0000.png.import │ │ │ ├── player.gd │ │ │ └── player.gd.uid │ │ ├── top_down_shooter.gd │ │ ├── top_down_shooter.gd.uid │ │ └── top_down_shooter.tscn │ ├── touch/ │ │ ├── background.gd │ │ ├── background.gd.uid │ │ ├── background.svg.import │ │ ├── camera_2d.gd │ │ ├── camera_2d.gd.uid │ │ ├── godot_head.gd │ │ ├── godot_head.gd.uid │ │ ├── godot_head.tscn │ │ ├── mapping_contexts/ │ │ │ ├── actions/ │ │ │ │ ├── camera_movement.tres │ │ │ │ ├── camera_reset.tres │ │ │ │ ├── camera_rotation.tres │ │ │ │ ├── camera_zoom.tres │ │ │ │ └── spawn.tres │ │ │ ├── modifiers/ │ │ │ │ └── zoom_sensitivity.tres │ │ │ └── touch.tres │ │ ├── placement_indicator/ │ │ │ ├── placement_indicator.gd │ │ │ ├── placement_indicator.gd.uid │ │ │ ├── placement_indicator.tscn │ │ │ └── radial_progress.png.import │ │ ├── touch.gd │ │ ├── touch.gd.uid │ │ └── touch.tscn │ ├── two_joysticks/ │ │ ├── actions/ │ │ │ ├── player_one_move.tres │ │ │ └── player_two_move.tres │ │ ├── modifiers/ │ │ │ └── joystick_deadzone.tres │ │ ├── player.gd │ │ ├── player.gd.uid │ │ ├── two_joysticks.gd │ │ ├── two_joysticks.gd.uid │ │ ├── two_joysticks.tres │ │ └── two_joysticks.tscn │ ├── virtual_cursor/ │ │ ├── mapping_contexts/ │ │ │ ├── actions/ │ │ │ │ ├── click.tres │ │ │ │ ├── cursor_2d.tres │ │ │ │ ├── switch_to_controller.tres │ │ │ │ └── switch_to_keyboard.tres │ │ │ ├── controller_mappings.tres │ │ │ └── keyboard_mappings.tres │ │ ├── pointable/ │ │ │ ├── pointable.gd │ │ │ ├── pointable.gd.uid │ │ │ └── pointable.tscn │ │ ├── pointer.gd │ │ ├── pointer.gd.uid │ │ ├── pointer.svg.import │ │ ├── virtual_cursor.gd │ │ ├── virtual_cursor.gd.uid │ │ └── virtual_cursor.tscn │ └── virtual_sticks/ │ ├── custom_stick_renderer/ │ │ ├── custom_stick_renderer.gd │ │ ├── custom_stick_renderer.gd.uid │ │ ├── custom_stick_renderer.gdshader │ │ └── custom_stick_renderer.gdshader.uid │ ├── mapping_contexts/ │ │ ├── fire_projectile.tres │ │ ├── mapping_context.tres │ │ ├── move_ship.tres │ │ └── rotate_ship.tres │ ├── projectile/ │ │ ├── laser.svg.import │ │ ├── projectile.gd │ │ ├── projectile.gd.uid │ │ └── projectile.tscn │ ├── ship/ │ │ ├── ship.gd │ │ ├── ship.gd.uid │ │ ├── ship.tscn │ │ └── spaceship.png.import │ ├── virtual_sticks.gd │ ├── virtual_sticks.gd.uid │ └── virtual_sticks.tscn ├── icon.svg.import ├── project.godot ├── run_tests.cmd └── tests/ ├── guide_input_matcher.gd ├── guide_input_matcher.gd.uid ├── guide_test_base.gd ├── guide_test_base.gd.uid ├── test_action_prioritization.gd ├── test_action_prioritization.gd.uid ├── test_action_signals.gd ├── test_action_signals.gd.uid ├── test_any_input.gd ├── test_any_input.gd.uid ├── test_context_mapping_combine.gd ├── test_context_mapping_combine.gd.uid ├── test_context_switching.gd ├── test_context_switching.gd.uid ├── test_down_trigger.gd ├── test_down_trigger.gd.uid ├── test_guide_default_text_provider.gd ├── test_guide_default_text_provider.gd.uid ├── test_guide_input_formatter.gd ├── test_guide_input_formatter.gd.uid ├── test_input_detector.gd ├── test_input_detector.gd.uid ├── test_input_on_context_change.gd ├── test_input_on_context_change.gd.uid ├── test_invalid_configuration.gd ├── test_invalid_configuration.gd.uid ├── test_joy_axis_1d_input.gd ├── test_joy_axis_1d_input.gd.uid ├── test_joy_axis_2d_input.gd ├── test_joy_axis_2d_input.gd.uid ├── test_joy_button_input.gd ├── test_joy_button_input.gd.uid ├── test_key_input.gd ├── test_key_input.gd.uid ├── test_layered_contexts.gd ├── test_layered_contexts.gd.uid ├── test_magnitude_modifier.gd ├── test_magnitude_modifier.gd.uid ├── test_map_range_modifier.gd ├── test_map_range_modifier.gd.uid ├── test_mouse_axis_1d_input.gd ├── test_mouse_axis_1d_input.gd.uid ├── test_mouse_axis_2d_input.gd ├── test_mouse_axis_2d_input.gd.uid ├── test_mouse_button_input.gd ├── test_mouse_button_input.gd.uid ├── test_multiple_input_events_per_frame.gd ├── test_multiple_input_events_per_frame.gd.uid ├── test_node_leaks.gd ├── test_node_leaks.gd.uid ├── test_pause_mode.gd ├── test_pause_mode.gd.uid ├── test_released_trigger.gd ├── test_released_trigger.gd.uid ├── test_touch_angle_input.gd ├── test_touch_angle_input.gd.uid ├── test_touch_axis_1d_input.gd ├── test_touch_axis_1d_input.gd.uid ├── test_touch_axis_2d_input.gd ├── test_touch_axis_2d_input.gd.uid ├── test_touch_distance_input.gd ├── test_touch_distance_input.gd.uid ├── test_touch_position_input.gd ├── test_touch_position_input.gd.uid ├── test_trigger_hair.gd ├── test_trigger_hair.gd.uid ├── test_virtual_buttons.gd ├── test_virtual_buttons.gd.uid ├── test_virtual_cursor.gd ├── test_virtual_cursor.gd.uid ├── test_virtual_sticks.gd └── test_virtual_sticks.gd.uid