34 lines
935 B
TypeScript
34 lines
935 B
TypeScript
import { create } from 'zustand';
|
|
|
|
export interface KeyboardState {
|
|
ctrlKeyState: boolean;
|
|
shiftKeyState: boolean;
|
|
spaceKeyState: boolean;
|
|
|
|
// Getters
|
|
ctrlOrShiftKeyActive: () => boolean;
|
|
|
|
// Actions
|
|
setCtrlKeyState: (active: boolean) => void;
|
|
setShiftKeyState: (active: boolean) => void;
|
|
setSpaceKeyState: (active: boolean) => void;
|
|
}
|
|
|
|
export const useKeyboardStore = create<KeyboardState>((set, get) => ({
|
|
// Initial state
|
|
ctrlKeyState: false, // Ctrl key pressed state
|
|
shiftKeyState: false, // Shift key pressed state
|
|
spaceKeyState: false, // Space key pressed state
|
|
|
|
// Getters
|
|
ctrlOrShiftKeyActive: () => {
|
|
const state = get();
|
|
return state.ctrlKeyState || state.shiftKeyState;
|
|
},
|
|
|
|
// Actions
|
|
setCtrlKeyState: (active) => set({ ctrlKeyState: active }),
|
|
setShiftKeyState: (active) => set({ shiftKeyState: active }),
|
|
setSpaceKeyState: (active) => set({ spaceKeyState: active }),
|
|
}));
|