Skip to content

Support for keyboard layouts. #17378

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft

Support for keyboard layouts. #17378

wants to merge 5 commits into from

Conversation

vidartf
Copy link
Member

@vidartf vidartf commented Mar 9, 2025

References

Fixes #17355.

Resolves #7579.

Code changes

Adds a new plugin in the shortcuts-extension package. Relies on the WIP lumino branch in this PR jupyterlab/lumino#291 .

User-facing changes

  • A new section is available in the settings editor for picking the keyboard layout.
  • Users can pick from pre-defined keymaps in the settings editor.
  • Users can capture their own keyboard mapping by a separate input widget in the settings dialog.
  • Users can now define shortcuts based on non-US keyboards. I.e. if I add a shortcut for my æ key, it will only trigger if I push a button that produces that character (e.g. I have a Norwegian keyboard and press the code=Quote button, or if I have a Danish keyboard and press the code=Semicolon button). Non-QWERTY can also be configured (AZERTY, Dvorak, etc).

Backwards-incompatible changes

Not sure if it qualifies as backwards-incompatible, but the shortcut-extension package will require a dependency on an as-yet unreleased feature in the Lumino "keyboard" package.

vidartf added 4 commits March 9, 2025 15:50
RJSF has support for field and widget renderers, and so does
the editor registry, but we don't currently pass them from one
to the other in the settings form. This bridges that gap.
This caused setting with undefined defaults to not be saved.
Some form controls can benefit from taking advantage of all
the space available, so make sure they can.
Initial implementation of keyboard layout support.
Based on a WIP branch in lumino, so will likely be unstable
until that is approved and released (if it will).
Copy link

Thanks for making a pull request to jupyterlab!
To try out this branch on binder, follow this link: Binder

@vidartf
Copy link
Member Author

vidartf commented Mar 9, 2025

Note: currently I've also added support for this experimental Web API for demonstration purposes, but the feature does not rely on that. It only makes things more convenient in browsers that support it.

@vidartf vidartf added enhancement tag:Settings feature javascript Pull requests that update Javascript code tag:Keyboard Compatibility issues with keyboards, including locale-specific and layout-specific issues labels Mar 12, 2025
@krassowski krassowski added this to the 4.5.0 milestone Mar 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Design System CSS enhancement feature javascript Pull requests that update Javascript code pkg:settingeditor pkg:settingregistry pkg:shortcuts pkg:ui-components tag:CSS For general CSS related issues and pecadilloes tag:Keyboard Compatibility issues with keyboards, including locale-specific and layout-specific issues tag:Settings
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Setting without a default doesn't save in form editor Support non-US keyboard layouts
2 participants