Skip to content
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

[Epic] Keyboard navigation #3219

Open
4 of 8 tasks
kakone opened this issue May 23, 2020 · 3 comments
Open
4 of 8 tasks

[Epic] Keyboard navigation #3219

kakone opened this issue May 23, 2020 · 3 comments
Assignees
Labels
difficulty/challenging 🤯 Categorizes an issue for which the difficulty level is reachable with internals understanding epic kind/enhancement New feature or request platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform project/input ⌨️ Categorizes an issue or PR as relevant to input (Button, CheckBox, Toggle, Scroll, Map, Numeric,...)

Comments

@kakone
Copy link
Contributor

kakone commented May 23, 2020

What would you like to be added:

The ability to navigate with arrow keys of a physical keyboard, or with a remote control (on Android TV for example) on listview, dropdownlist, menuflyout, ...

Why is this needed:

We can't develop Android TV app with Uno without this.
And in WASM, to fill data forms when we can't navigate with the keyboard on dropdownlist, listview, ..., it's very complicated.

Notes

Resources

Child issues

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renderers for Xamarin.Forms
  • macOS
  • Windows
  • Build tasks
  • Solution Templates

Anything else we need to know?

Thanks for your work on Uno! 😃

@kakone kakone added kind/enhancement New feature or request triage/untriaged Indicates an issue requires triaging or verification labels May 23, 2020
@MartinZikmund
Copy link
Member

The key prerequisite for implementing this feature is #3093 - focus visuals are a system feature that draws the "highlight" rectangle around the controls. I have noticed these are likely drawn independently of the visual tree - if control is hidden behind a solid background border (is invisible), its focus visual is still drawn. However, controls can also provide their own implementation of focus visuals, which can be used instead of the system ones as part of their template.

@MartinZikmund MartinZikmund added platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform and removed triage/untriaged Indicates an issue requires triaging or verification labels May 23, 2020
@carldebilly carldebilly added this to the 3.1 milestone Aug 31, 2020
@francoistanguay francoistanguay removed this from the 3.1 milestone Sep 13, 2020
@agneszitte agneszitte added the project/input ⌨️ Categorizes an issue or PR as relevant to input (Button, CheckBox, Toggle, Scroll, Map, Numeric,...) label Sep 21, 2020
@jeromelaban jeromelaban added the difficulty/tbd Categorizes an issue for which the difficulty level needs to be defined. label Feb 15, 2021
@MartinZikmund MartinZikmund added difficulty/challenging 🤯 Categorizes an issue for which the difficulty level is reachable with internals understanding epic and removed difficulty/tbd Categorizes an issue for which the difficulty level needs to be defined. labels Apr 12, 2021
@MartinZikmund MartinZikmund self-assigned this Apr 12, 2021
@MartinZikmund MartinZikmund added this to the 3.7 milestone Apr 12, 2021
@MartinZikmund
Copy link
Member

MartinZikmund commented Apr 12, 2021

TabNavigation property

<StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Local" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Local" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
</StackPanel>

Local - Local
LocalLocal~2

<StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Cycle" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Local" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
</StackPanel>

Cycle - Local
CycleLocal

<StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Once" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
    <StackPanel Padding="20" TabFocusNavigation="Local" Spacing="20">
        <Button Content="A" />
        <Button Content="B" />
        <Button Content="C" />
    </StackPanel>
</StackPanel>

Once - Local (Blue = Shift + Tab)
OnceLocal

Further examples here - https://docs.microsoft.com/en-us/windows/uwp/design/input/focus-navigation

Learn how to use focus navigation to provide comprehensive and consistent interaction experiences in your Windows apps and custom controls for keyboard power users, those with disabilities and other accessibility requirements, as well as the 10-foot experience of television screens and the Xbox One.

@MartinZikmund MartinZikmund changed the title Keyboard navigation [Epic] Keyboard navigation Apr 12, 2021
@MartinZikmund
Copy link
Member

MartinZikmund commented Apr 19, 2021

WASM: https://github.com/amanboss9/naviboard/blob/master/lib/naviboard.js

GitHub
A javascript library for handling navigation on web application and feature phone applications. - amanboss9/naviboard

@MartinZikmund MartinZikmund modified the milestones: 3.7, 3.8 Apr 21, 2021
@MartinZikmund MartinZikmund modified the milestones: 3.8, 3.9 Jun 7, 2021
@MartinZikmund MartinZikmund removed this from the 3.9 milestone Jul 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty/challenging 🤯 Categorizes an issue for which the difficulty level is reachable with internals understanding epic kind/enhancement New feature or request platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform project/input ⌨️ Categorizes an issue or PR as relevant to input (Button, CheckBox, Toggle, Scroll, Map, Numeric,...)
Projects
None yet
Development

No branches or pull requests

6 participants