diff --git a/src/components/KeyboardKey.vue b/src/components/KeyboardKey.vue index b9b498c..4fcf9a5 100644 --- a/src/components/KeyboardKey.vue +++ b/src/components/KeyboardKey.vue @@ -15,9 +15,51 @@ const handleKey = ( ) => { event.preventDefault(); - const keycode = toKeycode(event.code); + let keycode = toKeycode(event.code); + if (keycode !== null && button !== undefined) { const data = prf.current!.data.keyboard!.data as any; + + if (event.getModifierState('NumLock') === false) { + switch (event.code) { + case 'NumpadDecimal': + keycode = toKeycode('Delete'); + break; + case 'Numpad0': + keycode = toKeycode('Insert'); + break; + case 'Numpad1': + keycode = toKeycode('End'); + break; + case 'Numpad2': + keycode = toKeycode('ArrowDown'); + break; + case 'Numpad3': + keycode = toKeycode('PageDown'); + break; + case 'Numpad4': + keycode = toKeycode('ArrowLeft'); + break; + case 'Numpad5': + keycode = toKeycode('Clear'); + break; + case 'Numpad6': + keycode = toKeycode('ArrowRight'); + break; + case 'Numpad7': + keycode = toKeycode('Home'); + break; + case 'Numpad8': + keycode = toKeycode('ArrowUp'); + break; + case 'Numpad9': + keycode = toKeycode('PageUp'); + break; + default: + break; + } + } + if (index !== undefined) { data[button][index] = keycode; } else { @@ -75,7 +117,7 @@ const handleMouse = ( } }; -const getKey = (key: keyof OngekiButtons, index?: number) => +const getKey = (key: keyof OngekiButtons, index?: number): any => computed(() => { const data = prf.current!.data.keyboard?.data as any; const keycode = @@ -93,6 +135,7 @@ const KEY_MAP: { [key: number]: string } = { 6: 'M5', 8: 'Backspace', 9: 'Tab', + 12: 'Clear', 13: 'Enter', 19: 'Pause', 20: 'CapsLock', @@ -204,28 +247,45 @@ const toKeycode = (key: string): number | null => { return res ? parseInt(res) : null; }; -defineProps({ +const props = defineProps({ small: Boolean, - verySmall: Boolean, tall: Boolean, tooltip: String, button: String, color: String, index: Number, }); + +const modelValue = computed(() => { + return getKey(props.button as keyof OngekiButtons, props.index).value; +}); + +const fontSize = computed(() => { + if (!props.small) { + return '1rem'; + } + const len = modelValue.value.length; + if (len < 5) { + return '1rem'; + } + if (len < 7) { + return '0.75rem'; + } + return '0.5rem'; +}); @@ -241,5 +301,7 @@ defineProps({ .buttoninputtext { border-radius: 6px; border: 1px solid rgba(200, 200, 200, 0.3); + overflow: scroll !important; + text-align: center !important; } diff --git a/src/components/options/Keyboard.vue b/src/components/options/Keyboard.vue index cb0d880..6bbe4e7 100644 --- a/src/components/options/Keyboard.vue +++ b/src/components/options/Keyboard.vue @@ -124,7 +124,7 @@ const prf = usePrfStore();
32 - 2 * i - 1)" > 32 - 2 * i)" >