mirror of
https://github.com/luckfox-eng29/kvm.git
synced 2026-01-18 03:28:19 +01:00
feat: Add scroll sensitivity configuration and improved wheel event handling (#242)
- Implement scroll sensitivity settings with low, default, and high modes - Add RPC methods for getting and setting scroll sensitivity - Enhance wheel event handling with device-specific sensitivity and clamping - Create a new device settings store for managing scroll and trackpad parameters - Update mouse settings route to include scroll sensitivity selection
This commit is contained in:
@@ -306,6 +306,78 @@ export const useSettingsStore = create(
|
||||
),
|
||||
);
|
||||
|
||||
export interface DeviceSettingsState {
|
||||
trackpadSensitivity: number;
|
||||
mouseSensitivity: number;
|
||||
clampMin: number;
|
||||
clampMax: number;
|
||||
blockDelay: number;
|
||||
trackpadThreshold: number;
|
||||
scrollSensitivity: "low" | "default" | "high";
|
||||
setScrollSensitivity: (sensitivity: DeviceSettingsState["scrollSensitivity"]) => void;
|
||||
}
|
||||
|
||||
export const useDeviceSettingsStore = create<DeviceSettingsState>(set => ({
|
||||
trackpadSensitivity: 3.0,
|
||||
mouseSensitivity: 5.0,
|
||||
clampMin: -8,
|
||||
clampMax: 8,
|
||||
blockDelay: 25,
|
||||
trackpadThreshold: 10,
|
||||
|
||||
scrollSensitivity: "default",
|
||||
setScrollSensitivity: sensitivity => {
|
||||
const wheelSettings: Record<
|
||||
DeviceSettingsState["scrollSensitivity"],
|
||||
{
|
||||
trackpadSensitivity: DeviceSettingsState["trackpadSensitivity"];
|
||||
mouseSensitivity: DeviceSettingsState["mouseSensitivity"];
|
||||
clampMin: DeviceSettingsState["clampMin"];
|
||||
clampMax: DeviceSettingsState["clampMax"];
|
||||
blockDelay: DeviceSettingsState["blockDelay"];
|
||||
trackpadThreshold: DeviceSettingsState["trackpadThreshold"];
|
||||
}
|
||||
> = {
|
||||
low: {
|
||||
trackpadSensitivity: 2.0,
|
||||
mouseSensitivity: 3.0,
|
||||
clampMin: -6,
|
||||
clampMax: 6,
|
||||
blockDelay: 30,
|
||||
trackpadThreshold: 10,
|
||||
},
|
||||
default: {
|
||||
trackpadSensitivity: 3.0,
|
||||
mouseSensitivity: 5.0,
|
||||
clampMin: -8,
|
||||
clampMax: 8,
|
||||
blockDelay: 25,
|
||||
trackpadThreshold: 10,
|
||||
},
|
||||
high: {
|
||||
trackpadSensitivity: 4.0,
|
||||
mouseSensitivity: 6.0,
|
||||
clampMin: -9,
|
||||
clampMax: 9,
|
||||
blockDelay: 20,
|
||||
trackpadThreshold: 10,
|
||||
},
|
||||
};
|
||||
|
||||
const settings = wheelSettings[sensitivity];
|
||||
|
||||
return set({
|
||||
trackpadSensitivity: settings.trackpadSensitivity,
|
||||
trackpadThreshold: settings.trackpadThreshold,
|
||||
mouseSensitivity: settings.mouseSensitivity,
|
||||
clampMin: settings.clampMin,
|
||||
clampMax: settings.clampMax,
|
||||
blockDelay: settings.blockDelay,
|
||||
scrollSensitivity: sensitivity,
|
||||
});
|
||||
},
|
||||
}));
|
||||
|
||||
export interface RemoteVirtualMediaState {
|
||||
source: "WebRTC" | "HTTP" | "Storage" | null;
|
||||
mode: "CDROM" | "Disk" | null;
|
||||
|
||||
Reference in New Issue
Block a user