mirror of
https://github.com/unanmed/HumanBreak.git
synced 2026-11-04 02:45:04 +08:00
feat: 获取单次虚拟按键
This commit is contained in:
1 parent
899d1fa68e
commit
89f1f4a948
5 files changed
+88
-25
No files matched your search
+25
-5
@@ -4,7 +4,7 @@
|
||||
v-for="(key, i) of keyboard.keys"
|
||||
class="keyboard-item"
|
||||
@click="keyboard.emitKey(key, i)"
|
||||
:active="!!key.active"
|
||||
:active="checkAssist(assist, key.key)"
|
||||
:style="{
|
||||
left: `${key.x}px`,
|
||||
top: `${key.y}px`,
|
||||
@@ -20,27 +20,46 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { checkAssist } from '@/core/main/custom/hotkey';
|
||||
import { Keyboard } from '@/core/main/custom/keyboard';
|
||||
import { KeyboardEmits } from '@/core/main/custom/keyboard';
|
||||
import { KeyCodeUtils } from '@/plugin/keyCodes';
|
||||
import { onUnmounted, ref } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
keyboard: Keyboard;
|
||||
}>();
|
||||
|
||||
const fontSize = props.keyboard.fontSize;
|
||||
const assist = ref(props.keyboard.assist);
|
||||
const fontSize = `${props.keyboard.fontSize}px`;
|
||||
|
||||
const [width, height] = (() => {
|
||||
const key = props.keyboard;
|
||||
const mw = Math.max(...key.keys.map(v => v.x));
|
||||
const mh = Math.max(...key.keys.map(v => v.y));
|
||||
let mw = 0;
|
||||
let mh = 0;
|
||||
for (const k of key.keys) {
|
||||
if (k.x + k.width > mw) mw = k.x + k.width;
|
||||
if (k.y + k.height > mh) mh = k.y + k.height;
|
||||
}
|
||||
|
||||
return [mw, mh];
|
||||
return [`${mw}px`, `${mh}px`];
|
||||
})();
|
||||
|
||||
function onAssist(_: any, ass: number) {
|
||||
new Promise<void>(res => {
|
||||
assist.value = ass;
|
||||
res();
|
||||
});
|
||||
}
|
||||
props.keyboard.on('emit', onAssist);
|
||||
|
||||
const emits = defineEmits<{
|
||||
(e: 'keyup', data: KeyboardEmits): void;
|
||||
}>();
|
||||
|
||||
onUnmounted(() => {
|
||||
props.keyboard.off('emit', onAssist);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@@ -49,6 +68,7 @@ const emits = defineEmits<{
|
||||
height: v-bind(height);
|
||||
display: block;
|
||||
font-size: v-bind(fontSize);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.keyboard-item {
|
||||
|
||||
Reference in new issue
Block a user