Vencord plugin for the Discord desktop app. Toggles fire on key press, push-to-talk infers releases GNOME drops (re-registration probe), and GNOME's trigger descriptions are matched correctly. Includes basis-path tests, a patch checker against the live Discord bundle, the design spec and the README assets.
45 lines
8.8 KiB
XML
45 lines
8.8 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="580" viewBox="0 0 1200 580" role="img" aria-labelledby="ptitle pdesc">
|
|
<title id="ptitle">What one key press looks like on GNOME</title>
|
|
<desc id="pdesc">Timeline of one Ctrl+Shift+F10 hold where Ctrl+Shift are let go first. GNOME sends a press, then key repeats every 30 ms after 500 ms, and never a release. Discord alone acts on the release, so the toggle never fires and its next press is ignored. With WaylandKeybinds the mute toggles on the press; every 300 ms the plugin re-registers the shortcut and listens for repeats, and silence means the key was released.</desc>
|
|
<rect width="1200" height="580" rx="24" fill="#0E0F12"/>
|
|
|
|
<text x="64" y="84" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', sans-serif" font-size="40" font-weight="700" fill="#F2EFE9">What one key press looks like on GNOME</text>
|
|
<text x="64" y="122" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">Ctrl+Shift+F10 held · Ctrl+Shift let go first · GNOME 50 key repeat: 500 ms, then every 30 ms</text>
|
|
|
|
<line x1="934" y1="156" x2="934" y2="500" stroke="#FF7A6B" stroke-width="2" stroke-dasharray="5 6" opacity="0.7"/>
|
|
<text x="934" y="170" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#FF7A6B">keys let go</text>
|
|
|
|
<g id="lane-gnome">
|
|
<text x="64" y="228" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', sans-serif" font-size="22" fill="#F2EFE9">GNOME sends</text><text x="64" y="254" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">press, repeats</text>
|
|
<line x1="340" y1="230" x2="1136" y2="230" stroke="#2A2D34" stroke-width="2"/>
|
|
<circle cx="340" cy="230" r="9" fill="#7BD88F"/>
|
|
<line x1="505" y1="220" x2="505" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="515" y1="220" x2="515" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="525" y1="220" x2="525" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="535" y1="220" x2="535" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="545" y1="220" x2="545" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="554" y1="220" x2="554" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="564" y1="220" x2="564" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="574" y1="220" x2="574" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="584" y1="220" x2="584" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="594" y1="220" x2="594" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="604" y1="220" x2="604" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="614" y1="220" x2="614" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="624" y1="220" x2="624" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="634" y1="220" x2="634" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="644" y1="220" x2="644" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="654" y1="220" x2="654" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="663" y1="220" x2="663" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="673" y1="220" x2="673" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="683" y1="220" x2="683" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="693" y1="220" x2="693" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="703" y1="220" x2="703" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="713" y1="220" x2="713" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="723" y1="220" x2="723" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="733" y1="220" x2="733" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="743" y1="220" x2="743" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="752" y1="220" x2="752" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="762" y1="220" x2="762" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="772" y1="220" x2="772" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="782" y1="220" x2="782" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="792" y1="220" x2="792" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="802" y1="220" x2="802" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="812" y1="220" x2="812" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="822" y1="220" x2="822" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="832" y1="220" x2="832" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="842" y1="220" x2="842" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="852" y1="220" x2="852" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="861" y1="220" x2="861" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="871" y1="220" x2="871" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="881" y1="220" x2="881" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="891" y1="220" x2="891" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="901" y1="220" x2="901" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="911" y1="220" x2="911" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="921" y1="220" x2="921" y2="240" stroke="#8B9099" stroke-width="2"/><line x1="931" y1="220" x2="931" y2="240" stroke="#8B9099" stroke-width="2"/>
|
|
<path d="M1006 220 L1026 240 M1026 220 L1006 240" stroke="#FF7A6B" stroke-width="3" stroke-linecap="round"/>
|
|
<text x="1136" y="270" text-anchor="end" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#FF7A6B">no release</text>
|
|
</g>
|
|
|
|
<line x1="64" y1="300" x2="1136" y2="300" stroke="#2A2D34" stroke-width="1"/>
|
|
|
|
<g id="lane-discord">
|
|
<text x="64" y="344" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', sans-serif" font-size="22" fill="#F2EFE9">Discord alone</text><text x="64" y="370" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">acts on release</text>
|
|
<circle cx="340" cy="338" r="8" fill="none" stroke="#8B9099" stroke-width="2"/>
|
|
<text x="364" y="345" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="20" fill="#FF7A6B">toggle waits for the release: never fires</text>
|
|
<text x="364" y="375" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="20" fill="#FF7A6B">and the next press is ignored</text>
|
|
</g>
|
|
|
|
<line x1="64" y1="400" x2="1136" y2="400" stroke="#2A2D34" stroke-width="1"/>
|
|
|
|
<g id="lane-plugin">
|
|
<text x="64" y="444" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', sans-serif" font-size="22" font-weight="700" fill="#F2EFE9">+ WaylandKeybinds</text><text x="64" y="470" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">acts on press</text>
|
|
<circle cx="340" cy="430" r="9" fill="#7BD88F"/>
|
|
<text x="362" y="437" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="20" fill="#7BD88F">toggled</text>
|
|
<rect x="664" y="424" width="12" height="12" rx="2" fill="none" stroke="#7BD88F" stroke-width="2"/><rect x="763" y="424" width="12" height="12" rx="2" fill="none" stroke="#7BD88F" stroke-width="2"/><rect x="862" y="424" width="12" height="12" rx="2" fill="none" stroke="#7BD88F" stroke-width="2"/><rect x="961" y="424" width="12" height="12" rx="2" fill="none" stroke="#7BD88F" stroke-width="2"/>
|
|
<text x="664" y="472" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">re-arms every 300 ms</text>
|
|
<line x1="1066" y1="420" x2="1066" y2="440" stroke="#7BD88F" stroke-width="3" stroke-linecap="round"/>
|
|
<text x="1136" y="472" text-anchor="end" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="20" fill="#7BD88F">silence = released</text>
|
|
</g>
|
|
|
|
<line x1="340" y1="511" x2="1136" y2="511" stroke="#2A2D34" stroke-width="2"/>
|
|
<line x1="340" y1="506" x2="340" y2="516" stroke="#8B9099" stroke-width="2"/><text x="340" y="540" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">0</text><line x1="505" y1="506" x2="505" y2="516" stroke="#8B9099" stroke-width="2"/><text x="505" y="540" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">0.5 s</text><line x1="670" y1="506" x2="670" y2="516" stroke="#8B9099" stroke-width="2"/><text x="670" y="540" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">1 s</text><line x1="934" y1="506" x2="934" y2="516" stroke="#8B9099" stroke-width="2"/><text x="934" y="540" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">1.8 s</text><line x1="1066" y1="506" x2="1066" y2="516" stroke="#8B9099" stroke-width="2"/><text x="1066" y="540" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="18" fill="#8B9099">2.2 s</text>
|
|
</svg>
|