-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Let screen readers catch cursor position #2543
Comments
Hey. The issue is that the My guess was that cursor being reported at bottom right was because of terminal not being a text field, which I confirmed by installing the brltty android app from https://play.google.com/store/apps/details?id=org.a11y.brltty.android as documented in https://brltty.app/archive/Android/brltty-on-android.html. I enabled The log entries are from
As for whether this can be fixed or not, I am currently not sure since I don't really have experience with accessibility services. However, there seems to be support in android for custom views as documented at https://developer.android.com/guide/topics/ui/accessibility/custom-views. Maybe custom events can be published with updated I will try looking into this. I don't have a braille screen reader device, so that may be an issue too and may need someone who does for testing. |
Many thanks for your thorough investigation!
I do have a braille display and will be happy to test and assist in any
possible way!
@sthibaul may have an opinion about the way to go, although I am not
sure how familiar he is about accessibility on Android.
|
You are welcome. Cool, will let you know in case I need testing. |
Thanks. Really. For blind people, fixing this issue would be a huge
enhancement.
|
Yeah, I understand and hope this gets fixed somehow. I'll try prioritizing this. |
agnostic-apollo (2022/02/05 13:03 -0800):
Yeah, I understand and hope this gets fixed somehow. I'll try
prioritizing this.
It's already wonderful you got interested in this and went that far.
YOur comment was awesome with all the details and links you provided.
|
I don't know anything about the accessibility stack on Android. |
note there is an alternative accessibility method which is using an actual linux specific console screenreader. had some success with fenrir but it required proot setup and some way for it to contact the external pulseaudio, I don't even remember what I did. |
The issue reported here is independent of the screen reader at use, I
think.
For a screen reader to work, it must have a way to "see" what is
displayed on the screen.
When I last tested, it was almost the case with Termux. The only problem
I could see during my rough tests was that the reported position for the
cursor was wrong: it was constantly reported to be at the bottom-right
of the screen, even in Emacs, for instance.
Meanwhile, I got my Android braille display so I am available to perform
tests.
|
I was actually looking into this yesterday before you guys messaged. I have managed to find a way to send terminal cursor position via Check #2840. You can download termux apk build from https://github.com/termux/termux-app/actions/runs/2509869570. Note that if you installed termux from F-Droid, then installation github build will fail since it will have different signing keys, so you would need to uninstall termux and all plugin apps first. Check https://github.com/termux/termux-app#Installation. You would also need to apply the brltty app patch to get the values. Currently, its just logging the values and not setting screen reader cursor. The issue is that I don't have experience with screen readers or terminal support for screen readers and don't know how this should ideally be implemented and how useful cursor position is. The terminal is two dimensional, but screen readers seem to be one dimensional, basically a single row with limited text characters. So there is some mapping going on as well. Moreover, in non text edit mode (outside nano, etc), the user may want to read text at the top of the terminal and cursor would be at the bottom waiting for new commands, so content description would have to start at the top and not at the cursor at command line. In text edit mode, the cursor would be aligned with text to be read, so likely more ideal. But even in text edit mode, when the cursor is at extreme right of terminal, there may still be text available to the right on the line of the file being read, in that case cursor position would still be same, even after horizontal scrolling. The brltty app is also not considering if text field is multiline and cursor tracking Are there some standards available that should be supported by terminals for screen readers? There is some info on cursors at http://brltty.app/doc/Manual-BRLTTY/English/BRLTTY-5.html#ss5.1 I need more info on what's expected by a screen reader or a blind person so that an ideal system can be designed since obviously there are issues. Console screen readers are available too and it might be possible to add native packages for them in termux. There was also work being done audio desktop like emacspeak at termux/termux-packages#6504 Android accessibility also has support for virtual views. So, for the terminal, I should be able to implement something like 3 modes. Possibly extras keys can be used to switch between the modes, but users would have to configure the extra keys, so not sure how convenient that would be at app install.
Currently, termux is using window mode and setting content description to the entire terminal text that is visible so TalkBalk starts reading text from the top everytime, which would obviously be annoying and time wasting. So line and character mode may be useful as well. It would also have to be decided if view mode should apply to all opened terminal sessions or only current one. I also don't know how screen readers handle incoming text, I am assuming its buffered and can be scrolled through and read separate from android. Android has a sample for virtual views as well. Chromium also has extended accessibility support. Improving accessibility support via Android APIs would require collaboration will brltty devs, possibly @DaveMielke who seem to be handling android side. Any input on above would be appreciated. |
unsure if screenreaders which use speech can easily be made to work well with any kind of terminal on android. I hope it's possible but might not be, as their usage is kinda different compared to desktop screenreaders. Might be far better in case of braille, but I don't have any braille display. Console screenreaders can work in theory, in practice I managed to get a setup using proot archlinux and pulseaudio, it worked but was noticeably slower to be honest. Console screenreaders which are not linux specific often grab a pseudoterminal and don't care about anything else, just intercepting characters coming into or out of a pseudoterminal, so no support from termux is needed in that case except things these screenreaders want to use which normally don't work or things like sound/speech synthesis. |
Well, proot is going to be slow, hence native support if possible would be better. |
well if any console screenreader would work without proot that would be something too. the one I have in mind probably doesn't. |
Hi:
Since you're including me in this discussion, I'm assuming that you'd like me to contribute to it. Could you please explain to me what your goal is? That'd help me know which kinds of answers you'd like.
You mention brltty. It's already a fully functional screen reader so what are you trying to offer on top of it?
You mentioned that brltty doesn't work with multi-line text views. That isn't correct. It works fine with them.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Dave,
I am the person who initially opened the issue. Are you able to read its
content?
In a few words: termux is an Android app which lets you use command-line
tools on an Android device. You can install packages, edit files, etc.
When you isntall both termux and brltty on an Android device, brltty
already has access to the screen content exposed by Termux. The last
time I tested, the only thing brltty couldn't get was the position of
the cursor.
How to fix this is what is being discussed here, but it may be helpful
if you were able to read the issue from the beginning.
If you are not able to do so in a comfortable way, just let me know and
I will send you a text export of everything that has been posted to it.
|
[quoted lines by Sébastien Hinderer on 2022/06/16 at 13:13 -0700]
In a few words: termux is an Android app which lets you use command-line
tools on an Android device. You can install packages, edit files, etc.
So all I need to do is to install the termux app?
When you isntall both termux and brltty on an Android device, brltty
already has access to the screen content exposed by Termux. The last
time I tested, the only thing brltty couldn't get was the position of
the cursor.
That should hopefully be easily fixable. Is termmux using a TextView for the console content or is it using some other kind of view.
What I can say for sure is that if a TextView is being used then brltty has no problem at all knowing where the cursor is. Perhaps, therefore, I should ask a different question. How does termmux not knowing where the cursor is manifest itself?
How to fix this is what is being discussed here,
Of course I'll get around to actually trying it, but I'd still appreciate it if someone could describe for me how termux is rendering the console and also how it's asking where the cursor is.
but it may be helpful if you were able to read the issue from the beginning.
I much prefer to tackle any issue from scratch.
What I'm hoping is that termux is using a standard TextView and that it's simply asking which text is currently selected to know where the cursor is. No text being selected is indicated by the start and the end of the selection being both set to the same offset, which is exactly where the cursor is. Put another way, text not selected is simply the devolved case of the selected text having a length of zero.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
The short term goal is to fix cursor position of the terminal being assumed by brltty. The long term goal is to improve accessibility support for termux app and terminal. I don't know what kind of data or features screen readers or blind people would want from a terminal in terms of easier accessibility, so those goals are yet to be decided on. I also don't have a screen reader myself to test stuff out.
The vertical offset doesn't seem to be correct in logs and is not
You can install termux from https://github.com/termux/termux-app/actions/runs/2509869570 if you want to test the pull request #2840. You need
Termux uses a custom
Termux knows the cursor position. But since its not an
Issue with I have opened the pull request #2840 in which termux sends the row and column via |
I may have expressed myself the wrong way around. The real issue is how termux is showing where the cursor is. The right way to do that within a TextView is to set both the selection start and selection end to the same offset - that of the cursor's position.
I also feel the need to raise a cautionary warning: Please don't try to outsmart screen reader apps. Let them do what they do, and help, rather than try to override, them.
All this talk about doing things like setting the content description is unnecessary. If there's a perceived need to do that then that's guaranteed to be the wrong approach. And, yes, if you're trying to use the content description to render the console's text then the whole concept of where the cursor is has been lost. The content description is only ever meant to be a helpful textual description as to what a widget contains.
Let's say you have a graphic of an analog clock face. Then the content description should be set to the text for the time because a screen reader app can't make sense of the graphic. That'd be a proper use of the content description property of a widget. Another would be when a button shows what it does via an image, in which case its content description should be set to a brief textual description of what action the button will perform.
I suppose it's possible that you render the console text with some fancy font, which'd require you to use what roughly would amount to images on a canvas. No screen reader could make any sense of that, of course, which might be why you're trying to then use the content description property. If this is correct, then I'd say that a much better approach would be to have a mode setting which can do it the graphic way but which can also be switched to a TexstView way of doing it.
|
Firstly, I should add that I wasn't the one who implemented setting the entire terminal text to content description. It was before my time. Secondly, yes I understand that content description should basically only be used to describe the content. What I want to do is start fresh. What is the best way a terminal can transmit its text (not really its fonts and graphics) to a screen reader via android accessibility and what would make navigating the terminal easier for blind users, specially in respect to cursor. Note that terminals have two modes, one normal mode in which cursor is always at bottom waiting for new commands and another text edit mode used by nano, emacs, etc in which cursor can move around anywhere user wants. I can make the Btw, by extra keys, it means the toolbar shown at the bottom in the terminal, with keys like https://wiki.termux.com/wiki/Touch_Keyboard#Extra_Keys_Row https://wiki.termux.com/wiki/Touch_Keyboard#Text_Input_View https://wiki.termux.com/wiki/Terminal_Settings Also I can't just convert the terminal view itself to Maybe we can bring attention of someone who has worked on console screen reader support, they may be able to give some helpful info. |
[quoted lines by agnostic-apollo on 2022/06/16 at 14:22 -0700]
Brltty isn't assuing anything. It works with each widget as best it can.
The long term goal is to improve accessibility support for termux app and terminal. I don't know what kind of data or features screen readers or blind people would want from a terminal in terms of easier accessibility, so those goals are yet to be decided on.
My challenge to that is that it makes no sense to build on a faulty foundation. It'd be very difficult to convince any screen reader maintainer to want to support some kind of overly complex mechanism which is known to be merely temporary.
You should be using standard OS capabilities as much as possible. If you don't then you'll never be actually improving accessibility. The most would be possibly improving it for, maybe, just one screen reader at a time.
I also don't have a screen reader myself to test stuff out.
Sure you do. Every Android system comes with TalkBack. All you need to do is to enable it.
The vertical offset doesn't seem to be correct in logs and is not `0` on first line and changes and something like `13` as per my tests, also gets messed up if I switch back to gmail email send edit screen, I don't know if it works well with the screen reader even with faulty values, or at least what I am assuming are faulty.
All I can say, here, is that you're wrong. I depend on those logs for brltty support, and can absolutely assure you that the values they report are totally accurate. In fact, I'm even wondereing why you'd dare to conclude that they aren't accurate.
Termux uses a custom `TerminalView`, which is not a `TextView` or `EditText`.
Then I'd suggest that, as mentiond in my earlier message, you have a mode which does use an EditText.
Termux knows the cursor position. But since its not an `EditText`, brltty and other accessibility apps don't know the cursor position.
If you really want to improve accessibility then, really, you need to cater to the screen reader apps rather than expect ech of them, separately, to cater to you.
Terminal apps/packages/text editors get position with a request for [`Cursor Position Report` (`CPR`)](https://vt100.net/docs/vt510-rm/CPR.html), but android accessibility can't use that obviously.
I highly doubt that's true for all (or even most) such apps. In any event, anyone who supports a screen reader app is looking for compliance with OS standards, not externally imposed conventions.
Issue with `EditText` is that its linear. The start and end index is based on position inside the linear text. The terminal is 2D, so cursor position is the row and column. However, we can extract all the text out of the terminal and convert row and column into a start and end index inside the text, but I am not sure if users want that, since users may want actual row and column when using a terminal.
Not so. Sure, the content of an EditText is a single string, but that string contains embedded newlines. Brltty, for example, turns it into a multi-line view so that each line can be individually addressed, rendered, edited, etc.
I have opened the pull request #2840 in which termux sends the row and column via `AccessibilityNodeInfo.extras` to accessibility apps like brltty. You can apply [this patch](https://github.com/termux/termux-app/files/8920000/0001-Added-Add-support-for-getting-terminal-cursor-positi.patch.txt) in your app to get the values. I don't know how you will get the row and column to the screen reader though, since they are not start and end index as already explained.
But that'd require each screen reader app to know how to handle your specific, non-standard widget. Why should each separate screen reader app need to have such specialized knowledge? That's an incredibly fragile interface which probably won't interest many (if any). iSmply designing ones own solution and then telling others that they must implement it is, quite frankly, a no go!
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
[quoted lines by agnostic-apollo on 2022/06/16 at 14:43 -0700]
Firstly, I should add that I wasn't the one who implemented setting the entire terminal text to content description. It was before my time.
That was a very bad decision. :-(
Secondly, yes I understand that content description should basically only be used to describe the content.
I'm glad. :-)
What I want to do is start fresh. What is the best way a terminal can transmit its text (not really its fonts and graphics) to a screen reader via android accessibility and what would make navigating the terminal easier for blind users, specially in respect to cursor.
Presenting the console as a single TextView containing all of the text (i.e. none of the per line or per character stuff) would be the way to go. Screen readers have their own ways to navigate text and there's no need to try to be smarter than they are. Speech ones know how best to do it when speech is being used, braille ones know how to do it best for those who use braille, etc.
Note that terminals have two modes, one normal mode in which cursor is always at bottom waiting for new commands and another text edit mode used by nano, emacs, etc in which cursor can move around anywhere user wants.
That makes no difference to a screen reader. Just show the text and where the cursor is.
I can make the `TerminalView` appear as `TextView` with virtual views for accessibility services, with the entire terminal as a single `TextView`,
This is what you should do.
each line as a separate `TextView` or each character of each row and columns as a `TextView`.
Both of these would make life much more difficult for a screen reader app.
Btw, by extra keys, it means the toolbar shown at the bottom in the terminal, with keys like `HOME`, and arrow keys, etc. It can be configured with custom keys via `~/.termux/termux.properties` file, will require running `termux-reload-settings` for changes to take effect. If you swipe left on it, it will open an edit text that can be used to send text to terminal.
That may make a nice user interface, but all any screen reader app will ever care about is what the TextView is actually rendering.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Hello,
I am goiong to respond although I am not familiar at all with Android
developemnt. In case you don't manage to find out what you need, please
let me know and I will ask around (I have skilled people among my
colleagues, for instances).
agnostic-apollo (2022/06/16 14:43 -0700):
What I want to do is start fresh.
That would be really cool. Thanks a lot for yoru interest and the effort
you seem ready to invest in all this. I hope it will be benefical to the
whole app.
What is the best way a terminal can transmit its text (not really its
fonts and graphics) to a screen reader via android accessibility and
what would make navigating the terminal easier for blind users,
specially in respect to cursor.
As Dave explained, I think, the more you use the widgets already
provided by the OS or SDK, the likeliest it is things will "just work".
Note that terminals have two modes,
one normal mode in which cursor is always at bottom waiting for new
commands and another text edit mode used by nano, emacs, etc in which
cursor can move around anywhere user wants.
Yes, we (users of braille displays) are aware of that, but it is not
really important. Indeed, when using a braille display, we can visit
different fragments of what is on the screen, no matter where the cursor
is. We can always locate the cursor, but we are not bound to it and can
read even those parts of the screen where there is no cursor. This is
all implemented by the screen reader and you, as the developer of an
application, do not need to care about all this logic.
I can make the `TerminalView` appear as `TextView` with virtual views
for accessibility services, with the entire terminal as a single
`TextView`, each line as a separate `TextView` or each character of
each row and columns as a `TextView`. I discussed that in
#2543 (comment).
But I am not sure what's ideal since I don't have experience with
screen readers.
What maters to the screen reader is to be able to figure out thecontent
of each line in terms of text and perhaps also the attributes (the
color). The screen reader also needs to know where the cursor is at any
time. I don't know how this has to be implemented in terms of Android
widgets, so I can only provide rather high-level requiremnets.
To give you an example, to access the Linux text-console, screen readers
typically use /dev/vcsa. That's to show you the kind of information
which is needed.
Btw, by extra keys, it means the toolbar shown at the bottom in the
terminal, with keys like `HOME`, and arrow keys, etc. It can be
configured with custom keys via `~/.termux/termux.properties` file,
will require running `termux-reload-settings` for changes to take
effect. If you swipe left on it, it will open an edit text that can be
used to send text to terminal.
I think we will need to figure out together whether these
functionalities would make sense and be useful for a blind user using
termux from a braille display and a keyboard. My guess is that in such
situation we would already be able to do HOME, END etc., without the
need to interact with the buttons, but I may be wrong and there may be
other functions which are not reachable from the keyboard.
In any case, my asusmption is that this tool bar is not really a
priority and that it's best to start by focusing on the terminal itself,
at least as a first step.
I hope this helps and am willing to provide as much support as required.
I am also available for direct exchanges through an instant messaging
system or for Audio/Video calls.
|
I'll get back soon, got busy with other stuff. I implemented cursor positioning based on if both start and end selection indexes are same as suggested and as used by brltty. Need to do more testing to ensure everything is right. Terminals are word wrapped as well, so standard selection index does not apply and each word wrap is a separate line. |
No pressure, no hurry.
I just wanted to make sure you know there is interest in your wokr and
will to support.
At the moment I din't understand what you menat about word wrapping and
text selection but if I were you I woulnd't lose time explaining because
I suspect everything will become clear when I am testing and have real
questions.
|
[quoted lines by agnostic-apollo on 2022/06/24 at 08:13 -0700]
I implemented cursor positioning based on if both start and end selection indexes are same as suggested and as used by brltty. Need to do more testing to ensure everything is right.
Note that brltty also supports selected text. So, if text is selected (which, on Android, also means that there's then no cursor) just set the start/end of the selection as needed.
Terminals are word wrapped as well, so standard selection index does not apply and each word wrap is a separate line.
That shouldn't matter. Just place newline (\n) separators at the right places within the TextView, and set the cursor position (or text selection) according to offsets within that same TextView.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
I want to add text selection support but issue with terminal is that selection can be done anywhere in scroll back history, so if user is at bottom and selection is somewhere above in history, the selection text won't be visible or part of currently viewed text. Or only end cursor will be part of text. Although, could be handled by if both start and end indexes are visible, but user may want to select non visible and visible text as well, so gets complicated.
Not using |
Regardless of what's actually visible, a TextView always contains all of the text. A user should be able to select a huge chunk of text, which, of course, may not all fit on the screen. That's okay and should be allowed. Just set the selection start/end, and let screen scrolling handle it for sighted users and brltty handle it for braille users.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Dave Mielke (2022/06/24 09:16 -0700):
Regardless of what's actually visible, a TextView always contains all
of the text. A user should be able to select a huge chunk of text,
which, of course, may not all fit on the screen. That's okay and
should be allowed. Just set the selection start/end, and let screen
scrolling handle it for sighted users and brltty handle it for braille
users.
About scrolling, do we agree that scrolling in brltty should scoll for
sighted users, and likewise the other way around?
|
[quoted lines by Sébastien Hinderer on 2022/06/24 at 09:18 -0700]
About scrolling, do we agree that scrolling in brltty should scoll for
sighted users, and likewise the other way around?
Brltty sees the whole TextView, even if all of it doesn't fit on the physical screen. What happens to be visible on the screen isn't relevant to a braille user just like what can fit on a braille display isn't relevant to a sighted user. Another way to put it is that both scroll independently and differently from one another.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
In context of terminal, I don't think that would be wise. Firstly, user wouldn't know what's actually on the screen if I pass entire terminal text and Talkback will also start reading from top of scroll back history every time instead of visible terminal. When termux shares terminal text, it truncates the data to https://www.reddit.com/r/tasker/comments/prro8t/autoshare_crashed_when_i_pasted_the_file_path/ |
Dave Mielke (2022/06/24 09:30 -0700):
[quoted lines by Sébastien Hinderer on 2022/06/24 at 09:18 -0700]
>About scrolling, do we agree that scrolling in brltty should scoll for
>sighted users, and likewise the other way around?
Brltty sees the whole TextView, even if all of it doesn't fit on the
physical screen. What happens to be visible on the screen isn't
relevant to a braille user just like what can fit on a braille display
isn't relevant to a sighted user. Another way to put it is that both
scroll independently and differently from one another.
I'm not sure I agree things always need to be so and can absolutely not
be different.
For instance on the Linux text console, when shift-pageup and
shift-pagedown were working, what was visible to the visually impaired
user was exactly what was on the console and that seemed nice to me.
I realise that when using a braille display one does not always be
limited to what there is on the screen of the phone, but I also think
there may be cases where synchronisaiton is desirable, typically if a
visually impaired user and a sighted user would like to work together.
|
If using termux without a sighted user, I'd definitely like it if I
could have the very same terminal than on Linux in terms of dimensions,
i.e. 25 rows of 80 columns.
|
You may be able to do that in landscape mode, not in portrait mode since rows would be greater than columns. I guess terminal margin could be adjusted with |
agnostic-apollo (2022/06/24 09:54 -0700):
>If using termux without a sighted user, I'd definitely like it if I
could have the very same terminal than on Linux in terms of dimensions,
i.e. 25 rows of 80 columns.
You may be able to do that in landscape mode, not in portrait mode
since rows would be greater than columns. I guess terminal margin
could be adjusted with `terminal-margin-horizontal` and
`terminal-margin-vertical` properties and terminal zoomed to
appropriate font size with pinch and zoom of fingers to get that in
portrait mode too.
Thanks. Just to make it clear, on the device where I'd like to use
termux, there is no usual screen. Just one LCD screen that shows to a
sighted user what is on the braille display, nothing else. The device is
called a BrailleSens 6, from HIMS.
|
[quoted lines by Sébastien Hinderer on 2022/06/24 at 10:12 -0700]
Just to make it clear, on the device where I'd like to use
termux, there is no usual screen. Just one LCD screen that shows to a
sighted user what is on the braille display, nothing else.
And may I dare to add that accessibility should never be added with just one use case in mind.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Dave Mielke (2022/06/24 10:22 -0700):
[quoted lines by Sébastien Hinderer on 2022/06/24 at 10:12 -0700]
>Just to make it clear, on the device where I'd like to use
>termux, there is no usual screen. Just one LCD screen that shows to a
>sighted user what is on the braille display, nothing else.
And may I dare to add that accessibility should never be added with
just one use case in mind.
For sure. I just mentionned mine as one among others, definitely not as
the only use-case.
|
You would still need to configure termux as per your rows and columns requirements so that data is sent to braille device accordingly. In future, shell APIs are planned to configure terminal font size, margins, rows, etc. |
[quoted lines by agnostic-apollo on 2022/06/24 at 09:54 -0700]
You may be able to do that in landscape mode, not in portrait mode since rows would be greater than columns.
I don't think the average blind user realizes how constrained a mobile device's screen actually is. The truth is that the average mobile screen makes a mockery out of someone's very expensive and much larger braille display.
Why not get out of the business of hard-coding these sizes. I suggest that you allow the user to configure the desired screen width and height. Of course, you should pick sensible defaults, but allowing them to then be changed rather than simply being hard-coded would be the way to go.
And, of course, Linux doesn't use hard-coded sizes either. They default to whatever width and height the selected font permits, but there's also the stty command which can be used to set an explicit width and/or height.
I guess terminal margin could be adjusted with `terminal-margin-horizontal` and `terminal-margin-vertical` properties and terminal zoomed to appropriate font size with pinch and zoom of fingers to get that in portrait mode too.
It's actually very difficult for a blind user to effectively use finger-based zoom adjustment. That obnly works well when one has a view of the whole screen all at once. A blind user needs to work with actual numbers.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
I agree with Dave.
Ideally, I would like to be able to have a 25x80 screen as on my PC,
because I don't really care about what appears on the screen, most of
the time.
|
The sizes are not technically hardcoded, just defaults exists. Pinch and zoom exists as you said to change the sizes. Terminal by default fills whatever the available space exists on the screen, other than keyboard if its open, just like how pretty much all android apps behave. In landscape mode, this results in columns being more than rows. There are plans to add APIs to resize from command line, others have requested it too. I wasn't aware that blind people would prefer restricted sizes, so will keep it under consideration when implementing, specially allowing users to break aspect ratio. It won't happen in next release coming soon, but cursor position fix should be available. |
agnostic-apollo (2022/10/11 02:43 -0700):
>Why not get out of the business of hard-coding these sizes.
The sizes are not technically hardcoded, just defaults exists. Pinch
and zoom exists as you said to change the sizes. Terminal by default
fills whatever the available space exists on the screen, other than
keyboard if its open, just like how pretty much all android apps
behave. In landscape mode, this results in columns being more than
rows.
Sure it makes sense that, by default, the size of the terminal adapts to
the space available on the screen and its orientation.
It's jsut that, besides to that, it would be helpful to have a mode
where the size of the terminal does not take this space and orientation
of the screen into account, as odd as it may sound. and of course the
size shoudln't not change if for any reason the phone is turned from
landscape to portrait mode, etc.
In this context, we are in the situation where a blind suer can somehow
see more than a sighted user can, which is a bit the opposite of what
happens usually, even if htis is not completely true.
There are plans to add APIs to resize from command line, others have
requested it too. I wasn't aware that blind people would prefer
restricted sizes, so will keep it under consideration when
implementing, specially allowing users to break aspect ratio.
What do you mean by "restricted"?
It won't happen in next release coming soon,
Not a big deal. Many thanks for your interest and efforts to support us.
but cursor position fix should be available.
That's really cool news. If you need some testing I can try, I'd just
need to know what the most straightforward way to test, if possible
without having to recompile everything.
|
Yes, you are right, that will have to be taken care off too. Current, the font size is what defines the row and columns and font size is what's changed when pinch zoom is done.
Not fill screen and use less than the available screen space.
Sure, will let you know, you won't need to build, you would be able to download from github actions. But if you installed termux from F-Droid instead of Github, then will have to uninstall F-Droid version first since it has different signing key for apk. |
agnostic-apollo (2022/10/11 03:14 -0700):
>What do you mean by "restricted"?
Not fill screen and use less than the available screen space.
Would things really happen that way? What's the typical size of the
on-screen terminal? How many rows and columns does it have,
approximately?
I am astnoshed because what I imagined was that the terminal a blind
person would find comfortable would be too big to fit on the screen
rather than too small.
>If you need some testing I can try,
Sure, will let you know, you won't need to build, you would be able to
download from github actions.
Okay good. The more direct the download URL, the simpler.
But if you installed termux from F-Droid instead of Github, then will
have to uninstall F-Droid version first since it has different signing
key for apk.
No no, didn't do that. No termux app installed at the moment.
|
25 rows in landscape at all times would consume less than half the display size.
Depends on device display size and font size set by user. For me, 30-40 rows with keyboard open and 60-80 rows with it closed. Cols are around 75-80. |
Okay I did'nt realise so much would fit on a phone's creen!
If the typical terminal one would want as a visually impaired user fits
on one screen then it's even better because we are brought back to what
happens on a computer.
And, in that case, one other helpful thing to have would be a possiblity
to highlight on the phone's creen the region which is currently rendered
in braille (highlight braille window, for short). this is useful when a
blind user and a sighted user want to work together. That way, the
sighted user can know what the blind user is reading and, if he wants to
show him another part of the screen, he can say things like `Go up three
lines`.
One other context where highlighted briallle window is useful is to
explian people how one reads the screen, to illustrate that we don't
read it at once but rather see it one piece at a time.
Not to say it should be implemented right now, rather so the
implementros have the need in mind when writing code and designing APIs.
|
[quoted lines by agnostic-apollo on 2022/10/11 at 02:43 -0700]
I wasn't aware that blind people would prefer restricted sizes,
Some do, and some don't. This mostly has to do with which kind of braille device any given user has, and, more specifically, which kinds of controls his braille device has. I myself, for exaple, don't mind large sizes at all - my current Linux screen, for example, is 240 columns by 67 rows, and that's simply because it's what the kernel has "decided.
I think what you need is a dialog way to set the screen dimensions as zoom gestures aren't very easy to use by blind people. And, yes, unlimited should be offered as well.
|
[quoted lines by Sébastien Hinderer on 2022/10/11 at 03:04 -0700]
the size shoudln't not change if for any reason the phone is turned from landscape to portrait mode, etc.
Yes, this is a very critical point! A sighted person, due to his full view of the screen, is aware that the screen's orientation has changed, but a blind person doesn't get this feedback. To a blind person, such a change in the screen's orientation "looks" like the braille display has lost its place.
In this context, we are in the situation where a blind suer can somehow
see more than a sighted user can, which is a bit the opposite of what
happens usually, even if htis is not completely true.
Actually, that's just the way it is when using Android. Brltty lets its user navigate the entire text view, no matter how far off the screen it goes in any direction. To do otherwise would actually confuse a blind user because, for example, lines would start/end at unpredictable places given that a blind user has no idea where the edges of the physical screen are. It's also far more trouble than it's worth for a blind user to have to constantly scroll the screen - he'd rather simply navigate it with the controls on his braille device.
|
Dave Mielke (2022/10/11 08:24 -0700):
>In this context, we are in the situation where a blind suer can somehow
>see more than a sighted user can, which is a bit the opposite of what
>happens usually, even if htis is not completely true.
Actually, that's just the way it is when using Android. Brltty lets
its user navigate the entire text view, no matter how far off the
screen it goes in any direction. To do otherwise would actually
confuse a blind user because, for example, lines would start/end at
unpredictable places given that a blind user has no idea where the
edges of the physical screen are. It's also far more trouble than it's
worth for a blind user to have to constantly scroll the screen - he'd
rather simply navigate it with the controls on his braille device.
Wouldn't it be possible to make sure the screen scrols automatically, so
that the portion of text which is displayed in braille is guaranteed to
always be visibleon-screen?
I do realise this does not really matter when using a phone on one's
own, but as soon as one works with a sighted person it becomes of
critical importance in my opinion, and it can be really frustrating when
the portions of screen viewed in braille and viewed on the screen's
phone become totally unrelated.
|
[quoted lines by Sébastien Hinderer on 2022/10/11 at 08:46 -0700]
Wouldn't it be possible to make sure the screen scrols automatically, so
that the portion of text which is displayed in braille is guaranteed to
always be visibleon-screen?
I think it'd be rather unnerving to a sighted colleague to see the screen jumping around as the view is being navigated from the braille device. Peraps there should be a command to scroll the visible part of the view to where the braille display currently is.
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Dave Mielke (2022/10/11 17:14 -0700):
[quoted lines by Sébastien Hinderer on 2022/10/11 at 08:46 -0700]
>Wouldn't it be possible to make sure the screen scrols automatically, so
>that the portion of text which is displayed in braille is guaranteed to
>always be visibleon-screen?
I think it'd be rather unnerving to a sighted colleague to see the
screen jumping around as the view is being navigated from the braille
device.
I disagree. When working together this is an important feature. One may
want to be able to turn it of, okay, but not providing it at all just
because it might not be useful in all circumstances does not look right
to me.
Peraps there should be a command to scroll the visible part of the
view to where the braille display currently is.
To me, having to issue a command to synchronize explicitly would be a
real burden. When we work together with @sthibaul we heavily rely on
this synchronization happening automatically.
|
[quoted lines by Sébastien Hinderer on 2022/10/12 at 00:02 -0700]
I disagree. When working together this is an important feature. One may
want to be able to turn it of, okay, but not providing it at all just
because it might not be useful in all circumstances does not look right
to me.
Brltty already has the Highlight Braille Window Location setting. It could be used to additionally scroll the view. There'd be no point, after all, in highlighting a region of the view that isn't visible. :-)
…--
I believe the Bible to be the very Word of God: http://Mielke.cc/bible/
Dave Mielke | 2213 Fox Crescent | WebHome: http://Mielke.cc/
EMail: ***@***.*** | Ottawa, Ontario | Twitter: @Dave_Mielke
Phone: +1 613 726 0014 | Canada K2A 1H7 |
|
Dave Mielke (2022/10/12 09:33 -0700):
Brltty already has the Highlight Braille Window Location setting.
Yes, exactly. I had that in mind and thought that it would be good if
the terminal has the necessary machinery for brltty to be able to
effectively highlight the window.
It could be used to additionally scroll the view.
I am realising that, in the case of the terminal, perhaps scrolling does
not make as much sense as for, say, a web page. So perhaps it's more in
a GUI app that htis question of synchronized scrolling arises.
There'd be no point, after all, in highlighting a region of the view
that isn't visible. :-)
Indeed! :-)
|
A user on irc, "bgtlover", pointed out that one low hanging fruit that might help with accessibility would be to make the text input view the default when in (some sort of) accesibility mode. |
Henrik Grimler (2022/10/12 11:58 -0700):
A user on irc, "bgtlover", pointed out that one low hanging fruit that
might help with accessibility would be to make the [text input
view](https://wiki.termux.com/wiki/Touch_Keyboard#Text_Input_View) the
default when in (some sort of) accesibility mode.
Seems indeed interesting! What is it that prevents from makingit the
default view or even the only view? Is it because it has a less
appealing rendering?
|
Oh! It's more an input mode rather than anything that renders a terminal. It's usually accessed by swiping the extra "terminal keys" (A thing that lets you use arrow keys, or hit modifier keys without external hardware) off the screen to make way for a native input, which is easier to type on since you are no longer restricted to the "one character at a time" thing terminals do, and can benefit from OS support like autocompletion, or other things normal text boxes do that an addressed character display might not A sighted user would probably gain more benefit from the extra keys over the native input in most general situations, but that might not hold true if you are using a screen reader, so switching the default when an accessibility mode is enabled might be a good first step at making things a little easier in those cases |
Archenoth (2022/10/12 12:49 -0700):
A sighted user would probably gain more benefit from the extra keys
over the native input in most general situations, but that might not
hold true if you are using a screen reader, so switching the default
when an accessibility mode is enabled might be a good first step at
making things a little easier in those cases
Yes, indeed. Thanks for the expanations, anyway.
I think the only way to know what will be necessary or helpful will be
through expermenting, once we can test.
|
TErmux is almost usable with a screen reader like
brltt.
One major barrier to its use, though, is that brltty does not know where
the cursor is. More specifically, no matter her the crr iviually,
brlttyshows it at the botom-right of the reen.
Could this please be fixed?
If made usable with brltty, termux could become a fundamental app for
visually impaired persons, especially since braille notetakesrs like HIMS
Braille Sense 6 are running
Android.
The text was updated successfully, but these errors were encountered: