mirror of https://github.com/jetkvm/kvm.git
feat(ui) Fix the CapsLock and Shift key for VirtualKeyboard (#779)
* feat(ui) Fix the CapsLock and Shift key for VirtualKeyboard * PR feedback: Default LED state in store
This commit is contained in:
parent
5f3dd89d55
commit
e8ef82e582
|
@ -25,7 +25,7 @@ function KeyboardWrapper() {
|
||||||
const keyboardRef = useRef<HTMLDivElement>(null);
|
const keyboardRef = useRef<HTMLDivElement>(null);
|
||||||
const { isAttachedVirtualKeyboardVisible, setAttachedVirtualKeyboardVisibility } =
|
const { isAttachedVirtualKeyboardVisible, setAttachedVirtualKeyboardVisibility } =
|
||||||
useUiStore();
|
useUiStore();
|
||||||
const { keysDownState, isVirtualKeyboardEnabled, setVirtualKeyboardEnabled } =
|
const { keyboardLedState, keysDownState, isVirtualKeyboardEnabled, setVirtualKeyboardEnabled } =
|
||||||
useHidStore();
|
useHidStore();
|
||||||
const { handleKeyPress, executeMacro } = useKeyboard();
|
const { handleKeyPress, executeMacro } = useKeyboard();
|
||||||
const { selectedKeyboard } = useKeyboardLayout();
|
const { selectedKeyboard } = useKeyboardLayout();
|
||||||
|
@ -46,9 +46,15 @@ function KeyboardWrapper() {
|
||||||
return decodeModifiers(keysDownState.modifier);
|
return decodeModifiers(keysDownState.modifier);
|
||||||
}, [keysDownState]);
|
}, [keysDownState]);
|
||||||
|
|
||||||
|
const isCapsLockActive = useMemo(() => {
|
||||||
|
return keyboardLedState.caps_lock;
|
||||||
|
}, [keyboardLedState]);
|
||||||
|
|
||||||
const mainLayoutName = useMemo(() => {
|
const mainLayoutName = useMemo(() => {
|
||||||
return isShiftActive ? "shift" : "default";
|
// if you have the CapsLock "latched", then the shift state is inverted
|
||||||
}, [isShiftActive]);
|
const effectiveShift = isCapsLockActive ? false === isShiftActive : isShiftActive;
|
||||||
|
return effectiveShift ? "shift" : "default";
|
||||||
|
}, [isCapsLockActive, isShiftActive]);
|
||||||
|
|
||||||
const keyNamesForDownKeys = useMemo(() => {
|
const keyNamesForDownKeys = useMemo(() => {
|
||||||
const activeModifierMask = keysDownState.modifier || 0;
|
const activeModifierMask = keysDownState.modifier || 0;
|
||||||
|
|
|
@ -463,7 +463,7 @@ export interface HidState {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useHidStore = create<HidState>(set => ({
|
export const useHidStore = create<HidState>(set => ({
|
||||||
keyboardLedState: {} as KeyboardLedState,
|
keyboardLedState: { num_lock: false, caps_lock: false, scroll_lock: false, compose: false, kana: false, shift: false } as KeyboardLedState,
|
||||||
setKeyboardLedState: (ledState: KeyboardLedState): void => set({ keyboardLedState: ledState }),
|
setKeyboardLedState: (ledState: KeyboardLedState): void => set({ keyboardLedState: ledState }),
|
||||||
|
|
||||||
keysDownState: { modifier: 0, keys: [0,0,0,0,0,0] } as KeysDownState,
|
keysDownState: { modifier: 0, keys: [0,0,0,0,0,0] } as KeysDownState,
|
||||||
|
|
Loading…
Reference in New Issue