keyboard.ts 935 B

123456789101112131415161718192021222324252627282930313233
  1. import { create } from 'zustand';
  2. export interface KeyboardState {
  3. ctrlKeyState: boolean;
  4. shiftKeyState: boolean;
  5. spaceKeyState: boolean;
  6. // Getters
  7. ctrlOrShiftKeyActive: () => boolean;
  8. // Actions
  9. setCtrlKeyState: (active: boolean) => void;
  10. setShiftKeyState: (active: boolean) => void;
  11. setSpaceKeyState: (active: boolean) => void;
  12. }
  13. export const useKeyboardStore = create<KeyboardState>((set, get) => ({
  14. // Initial state
  15. ctrlKeyState: false, // Ctrl key pressed state
  16. shiftKeyState: false, // Shift key pressed state
  17. spaceKeyState: false, // Space key pressed state
  18. // Getters
  19. ctrlOrShiftKeyActive: () => {
  20. const state = get();
  21. return state.ctrlKeyState || state.shiftKeyState;
  22. },
  23. // Actions
  24. setCtrlKeyState: (active) => set({ ctrlKeyState: active }),
  25. setShiftKeyState: (active) => set({ shiftKeyState: active }),
  26. setSpaceKeyState: (active) => set({ spaceKeyState: active }),
  27. }));