mirror of
https://github.com/AkiChase/scrcpy-mask
synced 2025-04-21 04:25:13 +08:00
feat(hotkey): add key mapping config resolver
This commit is contained in:
parent
6d30329e77
commit
2cc8b5b30a
@ -37,7 +37,7 @@ onActivated(async () => {
|
|||||||
[size.width - ml, size.height - mt]
|
[size.width - ml, size.height - mt]
|
||||||
);
|
);
|
||||||
|
|
||||||
applyShortcuts(maskRef.value);
|
applyShortcuts(maskRef.value, store.curKeyMappingConfig);
|
||||||
listenToKeyEvent();
|
listenToKeyEvent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -47,8 +47,7 @@ function toStartServer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO 3. 根据配置渲染按钮
|
// TODO 3. 根据配置渲染按钮
|
||||||
// 配置文件读取到store中,不要每次都io读取
|
// 配置文件读取到store中,不要每次都io读取
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import { Ref, onActivated, ref } from "vue";
|
import { Ref, onActivated, ref } from "vue";
|
||||||
import { onBeforeRouteLeave } from "vue-router";
|
import { onBeforeRouteLeave } from "vue-router";
|
||||||
|
|
||||||
|
// TODO 4-. 读写本地配置文件,加载到global store中
|
||||||
// TODO 4. 右键空白区域添加按键
|
// TODO 4. 右键空白区域添加按键
|
||||||
// TODO 5. 左键可拖动按钮(并显示到顶部),右键按钮进行修改、删除
|
// TODO 5. 左键可拖动按钮(并显示到顶部),右键按钮进行修改、删除
|
||||||
|
|
||||||
|
245
src/hotkey.ts
245
src/hotkey.ts
@ -100,7 +100,6 @@ function calculateMacroPosList(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 2. 根据配置初始化快捷键
|
|
||||||
// TODO ? 技能界面实际上是有投影变换的,需要一定的算法,不能仅仅相对坐标 (640,400)
|
// TODO ? 技能界面实际上是有投影变换的,需要一定的算法,不能仅仅相对坐标 (640,400)
|
||||||
|
|
||||||
// add shortcuts for observation
|
// add shortcuts for observation
|
||||||
@ -260,8 +259,9 @@ function addTriggerWhenPressedSkillShortcuts(
|
|||||||
posX: number,
|
posX: number,
|
||||||
posY: number,
|
posY: number,
|
||||||
directional: boolean,
|
directional: boolean,
|
||||||
// range is needed when directional is true
|
// range: when directional is true
|
||||||
range: number,
|
// time: when directional is false
|
||||||
|
rangeOrTime: number,
|
||||||
pointerId: number
|
pointerId: number
|
||||||
) {
|
) {
|
||||||
if (directional) {
|
if (directional) {
|
||||||
@ -281,8 +281,8 @@ function addTriggerWhenPressedSkillShortcuts(
|
|||||||
pos: [
|
pos: [
|
||||||
{ x: posX, y: posY },
|
{ x: posX, y: posY },
|
||||||
{
|
{
|
||||||
x: posX + clientxToCenterOffsetx(mouseX, range),
|
x: posX + clientxToCenterOffsetx(mouseX, rangeOrTime),
|
||||||
y: posY + clientyToCenterOffsety(mouseY, range),
|
y: posY + clientyToCenterOffsety(mouseY, rangeOrTime),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
intervalBetweenPos: 0,
|
intervalBetweenPos: 0,
|
||||||
@ -292,7 +292,7 @@ function addTriggerWhenPressedSkillShortcuts(
|
|||||||
undefined
|
undefined
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
addTapShortcuts(key, relativeSize, 80, posX, posY, pointerId);
|
addTapShortcuts(key, relativeSize, rangeOrTime, posX, posY, pointerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -687,7 +687,7 @@ function handleMouseWheel(event: WheelEvent) {
|
|||||||
|
|
||||||
function addShortcut(
|
function addShortcut(
|
||||||
key: string,
|
key: string,
|
||||||
downCB: () => Promise<void>,
|
downCB?: () => Promise<void>,
|
||||||
loopCB?: () => Promise<void>,
|
loopCB?: () => Promise<void>,
|
||||||
upCB?: () => Promise<void>,
|
upCB?: () => Promise<void>,
|
||||||
cancelAble = false // only work with downCB && upCB
|
cancelAble = false // only work with downCB && upCB
|
||||||
@ -870,6 +870,113 @@ function execLoopCB() {
|
|||||||
if (loopFlag) requestAnimationFrame(execLoopCB);
|
if (loopFlag) requestAnimationFrame(execLoopCB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function applyKeyMappingConfigShortcuts(keyMappingConfig: any): boolean {
|
||||||
|
try {
|
||||||
|
const relativeSize = keyMappingConfig.relativeSize;
|
||||||
|
for (const item of keyMappingConfig.list) {
|
||||||
|
switch (item.type) {
|
||||||
|
case "SteeringWheel":
|
||||||
|
addSteeringWheelKeyboardShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.offset,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "DirectionalSkill":
|
||||||
|
addDirectionalSkillShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.range,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "DirectionlessSkill":
|
||||||
|
addDirectionlessSkillShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "CancelSkill":
|
||||||
|
addCancelSkillShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "Tap":
|
||||||
|
addTapShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.time,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "TriggerWhenPressedSkill":
|
||||||
|
addTriggerWhenPressedSkillShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.directional,
|
||||||
|
item.rangeOrTime,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "Observation":
|
||||||
|
addObservationShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.scale,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "Macro":
|
||||||
|
addShortcut(
|
||||||
|
item.key,
|
||||||
|
item.macro.down === null
|
||||||
|
? undefined
|
||||||
|
: async () => {
|
||||||
|
await execMacro(relativeSize, item.macro.down);
|
||||||
|
},
|
||||||
|
item.macro.loop === null
|
||||||
|
? undefined
|
||||||
|
: async () => {
|
||||||
|
await execMacro(relativeSize, item.macro.loop);
|
||||||
|
},
|
||||||
|
item.macro.up === null
|
||||||
|
? undefined
|
||||||
|
: async () => {
|
||||||
|
await execMacro(relativeSize, item.macro.up);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.error("Invalid item type: ", item.type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Invalid keyMappingConfig: ", keyMappingConfig, e);
|
||||||
|
clearShortcuts();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function listenToKeyEvent() {
|
export function listenToKeyEvent() {
|
||||||
document.addEventListener("keydown", keydownHandler);
|
document.addEventListener("keydown", keydownHandler);
|
||||||
document.addEventListener("keyup", keyupHandler);
|
document.addEventListener("keyup", keyupHandler);
|
||||||
@ -902,133 +1009,13 @@ export function updateScreenSizeAndMaskArea(
|
|||||||
maskSizeH = maskArea[1];
|
maskSizeH = maskArea[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function applyShortcuts(element: HTMLElement) {
|
export function applyShortcuts(element: HTMLElement, keyMappingConfig: any) {
|
||||||
element.addEventListener("mousedown", handleMouseDown);
|
element.addEventListener("mousedown", handleMouseDown);
|
||||||
element.addEventListener("mousemove", handleMouseMove);
|
element.addEventListener("mousemove", handleMouseMove);
|
||||||
element.addEventListener("mouseup", handleMouseUp);
|
element.addEventListener("mouseup", handleMouseUp);
|
||||||
element.addEventListener("wheel", handleMouseWheel);
|
element.addEventListener("wheel", handleMouseWheel);
|
||||||
// TODO 1.2 使用setCursorGrab相关来限制移出,而不是使用下面的方法
|
|
||||||
// TODO 任何down的时候都要限制移出
|
|
||||||
element.addEventListener("mouseout", handleMouseUp); // mouse out of the element as mouse up
|
element.addEventListener("mouseout", handleMouseUp); // mouse out of the element as mouse up
|
||||||
|
|
||||||
// 读取按键配置文件时获取
|
|
||||||
const relativeSize = { w: 1280, h: 720 };
|
|
||||||
|
|
||||||
addClickShortcuts("M0", 0);
|
addClickShortcuts("M0", 0);
|
||||||
addSteeringWheelKeyboardShortcuts(
|
applyKeyMappingConfigShortcuts(keyMappingConfig);
|
||||||
{
|
|
||||||
left: "KeyA",
|
|
||||||
right: "KeyD",
|
|
||||||
up: "KeyW",
|
|
||||||
down: "KeyS",
|
|
||||||
},
|
|
||||||
relativeSize,
|
|
||||||
180,
|
|
||||||
560,
|
|
||||||
100,
|
|
||||||
1
|
|
||||||
);
|
|
||||||
addDirectionalSkillShortcuts("KeyQ", relativeSize, 950, 610, 200, 2); // skill 1
|
|
||||||
addDirectionalSkillShortcuts("AltLeft", relativeSize, 1025, 500, 200, 2); // skill 2
|
|
||||||
addDirectionalSkillShortcuts("KeyE", relativeSize, 1160, 420, 200, 2); // skill 3
|
|
||||||
addTriggerWhenPressedSkillShortcuts(
|
|
||||||
"M4",
|
|
||||||
relativeSize,
|
|
||||||
1160,
|
|
||||||
420,
|
|
||||||
false,
|
|
||||||
0,
|
|
||||||
2
|
|
||||||
); // skill 3 (no direction and trigger when pressed)
|
|
||||||
addDirectionlessSkillShortcuts("M1", relativeSize, 1150, 280, 2); // equipment skill (middle mouse click)
|
|
||||||
addCancelSkillShortcuts("Space", relativeSize, 1160, 140, 2); // cancel skill
|
|
||||||
|
|
||||||
addTapShortcuts("KeyB", relativeSize, 80, 650, 650, 3); // home
|
|
||||||
addTapShortcuts("KeyC", relativeSize, 80, 740, 650, 3); // recover
|
|
||||||
addDirectionalSkillShortcuts("KeyF", relativeSize, 840, 650, 200, 2); // summoner skills
|
|
||||||
addTriggerWhenPressedSkillShortcuts(
|
|
||||||
"ControlLeft",
|
|
||||||
relativeSize,
|
|
||||||
840,
|
|
||||||
650,
|
|
||||||
false,
|
|
||||||
0,
|
|
||||||
3
|
|
||||||
); // summoner skills (no direction and trigger when pressed)
|
|
||||||
addTapShortcuts("M2", relativeSize, 80, 1165, 620, 3); // attack (right click)
|
|
||||||
addTapShortcuts("Digit1", relativeSize, 80, 880, 560, 3); // skill 1 upgrade
|
|
||||||
addTapShortcuts("Digit2", relativeSize, 80, 960, 430, 3); // skill 2 upgrade
|
|
||||||
addTapShortcuts("Digit3", relativeSize, 80, 1090, 350, 3); // skill 3 upgrade
|
|
||||||
addTapShortcuts("Digit5", relativeSize, 80, 130, 300, 3); // quick buy 1
|
|
||||||
addTapShortcuts("Digit6", relativeSize, 80, 130, 370, 3); // quick buy 2
|
|
||||||
|
|
||||||
addTapShortcuts("WheelDown", relativeSize, 80, 130, 440, 3); // equipment skill
|
|
||||||
|
|
||||||
addObservationShortcuts("M3", relativeSize, 1000, 200, 0.5, 4); // observation
|
|
||||||
|
|
||||||
// panel
|
|
||||||
addShortcut(
|
|
||||||
"Tab",
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 1185, 40, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 1220, 100, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// shop
|
|
||||||
addShortcut(
|
|
||||||
"ShiftLeft",
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 40, 300, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 1200, 60, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// map
|
|
||||||
addShortcut(
|
|
||||||
"KeyZ",
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 250, 230, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
async () => {
|
|
||||||
await execMacro(relativeSize, [
|
|
||||||
{
|
|
||||||
type: "touch",
|
|
||||||
args: ["default", 5, 640, 150, 80],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,253 @@ export const useGlobalStore = defineStore("counter", () => {
|
|||||||
|
|
||||||
const controledDevice: Ref<ControledDevice | null> = ref(null);
|
const controledDevice: Ref<ControledDevice | null> = ref(null);
|
||||||
|
|
||||||
|
const curKeyMappingConfig = {
|
||||||
|
relativeSize: { w: 1280, h: 720 },
|
||||||
|
title: "王者荣耀-暃",
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
type: "SteeringWheel",
|
||||||
|
note: "方向轮盘",
|
||||||
|
key: {
|
||||||
|
left: "KeyA",
|
||||||
|
right: "KeyD",
|
||||||
|
up: "KeyW",
|
||||||
|
down: "KeyS",
|
||||||
|
},
|
||||||
|
posX: 180,
|
||||||
|
posY: 560,
|
||||||
|
offset: 100,
|
||||||
|
pointerId: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "DirectionalSkill",
|
||||||
|
note: "技能1",
|
||||||
|
key: "KeyQ",
|
||||||
|
posX: 950,
|
||||||
|
posY: 610,
|
||||||
|
range: 200,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "DirectionalSkill",
|
||||||
|
note: "技能2",
|
||||||
|
key: "AltLeft",
|
||||||
|
posX: 1025,
|
||||||
|
posY: 500,
|
||||||
|
range: 200,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "DirectionalSkill",
|
||||||
|
note: "技能3",
|
||||||
|
key: "KeyE",
|
||||||
|
posX: 1160,
|
||||||
|
posY: 420,
|
||||||
|
range: 200,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "TriggerWhenPressedSkill",
|
||||||
|
note: "技能3",
|
||||||
|
key: "M4",
|
||||||
|
posX: 1160,
|
||||||
|
posY: 420,
|
||||||
|
directional: true,
|
||||||
|
rangeOrTime: 0,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "DirectionlessSkill",
|
||||||
|
note: "无方向装备技能",
|
||||||
|
key: "M1",
|
||||||
|
posX: 1150,
|
||||||
|
posY: 280,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "CancelSkill",
|
||||||
|
note: "取消技能",
|
||||||
|
key: "Space",
|
||||||
|
posX: 1160,
|
||||||
|
posY: 140,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "回城",
|
||||||
|
key: "KeyB",
|
||||||
|
time: 80,
|
||||||
|
posX: 650,
|
||||||
|
posY: 650,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "回复",
|
||||||
|
key: "KeyC",
|
||||||
|
time: 80,
|
||||||
|
posX: 650,
|
||||||
|
posY: 740,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "DirectionalSkill",
|
||||||
|
note: "召唤师技能",
|
||||||
|
key: "KeyF",
|
||||||
|
posX: 840,
|
||||||
|
posY: 650,
|
||||||
|
range: 200,
|
||||||
|
pointerId: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "TriggerWhenPressedSkill",
|
||||||
|
note: "无方向召唤师技能",
|
||||||
|
key: "ControlLeft",
|
||||||
|
posX: 840,
|
||||||
|
posY: 650,
|
||||||
|
directional: false,
|
||||||
|
rangeOrTime: 80,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "攻击",
|
||||||
|
key: "M2",
|
||||||
|
time: 80,
|
||||||
|
posX: 1165,
|
||||||
|
posY: 620,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "技能1升级",
|
||||||
|
key: "Digit1",
|
||||||
|
time: 80,
|
||||||
|
posX: 880,
|
||||||
|
posY: 560,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "技能2升级",
|
||||||
|
key: "Digit2",
|
||||||
|
time: 80,
|
||||||
|
posX: 960,
|
||||||
|
posY: 430,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "技能3升级",
|
||||||
|
key: "Digit3",
|
||||||
|
time: 80,
|
||||||
|
posX: 1090,
|
||||||
|
posY: 350,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "快速购买1",
|
||||||
|
key: "Digit5",
|
||||||
|
time: 80,
|
||||||
|
posX: 130,
|
||||||
|
posY: 300,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Tap",
|
||||||
|
note: "快速购买2",
|
||||||
|
key: "Digit6",
|
||||||
|
time: 80,
|
||||||
|
posX: 130,
|
||||||
|
posY: 370,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "TriggerWhenPressedSkill",
|
||||||
|
note: "装备技能",
|
||||||
|
key: "WheelDown",
|
||||||
|
posX: 130,
|
||||||
|
posY: 440,
|
||||||
|
directional: false,
|
||||||
|
rangeOrTime: 80,
|
||||||
|
pointerId: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Observation",
|
||||||
|
note: "观察",
|
||||||
|
key: "M3",
|
||||||
|
posX: 1000,
|
||||||
|
posY: 200,
|
||||||
|
scale: 0.5,
|
||||||
|
pointerId: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Macro",
|
||||||
|
note: "战绩面板",
|
||||||
|
key: "Tab",
|
||||||
|
macro: {
|
||||||
|
down: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 1185, 40, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
loop: null,
|
||||||
|
up: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 1220, 100, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
pointerId: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Macro",
|
||||||
|
note: "商店",
|
||||||
|
key: "ShiftLeft",
|
||||||
|
macro: {
|
||||||
|
down: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 40, 300, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
loop: null,
|
||||||
|
up: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 1200, 60, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
pointerId: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "Macro",
|
||||||
|
note: "地图",
|
||||||
|
key: "KeyZ",
|
||||||
|
macro: {
|
||||||
|
down: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 250, 230, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
loop: null,
|
||||||
|
up: [
|
||||||
|
{
|
||||||
|
type: "touch",
|
||||||
|
args: ["default", 5, 640, 150, 80],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
pointerId: 5,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
showLoading,
|
showLoading,
|
||||||
hideLoading,
|
hideLoading,
|
||||||
@ -29,5 +276,6 @@ export const useGlobalStore = defineStore("counter", () => {
|
|||||||
controledDevice,
|
controledDevice,
|
||||||
screenSizeW,
|
screenSizeW,
|
||||||
screenSizeH,
|
screenSizeH,
|
||||||
|
curKeyMappingConfig
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user