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

Non visual board UI #28

Open
veloce opened this issue Jan 10, 2023 · 3 comments · May be fixed by #31
Open

Non visual board UI #28

veloce opened this issue Jan 10, 2023 · 3 comments · May be fixed by #31
Labels
cat: accessibility feature New feature help wanted Extra attention is needed
Milestone

Comments

@veloce
Copy link
Contributor

veloce commented Jan 10, 2023

A non visual board

To allow blind people to move pieces on a chessboard.

This feature is not that easy to do right. That's why we should start simple and improve later. If you know the subject, or are interested by it I'd be glad to get help. Come and join on discord to discuss it!

Implementation notes

Ideally, this should be done by a widget which should replace automatically GameBoardLayout if navigation by screen reader is detected in the current context.

final mediaQueryData = MediaQuery.of(context);
...   
 if (mediaQueryData.accessibleNavigation) {
      return NonVisualBoard(...);
    } else {
      return GameBoardLayout(...);
    }

Here's lichess.org implementation as a reference:

List of commands that we should eventually support (not in the scope of this issue), for reference:

// play move should support SAN or UCI notation
// Example: e4, or e2 e4

// these commands are on lichess website
c: Read clocks.
l: Read last move.
o: Read name and rating of the opponent.
p: Read locations of a piece type. Example: p N, p k.
s: Read pieces on a rank or file. Example: s a, s 1.
abort: Abort game.
resign: Resign game.
draw: Offer or accept draw.
takeback: Offer or accept take back.

// extra commands needed for mobile since it does not have the virtual board
m: read possible moves for selected piece. Example: m e4
@veloce veloce added help wanted Extra attention is needed feature New feature labels Jan 10, 2023
@370417
Copy link

370417 commented Jan 11, 2023

I'm interested! Will say more on discord.

@370417 370417 linked a pull request Jan 18, 2023 that will close this issue
@veloce veloce added this to the Launch milestone Jan 3, 2024
@370417
Copy link

370417 commented Jan 9, 2024

Tentative plan for non-visual board:
Mimic a 2d physical board. Dragging over squares reads out the coordinate and any piece on the square. Releasing the finger over a square selects it. This is intended to match how dragging selects elements normally (https://blog.gskinner.com/archives/2022/09/flutter-crafting-a-great-experience-for-screen-readers.html).
Once a square is selected, drag again to select a second square. As you drag, the app will read out what that move would be, eg rook a2, rook a3, rook takes a4, rook a5. Once the second square is selected, the move is made or reported as invalid.

Normally a one finger swipe can go to the previous or next element. Ideally we should not block that behavior with the drag behavior.
Also will need a way to cancel the initial selection. Probably dragging out of the board or dragging to the original piece could read "cancel selection". And maybe tapping on the board should cancel too.

@veloce veloce changed the title Non visual game UI Non visual board UI Jan 10, 2024
@veloce
Copy link
Contributor Author

veloce commented Jan 10, 2024

I updated the description and issue title to focus first on a non visual board implementation (previously it was also considering the game aspect).
Once it is done we can move to non-visual game and puzzle UI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cat: accessibility feature New feature help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants