Add files via upload

This commit is contained in:
RyfterWasTaken 2025-01-30 15:12:27 +01:00 committed by GitHub
parent c22ac15cc1
commit 7adac6b450
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 163 additions and 0 deletions

View file

@ -0,0 +1,80 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2025 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import "./styles.css";
import { Text, TextInput, useState } from "@webpack/common";
import { keybinds } from "./keybinds";
import { CheckboxRow, cl } from "./utils";
function keybindStr(key, ctrl, shift, alt) {
return (ctrl ? "Ctrl+" : "") + (shift ? "Shift+" : "") + (alt ? "Alt+" : "") + key;
}
function KeybindDetector({ keybindSettings: k }) {
const [listening, setListening] = useState(false);
if (!listening)
return (
<div onClick={() => setListening(true)}>
<TextInput editable={false} value={keybindStr(k.key, k.ctrl, k.shift, k.alt)} />
</div >
);
return (
<div>
<TextInput placeholder="Press a key combination" value="" className={cl("keybind-input")} onKeyDown={e => {
e.preventDefault();
e.stopPropagation();
if (e.key === "Escape") {
setListening(false);
return;
}
if (e.key === "Control" || e.key === "Shift" || e.key === "Alt") {
return;
}
k.key = e.key.toUpperCase();
k.ctrl = e.ctrlKey;
k.shift = e.shiftKey;
k.alt = e.altKey;
setListening(false);
}} />
</div>
);
}
function KeybindSettings({ keybind, settings }) {
const keybindData = keybinds[keybind];
const keybindSettings = settings.store[keybind];
return (
<div className={cl("settings-row")}>
<CheckboxRow value={keybindSettings.enabled} onChange={_ => keybindSettings.enabled = !keybindSettings.enabled}>
<div className={cl("settings-row-content")}>
<div >
<Text variant="eyebrow">{keybindData.name}</Text>
<Text variant="text-sm/normal">{keybindData.desc}</Text>
</div>
<KeybindDetector keybindSettings={keybindSettings} />
</div>
</CheckboxRow>
</div>
);
}
export function SettingsView({ settings }) {
return (
<div>
{Object.keys(keybinds).map(keybind => {
return <KeybindSettings keybind={keybind} settings={settings} key={keybind} />;
})}
</div>
);
}

View file

@ -0,0 +1,58 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2025 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { relaunch } from "@utils/native";
export const keybinds: { [key: string]: any; } = {
debuggerPause: {
name: "Debugger Pause",
desc: "Pauses the client in using the debugger",
default: {
enabled: false,
key: "F8",
ctrl: false,
alt: false,
shift: false,
},
action: () => {
// Hi! You've just paused the client. Pressing F8 in DevTools or in the main window will unpause it again.
// It's up to you on what to do, friend. Happy travels!
debugger;
},
},
inboxJump: {
name: "Inbox Jump",
desc: "Adds a keybind for the jump button in the inbox",
default: {
enabled: false,
key: ";",
ctrl: true,
alt: false,
shift: false
},
action: () => {
const btn = document.querySelector(
"div[class^=jumpButton]",
);
if (btn) btn?.click();
console.log("Executed");
}
},
restart: {
name: "Restart",
desc: "Restarts your discord client",
default: {
enabled: false,
key: "R",
ctrl: true,
shift: true,
alt: false,
},
action: () => {
relaunch();
}
}
};

View file

@ -0,0 +1,12 @@
.vc-keybinds-settings-row {
padding: 3px;
}
.vc-keybinds-settings-row-content {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 100%;
height: 100%;
}

View file

@ -0,0 +1,13 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2025 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { classNameFactory } from "@api/Styles";
import { findComponentByCodeLazy } from "@webpack";
export const cl = classNameFactory("vc-keybinds-");
export const CheckboxRow = findComponentByCodeLazy(".labelReversed");