Configure controls
mod means Command on macOS and Control on other platforms. Set a binding to
null to disable it. PHP bindings are authoritative: their controls are locked in
Theme Settings. Unlocked preferences can be recorded, cleared or reset there.
Table bindings are
row_next, row_previous, row_open, row_select,
page_select, page_previous, page_next and filters. They use the current
native table and its rendered page of records. They do not fetch a separate copy
of all database records. Inputs and native popups keep their own keyboard behavior.
Select page uses Command + A on macOS and Control + A on Windows/Linux.
Pressing it again keeps the page selected. In text fields, the same keys retain
native text selection. Use the table’s native deselection control to clear records.
Each shortcut must be unique across the configured actions, including actions in
different contexts. Equivalent Control/Command bindings are checked for both
platforms. Conflicts are rejected in the recorder and when saving configuration.
While recording, Backspace and Delete assign those keys; use the remove button
to clear a binding. Escape cancels recording and Tab moves to the next control.
Contextual help
Declare navigation on a Resource or Page
A destination can declare its own sequence. No extra registration, base class or trait is needed:$keyboardShortcut and public static method
getKeyboardShortcut() are also supported. These describe consecutive navigation
keys, not a global single-key command. To assign a simultaneous combination, use
a custom command or a native Action binding below.
Panel navigationSequences() overrides take precedence over class declarations.
Within a class, getNavigationShortcut() takes precedence over
$navigationShortcut, then getKeyboardShortcut(), then $keyboardShortcut.
Inherited declarations work. Use null for automatic assignment or false to
exclude a destination from keyboard navigation. Methods must be public/static;
properties must be static. Sequences contain one to three letters or digits,
case-insensitively. Duplicate explicit sequences produce an exception naming both
destinations; automatically assigned entries avoid occupied sequences.
Declarations are resolved on the server only for entries already present in the
current authorized navigation. Hidden destinations are not added by declaring a
shortcut. Help, navigation hints and SPA navigation use the same resolved catalog.
When one sequence is a prefix of another, the short destination waits for the
sequence timeout so the longer sequence remains reachable.
Native Action bindings
Keep native Filament actions and their authorization/confirmation behavior:Custom commands
A command can open an HTTP/application URL or dispatch a Livewire event:Independent switches
tableNavigation(false)disables table enhancements.navigationSequences(false)disables sequence navigation.settings(false)hides the Keyboard settings tab.FlexThemePlugin::shortcuts(false)disables the keyboard enhancement.search(false)restores native search without disabling independent keyboard controls or recovery.
All built-in bindings
These are the package defaults, before saved preferences and PHP overrides. The editor stores one primary binding per action;bindings() can enforce up
to four alternatives in PHP.
Global search, sidebar, theme and undo combinations require a modifier or
function key. Context-local table/navigation keys can be plain keys. Bindings
accept letters, digits, the supported punctuation keys, F1–F24, arrows,
Enter/Space/Backspace/Delete/Home/End/PageUp/PageDown and modifiers
mod, ctrl, meta, alt, shift. Escape and Tab remain reserved for native
interaction. Input strings are normalized; aliases such as cmd, command,
control, return, esc and period map to their canonical names.
Record, clear and reset in the editor
Click a recorder in Theme Settings → Keyboard, then press the desired combination. The platform preview changes displayed keycaps, not the physical meaning ofmod. A conflict is rejected both during recording/save and in PHP configuration.
Backspace/Delete record those keys; use the explicit remove control to clear a
binding. Escape cancels capture; Tab moves on. Save to persist changes panel-wide.
Reset tab restores the unlocked shortcut draft to defaults; it does not save.
ShortcutConfiguration reference
Command::make($id) accepts stable lowercase IDs of 1–80 characters using
letters, digits, underscore, dot and hyphen, starting with a letter.
label()/group() accept strings or closures; visible() accepts a boolean or
closure. keys() accepts up to four global combinations. url($url, newTab: true)
supports HTTP(S) or absolute application paths; dispatch($event, $payload)
supports a valid event name up to 100 characters and a JSON payload up to 4096
bytes. Each command needs a destination. Duplicate IDs and conflicting keys fail.
Configure each panel with its own instance. Commands and navigation entries are
resolved from that panel’s authorized configuration. No shortcut grants access
to a resource, another panel or a tenant that the user cannot ordinarily access.