-
+
diff --git a/src/components/keyboard/KeySetting.vue b/src/components/keyboard/KeySetting.vue
index 5831a3d..0600c61 100644
--- a/src/components/keyboard/KeySetting.vue
+++ b/src/components/keyboard/KeySetting.vue
@@ -18,19 +18,17 @@ import { Store } from "@tauri-apps/plugin-store";
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
import { loadDefaultKeyconfig } from "../../invoke";
import { KeyMappingConfig } from "../../keyMappingConfig";
+import { useKeyboardStore } from "../../store/keyboard";
const emit = defineEmits<{
resetEditKeyMappingList: [];
}>();
const store = useGlobalStore();
+const keyboardStore = useKeyboardStore();
const localStore = new Store("store.bin");
const message = useMessage();
-const showKeyInfoFlag = defineModel("showKeyInfoFlag", { required: true });
-const showSettingFlag = defineModel("showSettingFlag", { required: true });
-const edited = defineModel("edited", { required: true });
-
const showImportModal = ref(false);
const showRenameModal = ref(false);
const importModalInputValue = ref("");
@@ -126,7 +124,7 @@ function dragHandler(downEvent: MouseEvent) {
localStore.set("keySettingPos", keySettingPos.value);
} else {
// click up
- showSettingFlag.value = !showSettingFlag.value;
+ keyboardStore.showSettingFlag = !keyboardStore.showSettingFlag;
}
};
window.addEventListener("mouseup", upHandler);
@@ -240,7 +238,7 @@ function exportKeyMappingConfig() {
function saveKeyMappingConfig() {
if (store.applyEditKeyMappingList()) {
- edited.value = false;
+ keyboardStore.edited = false;
} else {
message.error("存在重复按键,无法保存");
}
@@ -322,8 +320,12 @@ function migrateKeyMappingConfig() {
-
-
+
+
按键方案
@@ -334,7 +336,7 @@ function migrateKeyMappingConfig() {
/>
Relative Size:{{ curRelativeSize.w }}x{{ curRelativeSize.h }}
-
+
保存方案
还原方案
导出方案
导入默认
- 按键信息
+ 按键信息
diff --git a/src/components/keyboard/KeySkill.vue b/src/components/keyboard/KeySkill.vue
index 27238fe..cc0ba17 100644
--- a/src/components/keyboard/KeySkill.vue
+++ b/src/components/keyboard/KeySkill.vue
@@ -16,28 +16,25 @@ import {
KeyDirectionalSkill,
KeyTriggerWhenPressedSkill,
} from "../../keyMappingConfig";
-const emit = defineEmits<{
- edit: [];
-}>();
+import { useKeyboardStore } from "../../store/keyboard";
const props = defineProps<{
index: number;
}>();
-const activeIndex = defineModel("activeIndex", { required: true });
-const showButtonSettingFlag = defineModel("showButtonSettingFlag", {
- required: true,
-});
+const keyboardStore = useKeyboardStore();
const store = useGlobalStore();
const elementRef = ref(null);
-const isActive = computed(() => props.index === activeIndex.value);
+const isActive = computed(
+ () => props.index === keyboardStore.activeButtonIndex
+);
const keyMapping = computed(() => store.editKeyMappingList[props.index]);
function dragHandler(downEvent: MouseEvent) {
- activeIndex.value = props.index;
- showButtonSettingFlag.value = false;
+ keyboardStore.activeButtonIndex = props.index;
+ keyboardStore.showButtonSettingFlag = false;
const oldX = keyMapping.value.posX;
const oldY = keyMapping.value.posY;
const element = elementRef.value;
@@ -63,7 +60,7 @@ function dragHandler(downEvent: MouseEvent) {
window.removeEventListener("mousemove", moveHandler);
window.removeEventListener("mouseup", upHandler);
if (oldX !== keyMapping.value.posX || oldY !== keyMapping.value.posY) {
- emit("edit");
+ keyboardStore.edited = true;
}
};
window.addEventListener("mouseup", upHandler);
@@ -71,8 +68,9 @@ function dragHandler(downEvent: MouseEvent) {
}
function delCurKeyMapping() {
- emit("edit");
- activeIndex.value = -1;
+ keyboardStore.edited = true;
+
+ keyboardStore.activeButtonIndex = -1;
store.editKeyMappingList.splice(props.index, 1);
}
@@ -91,7 +89,7 @@ function changeSkillType(flag: string) {
// the design of skill keymapping type is not good
const t = keyMapping.value.type;
if (flag === "direction") {
- emit("edit");
+ keyboardStore.edited = true;
if (t === "DirectionalSkill") {
delete (keyMapping.value as any).range;
keyMapping.value.type = "DirectionlessSkill";
@@ -104,7 +102,7 @@ function changeSkillType(flag: string) {
k.rangeOrTime = k.directional ? 0 : 80;
}
} else if (flag === "trigger") {
- emit("edit");
+ keyboardStore.edited = true;
if (t === "DirectionalSkill") {
const k = keyMapping.value as any;
k.directional = true;
@@ -144,7 +142,7 @@ function showSetting() {
settingPosX.value = Math.min(keyMapping.value.posX + 40, maxWidth);
settingPosY.value = Math.min(keyMapping.value.posY - 30, maxHeight);
updateRangeIndicator(keyboardElement);
- showButtonSettingFlag.value = true;
+ keyboardStore.showButtonSettingFlag = true;
}
const rangeIndicatorTop = ref(0);
@@ -209,7 +207,7 @@ function updateRangeIndicator(element?: HTMLElement) {
@@ -249,7 +247,7 @@ function updateRangeIndicator(element?: HTMLElement) {
:min="0"
:max="100"
@update:value="
- emit('edit');
+ keyboardStore.edited = true;
updateRangeIndicator();
"
/>
@@ -262,19 +260,19 @@ function updateRangeIndicator(element?: HTMLElement) {
v-model:value="(keyMapping as KeyTriggerWhenPressedSkill).rangeOrTime"
:min="0"
placeholder="请输入触摸时长(ms)"
- @update:value="emit('edit')"
+ @update:value="keyboardStore.edited = true"
/>
();
+import { useKeyboardStore } from "../../store/keyboard";
const props = defineProps<{
index: number;
}>();
-const activeSteeringWheelButtonKeyIndex = defineModel(
- "activeSteeringWheelButtonKeyIndex",
- { required: true }
-);
-
-const activeIndex = defineModel("activeIndex", { required: true });
-const showButtonSettingFlag = defineModel("showButtonSettingFlag", {
- required: true,
-});
+const keyboardStore = useKeyboardStore();
const store = useGlobalStore();
const elementRef = ref(null);
-const isActive = computed(() => props.index === activeIndex.value);
+const isActive = computed(
+ () => props.index === keyboardStore.activeButtonIndex
+);
const keyMapping = computed(
() => store.editKeyMappingList[props.index] as KeySteeringWheel
);
@@ -45,8 +36,8 @@ const offset = computed(() => {
});
function dragHandler(downEvent: MouseEvent) {
- activeIndex.value = props.index;
- showButtonSettingFlag.value = false;
+ keyboardStore.activeButtonIndex = props.index;
+ keyboardStore.showButtonSettingFlag = false;
const oldX = keyMapping.value.posX;
const oldY = keyMapping.value.posY;
const element = elementRef.value;
@@ -72,7 +63,7 @@ function dragHandler(downEvent: MouseEvent) {
window.removeEventListener("mousemove", moveHandler);
window.removeEventListener("mouseup", upHandler);
if (oldX !== keyMapping.value.posX || oldY !== keyMapping.value.posY) {
- emit("edit");
+ keyboardStore.edited = true;
}
};
window.addEventListener("mouseup", upHandler);
@@ -80,8 +71,8 @@ function dragHandler(downEvent: MouseEvent) {
}
function delCurKeyMapping() {
- emit("edit");
- activeIndex.value = -1;
+ keyboardStore.edited = true;
+ keyboardStore.activeButtonIndex = -1;
store.editKeyMappingList.splice(props.index, 1);
}
@@ -99,7 +90,7 @@ function showSetting() {
maxWidth
);
settingPosY.value = Math.min(keyMapping.value.posY - offset.value, maxHeight);
- showButtonSettingFlag.value = true;
+ keyboardStore.showButtonSettingFlag = true;
}
@@ -118,17 +109,19 @@ function showSetting() {
>
{{ keyMapping.key.up }}
{{ keyMapping.key.left }}
@@ -136,17 +129,19 @@ function showSetting() {
{{ keyMapping.key.right }}
{{ keyMapping.key.down }}
@@ -186,7 +181,7 @@ function showSetting() {
diff --git a/src/store/global.ts b/src/store/global.ts
index 6d63c7e..2f1c4ab 100644
--- a/src/store/global.ts
+++ b/src/store/global.ts
@@ -10,7 +10,7 @@ import { Store } from "@tauri-apps/plugin-store";
const localStore = new Store("store.bin");
-export const useGlobalStore = defineStore("counter", () => {
+export const useGlobalStore = defineStore("global", () => {
const showLoadingRef = ref(false);
function showLoading() {
showLoadingRef.value = true;
diff --git a/src/store/keyboard.ts b/src/store/keyboard.ts
new file mode 100644
index 0000000..36e76c8
--- /dev/null
+++ b/src/store/keyboard.ts
@@ -0,0 +1,20 @@
+import { defineStore } from "pinia";
+import { ref } from "vue";
+
+export const useKeyboardStore = defineStore("keyboard", () => {
+ const showKeyInfoFlag = ref(false);
+ const showSettingFlag = ref(false);
+ const showButtonSettingFlag = ref(false);
+ const activeButtonIndex = ref(-1);
+ const activeSteeringWheelButtonKeyIndex = ref(-1);
+ const edited = ref(false);
+
+ return {
+ showKeyInfoFlag,
+ showSettingFlag,
+ showButtonSettingFlag,
+ activeButtonIndex,
+ activeSteeringWheelButtonKeyIndex,
+ edited,
+ };
+});