本页还没有译文
本页 21 段还没译成한국어,下面显示的是英文原文。Quick Start
还没翻译译自英文(tanstack.com)本页 21 段都还没译
Installation
Don't have TanStack Hotkeys installed yet? See the Installation page for instructions.
Your first hotkey
Use createHotkey for global shortcuts and attachments for element-scoped shortcuts.
<script lang="ts">
import { createHotkey } from '@tanstack/svelte-hotkeys'
createHotkey('Mod+S', () => {
saveDocument()
})
</script>
<div>Press Cmd+S (Mac) or Ctrl+S (Windows) to save</div>The Mod modifier automatically resolves to Meta (Command) on macOS and Control on Windows/Linux, so your shortcuts work across platforms without extra logic.
Common patterns
Multiple global hotkeys
<script lang="ts">
import { createHotkey } from '@tanstack/svelte-hotkeys'
createHotkey('Mod+S', () => save())
createHotkey('Mod+Z', () => undo())
createHotkey('Mod+Shift+Z', () => redo())
createHotkey('Mod+F', () => openSearch())
createHotkey('Escape', () => closeDialog())
</script>Scoped hotkeys with attachments
<script lang="ts">
import { createHotkeyAttachment } from '@tanstack/svelte-hotkeys'
const closePanel = createHotkeyAttachment('Escape', () => {
close()
})
</script>
<div tabindex="0" {@attach closePanel}>
<p>Press Escape while focused here to close</p>
</div>
Reactive options
<script lang="ts">
import { createHotkey } from '@tanstack/svelte-hotkeys'
let isOpen = $state(true)
createHotkey(
'Escape',
() => {
isOpen = false
},
() => ({ enabled: isOpen }),
)
</script>Scoped sequences
<script lang="ts">
import { createHotkeySequenceAttachment } from '@tanstack/svelte-hotkeys'
const vimKeys = createHotkeySequenceAttachment(['G', 'G'], () => {
scrollToTop()
})
</script>
<div tabindex="0" {@attach vimKeys}>
Focus here, then press g then g
</div>
Tracking held keys
<script lang="ts">
import { getHeldKeys, getIsKeyHeld } from '@tanstack/svelte-hotkeys'
const heldKeys = getHeldKeys()
const isShiftHeld = getIsKeyHeld('Shift')
</script>
<div class="status-bar">
{#if isShiftHeld.held}<span>Shift mode active</span>{/if}
{#if heldKeys.keys.length > 0}
<span>Keys: {heldKeys.keys.join('+')}</span>
{/if}
</div>
Recording shortcuts
<script lang="ts">
import {
createHotkeyRecorder,
formatForDisplay,
} from '@tanstack/svelte-hotkeys'
const recorder = createHotkeyRecorder({
onRecord: (hotkey) => {
console.log('Recorded:', hotkey)
},
})
</script>
<button onclick={recorder.startRecording}>
{recorder.recordedHotkey
? formatForDisplay(recorder.recordedHotkey)
: 'Click to record'}
</button>Displaying hotkeys in the UI
<script lang="ts">
import { formatForDisplay, createHotkey } from '@tanstack/svelte-hotkeys'
createHotkey('Mod+S', () => save())
</script>
<button>
Save <kbd>{formatForDisplay('Mod+S')}</kbd>
</button>Default options
Use setHotkeysContext when you want defaults for a subtree. This is an advanced API and usually belongs near the root of the part of the app that owns the hotkeys.
<script lang="ts">
import { setHotkeysContext } from '@tanstack/svelte-hotkeys'
setHotkeysContext({
hotkey: { preventDefault: true },
hotkeySequence: { timeout: 1500 },
})
</script>Next steps
- Hotkeys Guide
- Sequences Guide
- Hotkey Recording Guide
- Sequence Recording Guide
- Key State Tracking Guide
- Formatting & Display Guide
Devtools
Install the optional devtools packages to inspect registrations, held keys, and trigger counts:
npm install @tanstack/svelte-devtools @tanstack/svelte-hotkeys-devtoolsFollow the devtools setup guide to add the dock to your application.
AI 翻译查看英文原文