# django-admin-keyshortcuts A Django package that adds keyboard shortcuts to the Django Admin interface for improved accessibility. ## Demo A static preview of Django Admin with Keyboard Shortcuts is available at: https://khanxmetu.github.io/django-admin-keyshortcuts-demo/ Try it out and then provide feedback on the forum thread: [Feedback: django admin keyboard shortcuts](https://forum.djangoproject.com/t/feedback-django-admin-keyboard-shortcuts/42783) ## Setup Install from pip: `pip install django-admin-keyshortcuts` then add `django_admin_keyshortcuts` before `django.contrib.admin` in your `INSTALLED_APPS`: ``` INSTALLED_APPS = ( ..., 'django_admin_keyshortcuts', 'django.contrib.admin', ..., ) ``` ## Usage The following is a list of supported shortcuts | Description | Shortcut (Windows/Linux) | Shortcut (MacOS) | Scope | |--------------------------------|--------------------|------------------|---------------------| | Show shortcuts help dialog | ? | ? | Global | | Go to the site index | g i | g i | Global | | Toggle sidebar | [ | [ | Global (where it exists) | | Select previous row for action | k | k | Change List | | Select next row for action | j | j | Change List | | Toggle row selection | x | x | Change List | | Focus actions dropdown | a | a | Change List | | Focus search field | / | / | Change List | | Save and go to change list | Ctrl+s | ⌘+s | Change Form | | Save and add another | Ctrl+Shift+S | ⌘+Shift+S | Change Form | | Save and continue editing | Ctrl+Alt+s | ⌘+⌥+s | Change Form | | Delete | Alt+d | ⌥+d | Change Form | | Confirm deletion | Alt+y | ⌥+y | Delete Confirmation | | Cancel deletion | Alt+n | ⌥+n | Delete Confirmation | ## Adding Custom Shortcuts This package uses the [GitHub Hotkey](https://github.com/github/hotkey) library for handling shortcuts. You can add new ones by extending templates: 1. In the admin template, locate the element you want triggered by the shortcut. 2. Extend the template and add data-hotkey attribute to the target element, e.g. `data-hotkey="Mod+s"`. See [hotkey string format](https://github.com/github/hotkey?tab=readme-ov-file#hotkey-string-format) for supported modifier and key combinations. 3. Document the shortcut in the help dialog. **View-specific (per page) shortcuts:** Extend `change_list_shortcuts`, `change_form_shortcuts`, or `delete_confirmation_shortcuts`. Example: ```html {% extends "admin/change_list_shortcuts.html" %} {% load shortcuts %} {% block extra_shortcuts %} {{ block.super }}

Custom Shortcuts

A Custom Shortcut
{% shortcut_format_kbd "Mod+s" %}
{% endblock %} ``` **Global shortcuts:** Example: ```html {% extends "admin/shortcuts.html" %} {% load shortcuts %} {% block global_shortcuts %} {{ block.super }}

Custom Shortcuts

A Custom Shortcut
{% shortcut_format_kbd "Mod+S" %}
{% endblock %} ``` > **Tip:** Use the Mod key (⌘ on macOS, Ctrl on Windows/Linux). It ensures shortcuts are OS-independent and automatically map to the correct key per platform. ## About The **django-admin-keyshortcuts** package is being developed with the goal of eventually merging its functionality into Django core. This package has been undergoing refinements with respect to [GSoC 2025: Keyboard Shortcuts Specification](https://docs.google.com/document/d/1sFyl53B4IPWpYX7Q0vJYaNiCaJbe3Ym3_m1Dgk_gmr8/)