diff --git a/src/components/composer/simulate/KeySequenceEditor.vue b/src/components/composer/simulate/KeySequenceEditor.vue
index afe683b..645a02a 100644
--- a/src/components/composer/simulate/KeySequenceEditor.vue
+++ b/src/components/composer/simulate/KeySequenceEditor.vue
@@ -143,21 +143,23 @@
-
-
-
-
-
+
+
+
+
+
+
@@ -166,47 +168,52 @@
{{ index + 1 }}.
-
-
-
-
-
- {{ modifierLabels[key] }}
-
-
-
-
- {{ formatMainKey(element.mainKey) }}
-
-
-
-
-
- 删除此按键
-
-
+
+
+
+
+
+
+ {{ modifierLabels[key] }}
+
+
+
+ {{ formatMainKey(element.mainKey) }}
+
+
+
+
+
+
+ 删除此按键
+
-
-
-
+
+
+
@@ -215,52 +222,64 @@
import { defineComponent } from "vue";
import NumberInput from "../common/NumberInput.vue";
import draggable from "vuedraggable";
-import { parseFunction } from "js/composer/formatString";
// 检测操作系统
const isMac = window.utools.isMacOs();
-// 通用快捷键
+// 通用修饰键配置
+const getDefaultModifier = (extraModifiers = {}) => {
+ const baseModifiers = isMac ? { command: true } : { control: true };
+ return { ...baseModifiers, ...extraModifiers };
+};
+
+// 通用快捷键 - 根据操作系统设置不同的快捷键
const commonShortcuts = [
{
label: "复制",
- sequence: [{ mainKey: "c", modifiers: { command: true } }],
+ sequence: [{ mainKey: "c", modifiers: getDefaultModifier() }],
},
{
label: "粘贴",
- sequence: [{ mainKey: "v", modifiers: { command: true } }],
+ sequence: [{ mainKey: "v", modifiers: getDefaultModifier() }],
},
{
label: "剪切",
- sequence: [{ mainKey: "x", modifiers: { command: true } }],
+ sequence: [{ mainKey: "x", modifiers: getDefaultModifier() }],
},
{
label: "全选",
- sequence: [{ mainKey: "a", modifiers: { command: true } }],
+ sequence: [{ mainKey: "a", modifiers: getDefaultModifier() }],
},
{
label: "撤销",
- sequence: [{ mainKey: "z", modifiers: { command: true } }],
+ sequence: [{ mainKey: "z", modifiers: getDefaultModifier() }],
},
{
label: "重做",
- sequence: [{ mainKey: "z", modifiers: { command: true, shift: true } }],
+ sequence: [
+ { mainKey: "z", modifiers: getDefaultModifier({ shift: true }) },
+ ],
},
{
label: "保存",
- sequence: [{ mainKey: "s", modifiers: { command: true } }],
+ sequence: [{ mainKey: "s", modifiers: getDefaultModifier() }],
},
{
label: "查找",
- sequence: [{ mainKey: "f", modifiers: { command: true } }],
+ sequence: [{ mainKey: "f", modifiers: getDefaultModifier() }],
},
{
label: "替换",
- sequence: [{ mainKey: "h", modifiers: { command: true } }],
+ sequence: [{ mainKey: "h", modifiers: getDefaultModifier() }],
},
{
label: "关闭窗口",
- sequence: [{ mainKey: "w", modifiers: { command: true } }],
+ sequence: [
+ {
+ mainKey: isMac ? "w" : "f4",
+ modifiers: isMac ? { command: true } : { alt: true },
+ },
+ ],
},
];
@@ -565,11 +584,11 @@ export default defineComponent({
: key.charAt(0).toUpperCase() + key.slice(1))
);
},
- generateCode() {
- if (this.argvs.sequence.length === 0) return;
+ generateCode(argvs = this.argvs) {
+ if (!argvs.sequence.length) return;
// 将每个按键记录转换为按键数组
- const keySequence = this.argvs.sequence.map((item) => {
+ const keySequence = argvs.sequence.map((item) => {
const activeModifiers = Object.entries(item.modifiers)
.filter(([_, active]) => active)
.map(([key]) => key)
@@ -581,7 +600,7 @@ export default defineComponent({
// 生成代码
const options =
- this.argvs.sequence.length > 1 ? { interval: this.argvs.interval } : {};
+ argvs.sequence.length > 1 ? { interval: argvs.interval } : {};
if (Object.keys(options).length > 0) {
return `${this.modelValue.value}(${JSON.stringify(
keySequence
@@ -589,12 +608,14 @@ export default defineComponent({
}
return `${this.modelValue.value}(${JSON.stringify(keySequence)})`;
},
- updateValue() {
- this.$emit("update:modelValue", {
+ updateValue(newArgvs) {
+ const updatedModelValue = {
...this.modelValue,
- argvs: this.argvs,
- code: this.generateCode(),
- });
+ argvs: newArgvs || this.argvs,
+ code: this.generateCode(newArgvs || this.argvs),
+ };
+
+ this.$emit("update:modelValue", updatedModelValue);
},
appendSequence(newSequence) {
const startId = Date.now();
@@ -637,6 +658,24 @@ export default defineComponent({
}
return argvs;
},
+ toggleModifier(index, key) {
+ // 创建新的 argvs 对象
+ const newArgvs = {
+ sequence: [...this.argvs.sequence],
+ interval: this.argvs.interval,
+ };
+
+ // 修改对应按键的修饰键状态
+ newArgvs.sequence[index] = {
+ ...newArgvs.sequence[index],
+ modifiers: {
+ ...newArgvs.sequence[index].modifiers,
+ [key]: !newArgvs.sequence[index].modifiers[key],
+ },
+ };
+ // 更新 modelValue
+ this.updateValue(newArgvs);
+ },
},
mounted() {
if (!this.modelValue.code && !this.modelValue.argvs) {
@@ -648,7 +687,7 @@ export default defineComponent({