mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-06-03 06:07:19 +02:00
Add "Xbox button > Press" shortcut
This commit is contained in:
parent
7206c9e8bc
commit
5381575048
@ -1,6 +1,8 @@
|
||||
export const enum ShortcutAction {
|
||||
BETTER_XCLOUD_SETTINGS_SHOW = 'bx.settings.show',
|
||||
|
||||
CONTROLLER_XBOX_BUTTON_PRESS = 'controller.xbox.press',
|
||||
|
||||
STREAM_VIDEO_TOGGLE = 'stream.video.toggle',
|
||||
STREAM_SCREENSHOT_CAPTURE = 'stream.screenshot.capture',
|
||||
|
||||
|
@ -16,6 +16,17 @@ export const SHORTCUT_ACTIONS: ShortcutActions = {
|
||||
[ShortcutAction.BETTER_XCLOUD_SETTINGS_SHOW]: [t('settings'), t('show')],
|
||||
},
|
||||
|
||||
// MKB
|
||||
...(STATES.browser.capabilities.mkb ? {
|
||||
[t('mouse-and-keyboard')]: {
|
||||
[ShortcutAction.MKB_TOGGLE]: [t('toggle')],
|
||||
},
|
||||
} : {}),
|
||||
|
||||
[t('controller')]: {
|
||||
[ShortcutAction.CONTROLLER_XBOX_BUTTON_PRESS]: [t('button-xbox'), t('press')],
|
||||
},
|
||||
|
||||
// Device
|
||||
...(!!AppInterface ? {
|
||||
[t('device')]: {
|
||||
@ -45,13 +56,6 @@ export const SHORTCUT_ACTIONS: ShortcutActions = {
|
||||
[ShortcutAction.STREAM_MICROPHONE_TOGGLE]: [t('microphone'), t('toggle')],
|
||||
},
|
||||
|
||||
// MKB
|
||||
...(STATES.browser.capabilities.mkb ? {
|
||||
[t('mouse-and-keyboard')]: {
|
||||
[ShortcutAction.MKB_TOGGLE]: [t('toggle')],
|
||||
},
|
||||
} : {}),
|
||||
|
||||
// Other
|
||||
[t('other')]: {
|
||||
[ShortcutAction.TRUE_ACHIEVEMENTS_OPEN]: [t('true-achievements'), t('show')],
|
||||
|
21
src/modules/shortcuts/virtual-controller-shortcut.ts
Normal file
21
src/modules/shortcuts/virtual-controller-shortcut.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { generateVirtualControllerMapping } from "@/utils/gamepad";
|
||||
|
||||
export class VirtualControllerShortcut {
|
||||
static pressXboxButton(): void {
|
||||
const streamSession = window.BX_EXPOSED.streamSession;
|
||||
if (!streamSession) {
|
||||
return;
|
||||
}
|
||||
|
||||
const released = generateVirtualControllerMapping();
|
||||
const pressed = generateVirtualControllerMapping({
|
||||
Nexus: 1,
|
||||
VirtualPhysicality: 1024, // Home
|
||||
});
|
||||
|
||||
streamSession.onVirtualGamepadInput('systemMenu', performance.now(), [pressed]);
|
||||
setTimeout(() => {
|
||||
streamSession.onVirtualGamepadInput('systemMenu', performance.now(), [released]);
|
||||
}, 100);
|
||||
}
|
||||
}
|
@ -57,3 +57,36 @@ export function hasGamepad() {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export function generateVirtualControllerMapping(override: {}={}) {
|
||||
const mapping = {
|
||||
GamepadIndex: 0,
|
||||
A: 0,
|
||||
B: 0,
|
||||
X: 0,
|
||||
Y: 0,
|
||||
LeftShoulder: 0,
|
||||
RightShoulder: 0,
|
||||
LeftTrigger: 0,
|
||||
RightTrigger: 0,
|
||||
View: 0,
|
||||
Menu: 0,
|
||||
LeftThumb: 0,
|
||||
RightThumb: 0,
|
||||
DPadUp: 0,
|
||||
DPadDown: 0,
|
||||
DPadLeft: 0,
|
||||
DPadRight: 0,
|
||||
Nexus: 0,
|
||||
LeftThumbXAxis: 0,
|
||||
LeftThumbYAxis: 0,
|
||||
RightThumbXAxis: 0,
|
||||
RightThumbYAxis: 0,
|
||||
PhysicalPhysicality: 0,
|
||||
VirtualPhysicality: 0,
|
||||
Dirty: false,
|
||||
Virtual: false,
|
||||
};
|
||||
|
||||
return Object.assign({}, mapping, override);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import { EmulatedMkbHandler } from "@/modules/mkb/mkb-handler";
|
||||
import { RendererShortcut } from "@/modules/shortcuts/renderer-shortcut";
|
||||
import { TrueAchievements } from "./true-achievements";
|
||||
import { NativeMkbHandler } from "@/modules/mkb/native-mkb-handler";
|
||||
import { VirtualControllerShortcut } from "@/modules/shortcuts/virtual-controller-shortcut";
|
||||
|
||||
export class ShortcutHandler {
|
||||
static runAction(action: ShortcutAction) {
|
||||
@ -69,6 +70,10 @@ export class ShortcutHandler {
|
||||
case ShortcutAction.TRUE_ACHIEVEMENTS_OPEN:
|
||||
TrueAchievements.getInstance().open(false);
|
||||
break;
|
||||
|
||||
case ShortcutAction.CONTROLLER_XBOX_BUTTON_PRESS:
|
||||
VirtualControllerShortcut.pressXboxButton();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,8 @@ export const SUPPORTED_LANGUAGES = {
|
||||
};
|
||||
|
||||
const Texts = {
|
||||
"button-xbox": "Xbox button",
|
||||
"press": "Press",
|
||||
"activate": "Activate",
|
||||
"activated": "Activated",
|
||||
"active": "Active",
|
||||
|
Loading…
x
Reference in New Issue
Block a user