Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions src/device/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,8 @@
import { teevolutionProfileForCid } from "@openmouse/protocol/teevolution";
import { VgnF2HidClient } from "@openmouse/protocol/drivers/vgn/hid";
import { KeychronNapeHidClient } from "@openmouse/protocol/drivers/keychron/nape-hid";
import { KeychronM6HidClient } from "@openmouse/protocol/drivers/keychron/m6-hid";
import { Keychron8kHidClient } from "@openmouse/protocol/drivers/keychron/mouse-8k-hid";

Check failure on line 139 in src/device/controller.ts

View workflow job for this annotation

GitHub Actions / check

Cannot find module '@openmouse/protocol/drivers/keychron/mouse-8k-hid' or its corresponding type declarations.
import { Keychron1kHidClient } from "@openmouse/protocol/drivers/keychron/mouse-1k-hid";

Check failure on line 140 in src/device/controller.ts

View workflow job for this annotation

GitHub Actions / check

Cannot find module '@openmouse/protocol/drivers/keychron/mouse-1k-hid' or its corresponding type declarations.
import { Keychron4kHidClient } from "@openmouse/protocol/drivers/keychron/mouse-4k-hid";
import type { GloriousLighting } from "@openmouse/protocol/glorious";
import { GloriousHidClient } from "@openmouse/protocol/drivers/glorious/hid";
Expand Down Expand Up @@ -243,7 +244,7 @@

const DM_CLASSES = [WLMouseHidClient, LamzuHidClient, LamzuAtlantisHidClient, AtkHidClient, AtkBitmouseHidClient, NinjutsoHidClient] as const;
const RAZER_CLASSES = [RazerHidClient, RazerViperMiniHidClient, RazerViperHidClient, RazerCobraHidClient] as const;
const NEEDS_OPEN = [LamzuAtlantisHidClient, TeevolutionHidClient, VgnF2HidClient, KeychronNapeHidClient, KeychronM6HidClient, WLMouseBeastX4kHidClient, ModdoHidClient, ZaunkoenigHidClient, CorsairHidClient, FantechHidClient, WallhackMouseHidClient, WallhackKeyboardHidClient, GloriousHidClient, GloriousClassicHidClient, MchoseHidClient, MchoseDockHidClient, MchoseA5ProMaxHidClient, MchoseV3HidClient, MicrosoftHidClient, DareuHidClient, IncottHidClient, BytechHidClient] as const;
const NEEDS_OPEN = [LamzuAtlantisHidClient, TeevolutionHidClient, VgnF2HidClient, KeychronNapeHidClient, Keychron8kHidClient, Keychron1kHidClient, WLMouseBeastX4kHidClient, ModdoHidClient, ZaunkoenigHidClient, CorsairHidClient, FantechHidClient, WallhackMouseHidClient, WallhackKeyboardHidClient, GloriousHidClient, GloriousClassicHidClient, MchoseHidClient, MchoseDockHidClient, MchoseA5ProMaxHidClient, MchoseV3HidClient, MicrosoftHidClient, DareuHidClient, IncottHidClient, BytechHidClient] as const;
const PULSAR_CLASSES = [PulsarHidClient, PulsarProHidClient, PulsarXs1HidClient] as const;

const logitechClient = (): LogitechHidppClient | null => activeAs(LogitechHidppClient);
Expand All @@ -263,7 +264,8 @@
const orbitalClient = (): OrbitalHidClient | null => activeAs(OrbitalHidClient);
const vgnClient = (): VgnF2HidClient | null => activeAs(VgnF2HidClient);
const keychronNapeClient = (): KeychronNapeHidClient | null => activeAs(KeychronNapeHidClient);
const keychronM6Client = (): KeychronM6HidClient | null => activeAs(KeychronM6HidClient);
const keychron8kClient = (): Keychron8kHidClient | null => activeAs(Keychron8kHidClient);
const keychron1kClient = (): Keychron1kHidClient | null => activeAs(Keychron1kHidClient);
const keychron4kClient = (): Keychron4kHidClient | null => activeAs(Keychron4kHidClient);
const wlmouse4kClient = (): WLMouseBeastX4kHidClient | null => activeAs(WLMouseBeastX4kHidClient);
const wallhackMouseClient = (): WallhackMouseHidClient | null => activeAs(WallhackMouseHidClient);
Expand Down Expand Up @@ -3856,7 +3858,7 @@
: (activeSettingsClient() && "setDebounceTime" in (activeSettingsClient() ?? {}))
? activeSettingsClient()
: pulsarClient() ?? dmClient() ?? orbitalClient() ?? razerClient()
?? viperClient() ?? teevolutionClient() ?? vgnClient() ?? keychronNapeClient() ?? keychronM6Client() ?? keychron4kClient() ?? wallhackMouseClient()
?? viperClient() ?? teevolutionClient() ?? vgnClient() ?? keychronNapeClient() ?? keychron8kClient() ?? keychron1kClient() ?? keychron4kClient() ?? wallhackMouseClient()
?? incottClient() ?? wlmouse4kClient();
if (!client || (setting === "sleep" && !("setSleepTimeout" in client)) || (setting === "debounce" && !("setDebounceTime" in client))) return;
const asleep = value !== WLMOUSE_SLEEP_NEVER;
Expand Down
9 changes: 6 additions & 3 deletions src/device/traits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,12 @@ const BY_FAMILY: Readonly<Record<string, Partial<DriverTraits>>> = {
"atk-bitmouse": DIRECT_MODE,
ninjutso: { ...DIRECT_MODE, ninjutso: true },
"keychron-nape": { advancedSection: true, sleep: true, directMode: true },
// The M6 reads debounce and sleep from its 0x06 status report and publishes
// its own option lists, so it takes the plain flags rather than DIRECT_MODE.
"keychron-m6": { advancedSection: true, sleep: true, debounce: true },
// Launcher's "8k" family (the M6 and most Keychron mice) reads debounce and
// sleep from its 0x06 status report and publishes its own option lists, so
// it takes the plain flags rather than DIRECT_MODE.
"keychron-8k": { advancedSection: true, sleep: true, debounce: true },
// Launcher's "1k" protocol has no sleep command, so only debounce.
"keychron-1k": { advancedSection: true, debounce: true },
// Launcher offers no sleep setting for the 4K family, so only debounce.
"keychron-4k": { advancedSection: true, debounce: true },
// The Beast X 4K skips the compx transport the rest of WLMouse uses and
Expand Down
Loading