From 5b53236706a96c6b1f5fa227f9aee7c2b51d7986 Mon Sep 17 00:00:00 2001 From: Kode-Z <162533196+Kode-Z@users.noreply.github.com> Date: Tue, 26 Aug 2025 02:19:38 +0100 Subject: [PATCH] New custom touch controls for Resident Evil 4 Remake, Sonic Mania and Quake (#771) * Add files via upload * Add files via upload * Update doom-doom-ii.json Added another layout (joystick). * Update 1714795112.json Updated to reflect additional layout. * Update doom-64.json Added another layout (joystick). * Update 2136041956.json Amended to reflect additional layout. * Update resident-evil-4-remake.json Minor changes * Update resident-evil-4-remake.json Last chance - added RB button for solving puzzles / menu navigation. * Add files via upload * Add files via upload * Add files via upload * Add files via upload --- touch-layouts/1714795112.json | 4 +- touch-layouts/1843641391.json | 7 + touch-layouts/1852916479.json | 7 + touch-layouts/2136041956.json | 2 +- touch-layouts/884612576.json | 7 + touch-layouts/layouts/doom-64.json | 136 +++++++++- touch-layouts/layouts/doom-doom-ii.json | 140 +++++++++- touch-layouts/layouts/quake.json | 198 ++++++++++++++ .../layouts/resident-evil-4-remake.json | 243 ++++++++++++++++++ touch-layouts/layouts/sonic-mania.json | 55 ++++ 10 files changed, 791 insertions(+), 8 deletions(-) create mode 100644 touch-layouts/1843641391.json create mode 100644 touch-layouts/1852916479.json create mode 100644 touch-layouts/884612576.json create mode 100644 touch-layouts/layouts/quake.json create mode 100644 touch-layouts/layouts/resident-evil-4-remake.json create mode 100644 touch-layouts/layouts/sonic-mania.json diff --git a/touch-layouts/1714795112.json b/touch-layouts/1714795112.json index 9fbabf0..1f8a35f 100644 --- a/touch-layouts/1714795112.json +++ b/touch-layouts/1714795112.json @@ -1,7 +1,7 @@ { "name": "DOOM + DOOM II", - "default_layout": "custom", + "default_layout": "touchpad", "layouts": [ "doom-doom-ii" ] -} \ No newline at end of file +} diff --git a/touch-layouts/1843641391.json b/touch-layouts/1843641391.json new file mode 100644 index 0000000..da056de --- /dev/null +++ b/touch-layouts/1843641391.json @@ -0,0 +1,7 @@ +{ + "name": "Quake", + "default_layout": "custom", + "layouts": [ + "quake" + ] +} \ No newline at end of file diff --git a/touch-layouts/1852916479.json b/touch-layouts/1852916479.json new file mode 100644 index 0000000..67641db --- /dev/null +++ b/touch-layouts/1852916479.json @@ -0,0 +1,7 @@ +{ + "name": "Resident Evil 4 Remake", + "default_layout": "type-a-1", + "layouts": [ + "resident-evil-4-remake" + ] +} \ No newline at end of file diff --git a/touch-layouts/2136041956.json b/touch-layouts/2136041956.json index 7948bff..ca3b9e7 100644 --- a/touch-layouts/2136041956.json +++ b/touch-layouts/2136041956.json @@ -1,7 +1,7 @@ { "name": "DOOM 64", "product_id": "9MXND4PQLK3W", - "default_layout": "custom", + "default_layout": "touchpad", "layouts": [ "doom-64" ] diff --git a/touch-layouts/884612576.json b/touch-layouts/884612576.json new file mode 100644 index 0000000..f56c602 --- /dev/null +++ b/touch-layouts/884612576.json @@ -0,0 +1,7 @@ +{ + "name": "Sonic Mania", + "default_layout": "custom", + "layouts": [ + "sonic-mania" + ] +} \ No newline at end of file diff --git a/touch-layouts/layouts/doom-64.json b/touch-layouts/layouts/doom-64.json index eeb0fe1..4d0dedf 100644 --- a/touch-layouts/layouts/doom-64.json +++ b/touch-layouts/layouts/doom-64.json @@ -1,8 +1,8 @@ { "schema_version": 1, "layouts": { - "custom": { - "name": "Custom", + "touchpad": { + "name": "Touchpad", "author": "Kode-Z", "content": { "left": { @@ -155,6 +155,138 @@ } ] } + }, + "joystick": { + "name": "Joystick", + "author": "Kode-Z", + "content": { + "left": { + "inner": [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "leftJoystick", + "deadzone": { + "threshold": 0.05, + "radial": true + } + }, + "styles": { + "default": { + "knob": { + "faceImage": { + "type": "icon", + "value": "walk" + } + } + } + } + } + ], + "outer": [ + null, + null, + null, + null, + null, + null, + null, + { + "type": "button", + "action": "leftBumper" + } + ] + }, + "right": { + "inner": [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "rightJoystick" + } + } + ], + "outer": [ + { + "type": "button", + "action": "rightBumper" + }, + null, + { + "type": "button", + "action": "leftTrigger", + "toggle": true, + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "sprint" + } + } + } + }, + null, + { + "type": "button", + "action": "gamepadA", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "interact" + } + } + } + }, + [ + { + "type": "touchpad", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "sensitivity": 2.5 + }, + "action": "rightTrigger", + "renderAsButton": true, + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "fire" + } + } + } + } + ] + ] + }, + "upper": { + "right": [ + { + "type": "button", + "action": "menu" + }, + { + "type": "button", + "action": "view", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "map" + } + } + } + }, + { + "type": "button", + "action": "gamepadB" + } + ] + } + } } } } diff --git a/touch-layouts/layouts/doom-doom-ii.json b/touch-layouts/layouts/doom-doom-ii.json index d514b80..c69d72c 100644 --- a/touch-layouts/layouts/doom-doom-ii.json +++ b/touch-layouts/layouts/doom-doom-ii.json @@ -1,8 +1,8 @@ { "schema_version": 1, "layouts": { - "custom": { - "name": "custom", + "touchpad": { + "name": "Touchpad", "author": "Kode-Z", "content": { "left": { @@ -153,6 +153,140 @@ } ] } + }, + "joystick": { + "name": "Joystick", + "author": "Kode-Z", + "content": { + "left": { + "inner": [ + { + "type": "joystick", + "expand": true, + "axis": { + "input": "axisXY", + "output": "leftJoystick", + "deadzone": { + "threshold": 0.05, + "radial": true + } + } + } + ], + "outer": [ + { + "type": "button", + "action": "rightBumper" + }, + null, + [ + { + "type": "directionalPad", + "interaction": { + "activationType": "exclusive" + }, + "scale": 1.2 + } + ], + null, + null, + null, + { + "type": "button", + "action": "leftBumper" + } + ] + }, + "right": { + "inner": [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "rightJoystick" + } + } + ], + "outer": [ + null, + null, + { + "type": "button", + "action": "leftTrigger", + "toggle": true, + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "walk" + } + } + } + }, + null, + { + "type": "button", + "action": "gamepadA", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "interact" + } + } + } + }, + [ + { + "type": "touchpad", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "sensitivity": 2.5 + }, + "action": "rightTrigger", + "renderAsButton": true, + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "fire" + } + } + } + } + ] + ] + }, + "upper": { + "right": [ + { + "type": "button", + "action": "menu" + }, + { + "type": "button", + "action": "gamepadY", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "map" + } + } + } + }, + { + "type": "button", + "action": "gamepadB" + }, + { + "type": "button", + "action": "gamepadX" + } + ] + } + } } } -} \ No newline at end of file +} diff --git a/touch-layouts/layouts/quake.json b/touch-layouts/layouts/quake.json new file mode 100644 index 0000000..32654c2 --- /dev/null +++ b/touch-layouts/layouts/quake.json @@ -0,0 +1,198 @@ +{ + "schema_version": 1, + "layouts": { + "custom": { + "name": "Custom", + "author": "Kode-Z", + "content": { + "left": { + "inner": [ + { + "type": "joystick", + "action": "leftThumb", + "actionThreshold": 2, + "axis": { + "input": "axisXY", + "output": "leftJoystick", + "deadzone": { + "threshold": 0.05, + "radial": true + } + }, + "styles": { + "default": { + "knob": { + "faceImage": { + "type": "icon", + "value": "walk" + } + } + }, + "activated": { + "knob": { + "faceImage": { + "type": "icon", + "value": "sprint" + } + } + } + } + } + ], + "outer": [ + null, + null, + null, + null, + [ + { + "type": "directionalPad", + "scale": 0.8 + } + ], + [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "deadzone": { + "threshold": 0, + "radial": true + } + }, + "action": "rightBumper", + "styles": { + "default": { + "outline": { + "indicator": { + "type": "color", + "value": "#ffffff" + }, + "stroke": { + "type": "solid", + "color": "#ffffff" + }, + "opacity": 0.5 + }, + "knob": { + "faceImage": { + "type": "icon", + "value": "weaponSelect" + } + } + } + } + } + ] + ] + }, + "right": { + "inner": [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "deadzone": { + "threshold": 0, + "radial": true + } + }, + "styles": { + "default": { + "outline": { + "indicator": { + "type": "color", + "value": "#ffffff" + }, + "stroke": { + "type": "solid", + "color": "#ffffff" + }, + "opacity": 0.5 + }, + "knob": { + "faceImage": { + "type": "icon", + "value": "look" + } + } + } + } + } + ], + "outer": [ + null, + null, + null, + null, + { + "type": "button", + "action": "gamepadA", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "jump" + } + } + } + }, + [ + { + "type": "touchpad", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "sensitivity": 5, + "deadzone": { + "threshold": 0, + "radial": true + } + }, + "renderAsButton": true, + "action": [ + "rightTrigger" + ], + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "fire" + } + } + } + }, + null + ] + ] + }, + "upper": { + "right": [ + { + "type": "button", + "action": "menu" + }, + { + "type": "button", + "action": "view" + }, + { + "type": "button", + "action": "gamepadB" + }, + { + "type": "button", + "action": "gamepadY" + }, + { + "type": "button", + "action": "gamepadX" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/touch-layouts/layouts/resident-evil-4-remake.json b/touch-layouts/layouts/resident-evil-4-remake.json new file mode 100644 index 0000000..135e076 --- /dev/null +++ b/touch-layouts/layouts/resident-evil-4-remake.json @@ -0,0 +1,243 @@ +{ + "schema_version": 1, + "layouts": { + "type-a-1": { + "name": "Type A-1", + "author": "Kode-Z", + "content": { + "left": { + "inner": [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "leftJoystick" + }, + "action": "leftThumb", + "relative": false, + "actionThreshold": 2, + "styles": { + "default": { + "knob": { + "faceImage": { + "type": "icon", + "value": "walk" + } + } + }, + "activated": { + "knob": { + "faceImage": { + "type": "icon", + "value": "sprint" + } + } + } + } + } + ], + "outer": [ + null, + null, + [ + { + "type": "directionalPad", + "interaction": { + "activationType": "exclusive" + }, + "scale": 1 + } + ], + [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "leftJoystick", + "deadzone": { + "threshold": 0.05, + "radial": true + } + }, + "action": "leftBumper", + "styles": { + "default": { + "outline": { + "indicator": { + "type": "color", + "value": "#ffffff" + }, + "stroke": { + "type": "solid", + "color": "#ffffff" + }, + "opacity": 0.5 + }, + "knob": { + "faceImage": { + "type": "icon", + "value": "leftBumper" + } + } + } + } + } + ], + [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "leftJoystick", + "deadzone": { + "threshold": 0.05, + "radial": true + } + }, + "action": "leftTrigger", + "styles": { + "default": { + "outline": { + "indicator": { + "type": "color", + "value": "#ffffff" + }, + "stroke": { + "type": "solid", + "color": "#ffffff" + }, + "opacity": 0.5 + }, + "knob": { + "faceImage": { + "type": "icon", + "value": "aim" + } + } + } + } + } + ] + ] + }, + "right": { + "inner": [ + { + "type": "touchpad", + "axis": { + "input": "axisXY", + "output": "rightJoystick", + "sensitivity": 5, + "deadzone": { + "threshold": 0, + "radial": true + } + }, + "renderAsButton": true, + "action": [ + "rightTrigger" + ], + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "fire" + } + } + } + } + ], + "outer": [ + [ + { + "type": "button", + "action": "rightBumper" + }, + { + "type": "button", + "action": "rightThumb" + }, + { + "type": "button", + "action": "gamepadB", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "crouch" + } + } + } + } + ], + { + "type": "button", + "action": "gamepadX", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "reload" + } + } + } + }, + { + "type": "button", + "action": "gamepadA", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "interact" + } + } + } + }, + [ + { + "type": "joystick", + "axis": { + "input": "axisXY", + "output": "rightJoystick" + } + } + ] + ] + }, + "upper": { + "right": [ + { + "type": "button", + "action": "menu" + }, + { + "type": "button", + "action": "view", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "map" + } + } + } + }, + { + "type": "button", + "action": "gamepadY", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "inventory" + } + } + } + } + ] + } + } + } + } +} diff --git a/touch-layouts/layouts/sonic-mania.json b/touch-layouts/layouts/sonic-mania.json new file mode 100644 index 0000000..84c6973 --- /dev/null +++ b/touch-layouts/layouts/sonic-mania.json @@ -0,0 +1,55 @@ +{ + "schema_version": 1, + "layouts": { + "custom": { + "name": "Custom", + "author": "Kode-Z", + "content": { + "left": { + "inner": [ + { + "type": "directionalPad", + "scale": 2 + } + ] + }, + "right": { + "inner": [ + { + "type": "button", + "action": "gamepadA", + "styles": { + "default": { + "faceImage": { + "type": "icon", + "value": "jump" + } + } + } + } + ] + }, + "upper": { + "right": [ + { + "type": "button", + "action": "menu" + }, + { + "type": "button", + "action": "gamepadB" + }, + { + "type": "button", + "action": "gamepadY" + }, + { + "type": "button", + "action": "gamepadX" + } + ] + } + } + } + } +} \ No newline at end of file