hotkeys to quickly review skype chat history #3210

Closed
nvaccessAuto opened this Issue May 8, 2013 · 41 comments

2 participants

@nvaccessAuto

Reported by mohammed on 2013-05-08 11:48
it would be very convenient to have hot keys to review Skype chat history. ticket number 2298 made it possible to automatically read incoming chat when the Skype Message is focused, however, you still have to back shift to the history window if it wasn't.

also, how do you lock your review object in the chat history list?

@nvaccessAuto

Comment 2 by jteh on 2013-05-08 22:51
The easiest way to lock the review object in the chat history is to move focus to it and then press NVDA+7 (the number 7 on the main keyboard, not f7 or numpad7). You can then use object navigation commands to look through the list. You can unlock again with NVDA+7.

@nvaccessAuto

Comment 3 by dallasobrien on 2013-11-11 13:50
this would be rather handy, perhaps a ctrl+1 to 0 as review keys. i would not go with alt, simply because that is naturally the command to switch between tabs in skype, and there would be little point in breaking that. but a ctrl command would be good.specially when dealing with multiple chats, in different windows, and switching between them constantly.

@nvaccessAuto

Comment 5 by jteh on 2014-12-19 11:40
What if we had a single key to move the navigator object to the last message? That way, you can use previous and next to move through the messages, move inside container to get to links, etc. That consumes a lot less keys and is a lot more versatile.

@nvaccessAuto

Comment 6 by k_kolev1985 on 2014-12-19 12:30
I personally wouldn't mind it. But unfortunately, most of the common users don't have the knowledge about parent and child objects and when (if) an object has a child or a parent object to go to. But we'll teach them the basics about those things if necessary, because the idea suggested by you Jamie sounds like a good one. One of its advantages is the facts that some of the chat messages (e.g. for file transfers) have useful child objects (e.g. the "Download file" button, the text objects for the file name and the approximate time remaining, etc.). The buttons are now focusable, but the text objects are not, so having a quick way to go to the last object (chat message) in a conversation, moving with the "previous" and "next" object commands to the current file transfer and go 1 level down to parse the child objects to find out how much time has remained is a good idea. But now that I've described it in steps, it seams a little to complex for most of the users. Maybe, if NVDA reads the child objects for such chat messages (like for file transfers), without the need to go to explore them in the objects hierarchy, will simplify things a little bit (?).

@nvaccessAuto

Comment 7 by mohammed on 2014-12-19 14:59
that sounds good to me.

I no longer expect keys to move to a specific chat message, the ability to move to the chat history quickly and reliably all the time is enough. maybe another hot key to jump to the text edit control too, especially that those areas are no longer adjacent in recent versions.

thanks.

@nvaccessAuto

Comment 8 by zahari_bgr on 2014-12-19 23:19
Hi,
I also fear that anything less than reading of last ten messages in the current conversation with a keystroke would not be accepted from the people who use another screen readers because of that feature.
I can't understand why are you so much against it. While one could live very well without it, it is very handy for every instant messenger and not just Skype.
Ok, it will take up some keystrokes, but those are local and probably won't be used for anything else anyway.
There is no need of rediscovering the hot water. Doug Lee did a very good job for the other two leeding screen readers, so adopt his approach and everyone will be happy.

@nvaccessAuto

Comment 9 by jteh on 2014-12-20 00:44
There are several reasons I don't like the idea:
1. It seems wasteful and counter-intuitive to introduce a completely new concept when we already have a concept that handles this just fine; i.e. the review cursor. It's better to have a few concepts you can keep reusing than to introduce new concepts for specific cases. That means you can learn concepts once and keep applying that knowledge. Obviously, we need to make it easy to navigate to the last chat message, hence the proposal in comment:5. People already complain about the steep learning curves of screen readers, largely because there are just so many commands to learn. If we can teach one set of commands and have those apply everywhere, it makes learning faster.
2. Using these keystrokes, we have to introduce double presses to virtualise, triple presses to activate a link, maybe quadruple press for something else, etc. All of this can be done with the review cursor and more; e.g. reading by lines, words and characters, activating anything inside the message, etc., all with the same review commands as everything else.
3. Why the last 10 messages? I can understand wanting to review the last message and then to go further back, but I don't follow why you would arbitrarily read, say, the third last message without having read the last message at all. And if you do want to read random messages for some reason, 10 is a fairly arbitrary number.

@nvaccessAuto

Comment 10 by jteh (in reply to comment 8) on 2014-12-20 00:50
Replying to zahari_bgr:

There is no need of rediscovering the hot water. Doug Lee did a very good job for the other two leeding screen readers, so adopt his approach and everyone will be happy.

It's worth noting that the other screen readers don't have a review cursor that would allow for what I'm proposing, since you need to be able to move by object to make this work well. What I'm proposing is quite similar to iOS: you simply "flick back" to move through past messages.

@nvaccessAuto

Comment 11 by zahari_bgr on 2014-12-20 01:56
Hi,
this is not a new concept, it is used by NVDA in Miranda (and for other IM clients by add-ons), it is used by other Windows screen readers, it is used by Orca on Linux and probably by Voice Over under MacOS (though I haven't used that one). It is a general concept for dealing with messages in chat clients, which is well known by the screen reader users.
If a double press places the focus on the respective message and there is a keystroke for going back in the compose field - I think it will be enough.
Last ten messages is important, cause you don't receive one message at a time. Most of the time, there are at least two or more unread messages in a conversation. And then you send two or more messages, then the other side does the same, and if you want to refer to a previous message while there are more and more messages coming - it becomes hell. The number ten isn't random, it just happens there are ten digits in a row, which is handy for such a feature. You can use the function keys for that perpas, too - Alt+F1, Alt+f2, etc.
And using the review cursor for that isn't nice at all, cause often one message wraps more than one line, there is not clear separation between messages, and there is plenty of bulk text which you would like to avoid.

I don't like the concept of a keystroke for any action in any program, even if it is completely accessible, just for the seik of having a keystroke, too. However, in this case I think it is reasonable.

It is not fair for us to compare a touch-only device to a fully functional PC. It is like to compare a stone to a mountain. Yeah, you can't throw a mountain at someone, but the valance is not good idea anyway, grin.

@nvaccessAuto

Comment 12 by jteh (in reply to comment 11) on 2014-12-20 02:29
Replying to zahari_bgr:

this is not a new concept, it is used by NVDA in Miranda (and for other IM clients by add-ons), it is used by other Windows screen readers, it is used by Orca on Linux and probably by Voice Over under MacOS (though I haven't used that one).

Afaik, Apple basically never implement app specific commands, though you can possibly manage it via scripts. It's still a very domain specific concept, not a general screen reader concept.

Last ten messages is important, cause you don't receive one message at a time. Most of the time, there are at least two or more unread messages in a conversation. And then you send two or more messages, then the other side does the same, and if you want to refer to a previous message while there are more and more messages coming - it becomes hell.

Which is why you get to the last message and then move back through your history. My point is that I don't follow why you would want to read the second last message if you haven't just read the last message.

And using the review cursor for that isn't nice at all, cause often one message wraps more than one line, there is not clear separation between messages, and there is plenty of bulk text which you would like to avoid.

All of that is false. Each message is one object, so you just go previous and next to move between messages. There's no dealing with multiple lines, etc. unless you want to review the text of a particular message. The bulk text is all after (not before) the message text, so you can simply shut it up or ignore it. As I understand it, this would be like alt+leftArrow and alt+rightArrow in the JAWS Skype scripts, only you can also review, activate links, etc. with normal review commands.

@nvaccessAuto

Comment 13 by jteh on 2014-12-20 02:37
The key point here is that I'm not seeing any good arguments as to why what I'm proposing is actually less efficient. You can essentially do everything you're asking for and more with one new command and the existing review commands. The only thing you can't do is read an arbitrary message (say, the third last message) with a single keystroke, but I still haven't seen a good use case for that. In other screen readers, do you ever hit, say, alt+3 without having hit alt+1 previously, and why might you do that?

I'm not opposing this for the sake of it. I'm happy to implement things if there are solid use cases, but right now, a solid use case hasn't been made that I can't satisfy by reusing existing concepts. We should always challenge whether we can do better, not just copy everyone else. On the flip side, if there are solid use cases, then copying might be the best approach and that's fine.

@nvaccessAuto

Comment 14 by k_kolev1985 on 2014-12-20 08:17
Jamie, now that I thought about why is the concept with the commands to read the last 10 messages was invented in the first place, I think I may know the answer and a good reason to use it in NVDA as well. Sighted users do not browse through the messages from last to older 1 by 1 to find a particular one that interests them, for example - they just quickly skim the list of messages and find the message in question. Using commands to read the last n-amount of messages (e.g. 10 in our case), will simplify the chat reading experience and make it faster and more efficient.

As for why I would read a message older than the last one, there could be several reasons for that:
1. I want to read a particular message in the conversation, witch is one of the last 10 witch I'm able to read with quick commands and I know on witch position it is, so I know that if I press the corresponding quick command, I'll immediately read just it, without having to browse through the last messages before it. That makes it more efficient, in my opinion.
2. lets say that I received in the conversation 4 new messages, that I haven't read. The messages are ordered in the chat content list in chronological order from oldest to newest (the newest is on the bottom of the list and the oldest - on the top). With your suggestion, if I firstly move to the last message, that would be the newest unread and not the first unread one. But logic says that I'd probably want to read first not the last message received, but the first unread one, witch in my example is not the same message. And if I know that I received 4 new (unread) messages, I would immediately press the command to read the 4th message from bottom to top (from newest to oldest) and read it, saving some time to browse through the other 3 unread messages, witch I will read after that.

And I agree with Zahari that a single and a double press of the chat reading commands are enough. Single press will read the message and a double press will focus it and from then on we can review it, activate links in it, etc, using either the review cursor or the keyboard navigation commands wherever possible.

Hope this makes sense.

@nvaccessAuto

Comment 15 by jteh (in reply to comment 14) on 2014-12-21 02:35
Replying to k_kolev1985:

Sighted users do not browse through the messages from last to older 1 by 1 to find a particular one that interests them, for example - they just quickly skim the list of messages and find the message in question.

That might be true if the message has a particular word or the like that stands out, but skimming to find, say, the third last message still requires counting, even if it's very fast counting. That's what you're asking for: the ability to get to a message by count.

  1. I want to read a particular message in the conversation, witch is one of the last 10 witch I'm able to read with quick commands and I know on witch position it is

How did you learn the position? If you learnt the position, you obviously had to discover it at some point, probably by moving backwards from the end.

  1. lets say that I received in the conversation 4 new messages, that I haven't read.

I assume you're using the Skype unread message count to give you that information? That's actually probably the only compelling use case I've seen so far. That said, I think Skype actually marks new messages somehow, so it might be better to instead have a command to jump to the first marked new message, which would be very easy for a sighted user to see without counting.

And I agree with Zahari that a single and a double press of the chat reading commands are enough.

Given the resistance here, I'll probably end up implementing this. However, I think a single press is enough. A single press will read it and move the review cursor there, so you can then use the existing review cursor commands to focus, review, activate or whatever.

@nvaccessAuto

Comment 16 by k_kolev1985 (in reply to comment 15) on 2014-12-21 13:43

  1. I want to read a particular message in the conversation, witch is one of the last 10 witch I'm able to read with quick commands and I know on witch position it is

How did you learn the position? If you learnt the position, you obviously had to discover it at some point, probably by moving backwards from the end.

No. Actually I listen to the sound signals that Skype gives us for new incoming messages, even when we are in the conversation with those new incoming messages. Skype gives us a sound alert for each new incoming message. The sound alert for new messages in the current conversation is enabled by default if the "Accessibility mode" is enabled in Skype's preferences, in the "Accessibility" section. Though my method is not ideal, it works well enough for me.

  1. lets say that I received in the conversation 4 new messages, that I haven't read.

I assume you're using the Skype unread message count to give you that information? That's actually probably the only compelling use case I've seen so far. That said, I think Skype actually marks new messages somehow, so it might be better to instead have a command to jump to the first marked new message, which would be very easy for a sighted user to see without counting.

Actually, most of the time I rely on the sound alerts to find out how many new messages there are, specially if it is in a already opened conversation. If it is a new conversation, the number of unread messages is given for a conversation in the list of last conversations in Skype's main window.

And I agree with Zahari that a single and a double press of the chat reading commands are enough.

Given the resistance here, I'll probably end up implementing this. However, I think a single press is enough. A single press will read it and move the review cursor there, so you can then use the existing review cursor commands to focus, review, activate or whatever.

Actually, I wouldn't mind a single press approach as well. But please implement the method with the quick commands for the last 10 messages.

Thanks much in advance! Me and other people do appreciate efforts like this of NVAccess to make our lives easier!

@nvaccessAuto

Comment 17 by k_kolev1985 on 2014-12-21 13:46
And YES - Skype marks visually the unread messages in a conversation. Previously it used to do it wit some sort of a dot on the right of the time marker for a message. Now I think it does it by coloring the text of the message in a different color.

@nvaccessAuto

Comment 19 by James Teh <jamie@... on 2014-12-22 05:49
In [9fd52d6]:
```CommitTicketReference repository="" revision="9fd52d6150742aad1d0a2dc24169fafe9de88c97"
In Skype, you can now report and review recent messages using NVDA+control+1 through NVDA+control+0; e.g. NVDA+control+1 for the most recent message and NVDA+control+0 for the tenth most recent.

Re #3210.

@nvaccessAuto

Comment 20 by James Teh <jamie@... on 2014-12-22 06:53
In [dea0a6c]:
```CommitTicketReference repository="" revision="dea0a6c876d6febfdc39dc9f723ad09435e7cb46"
Merge branch 'skypeChanges' into next: major improvements for Skype, but requires Skype 7.

Incubates #4218, #3210, #3506, #3616, #4644, #4741.

Changes:
Added labels: incubating
@nvaccessAuto

Comment 21 by mohammed on 2014-12-22 19:30
very nice work. I notice that those keys do not change focus to the messages, only read them. if someone sends me a file or a link, I still have to manually go to the message in question and then interact with it. right?

if so, wouldn't it be nice to be able to move the review cursor to the message list quickly? does this have to go in a new ticket?

@nvaccessAuto

Comment 22 by k_kolev1985 on 2014-12-22 19:49
Actually, I think the review cursor goes on the message being read. But the button to accept a file transfer is 2 levels deeper in the file transfer chat message object hierarchy.

@nvaccessAuto

Comment 23 by mohammed on 2014-12-22 20:19
oh right, it's the live cursor that remains where it is, but the review cursor does move. very nice work. still, you can't accept files easily. I think this is trivial though.

on another note, and I am really afraid it will generate lots of unnecessary controversy, but I think assigning ctrl instead of NVDA + ctrl is better. I would argue that ctrl plus 1 through 0 are not currently used anywhere. besides, this is app specific. thoughts?

@nvaccessAuto

Comment 24 by jteh (in reply to comment 23) on 2014-12-23 05:11
Replying to mohammed:

oh right, it's the live cursor that remains where it is, but the review cursor does move. very nice work.

Note that you can easily move focus there with the move focus command (NVDA+shift+numpadMinus or NVDA+shift+backspace).

still, you can't accept files easily.

You could move focus as above. Alternatively, you could move inside the item (NVDA+numpad2) and activate the appropriate control with NVDA+numpadEnter. I don't think it's too much to expect users to learn the NVDA review commands in this case. After all, they have to learn the app specific commands.

on another note, and I am really afraid it will generate lots of unnecessary controversy, but I think assigning ctrl instead of NVDA + ctrl is better. I would argue that ctrl plus 1 through 0 are not currently used anywhere. besides, this is app specific. thoughts?

Ideally, NVDA commands should include the NVDA key so it's obvious they're NVDA commands and not provided by the app. In other words, it's very clear that they're NVDA specific. Also, while they're app specific, it'd probably make sense to be consistent with other chat apps, and in other apps, control+numbers might be used to switch between tabs (a common convention). Note that we already use NVDA+control+numbers in Miranda.

@nvaccessAuto

Comment 25 by mohammed on 2014-12-23 06:28
Thank you Jamie. agreed on both.

I wanted to update http://community.nvda-project.org/wiki/ApplicationSupport#Skype but it looks like a description of only a couple of lines is expected. I couldn't write a how to, for example. I think such articles maybe useful. while every user needs to learn review commands, only few learn it fully, so such hints as above are needed. how can I create a page in the wiki and where do you think such article should be placed? of course I think such an article should be published when 2015.1 goes out as it will include this work.

@nvaccessAuto

Comment 26 by dallasobrien on 2014-12-23 08:44
hi. this is awesome to see! i have long been waiting for a chat review set of commands. and yes, i agree, the NVDA + control + numbers is fine. and after all. skype talking used control + shift + alt + numbers. so this is still shorter. lol. will be grabbing the latest snapshot in a moment, and when i'm not on a call on skype, i'll be giving this a good testing! thanks NVDA team.

@nvaccessAuto

Comment 27 by mohammed on 2014-12-25 09:02
sometimes an error occurs and NVDA plays the error sound too. log says:
Input: kb(laptop):control+NVDA+1
ERROR - scriptHandler.executeScript (11:59:45):
error executing script: > with gesture u'ctrl+NVDA+1'
Traceback (most recent call last):
File "scriptHandler.pyc", line 176, in executeScript
File "appModules\skype.pyc", line 86, in script_reviewRecentMessage
AttributeError: 'Conversation' object has no attribute 'outputList'

thanks

@nvaccessAuto

Comment 28 by jteh (in reply to comment 27) on 2015-01-08 08:09
Replying to mohammed:

sometimes an error occurs and NVDA plays the error sound too. log says:

AttributeError: 'Conversation' object has no attribute 'outputList'

Any idea or feeling as to what triggers this? For example, is it when you just opened a new conversation? Once it happens, does pressing the key again work or not? Does the problem go away if you alt+tab out and back in?

@nvaccessAuto

Comment 29 by mohammed on 2015-01-08 09:01
it happens sometimes one I have the chat window minimized and I alt tab to it. sometimes if I open another application while a chat window is open, when I come back to it it doesn't work. the best work around in all cases is to do windows + m or d, and then alt tab back to the chat window.

@nvaccessAuto

Comment 30 by mohammed on 2015-01-08 11:13
interestingly, when that error occurs the automatic reading of incoming chat continues to function normally.

@nvaccessAuto

Comment 31 by mohammed on 2015-01-19 07:22
hi.
are all those enhancements to Skype going to graduate from next? they have been incubating for 4 weeks now.
thanks.

@nvaccessAuto

Comment 32 by jteh on 2015-01-19 07:48
I still need to reproduce and fix the couple of issues users (including yourself) have reported. Unfortunately, I haven't been able to reproduce any of them yet.

@nvaccessAuto

Comment 33 by netblue (in reply to comment 32) on 2015-01-19 17:55
Replying to jteh:

I still need to reproduce and fix the couple of issues users (including yourself) have reported. Unfortunately, I haven't been able to reproduce any of them yet.

Hi about a week ago this addon for Skype 7 apaired on blindworlds.com. It has a lot of use full features. It uses a new skype module. Maybe it can be of help to you. The user guide and other things needs to be transulated to english.
download link
https://dl.dropboxusercontent.com/u/141413849/Complemento%20de%20NVDA%20para%20Skype%207%20final%20corregido%20micro.nvda-addon

@nvaccessAuto

Attachment Complemento de NVDA para Skype 7 final corregido micro.nvda-addon added by netblue on 2015-01-19 18:03
Description:
Skype 7 NVDA Addon

@nvaccessAuto

Comment 34 by bdorer on 2015-01-19 18:25
This addon isn't working with snapshots and dupplicates skype functionality.

@nvaccessAuto

Comment 35 by mohammed on 2015-01-20 06:44
unfortunately there's no easy and reliable way to reproduce this. it happens very frequently but I can't yet decide what triggers it. is there anything I can do to help you reproduce the issue?

I played with the third party addon, message review seems to work correctly all the time. maybe it'd be useful to look at his code?

thanks.

@nvaccessAuto

Comment 36 by jteh (in reply to comment 30) on 2015-01-21 02:41
Replying to mohammed:

interestingly, when that error occurs the automatic reading of incoming chat continues to function normally.

Sorry to question you, but are you absolutely certain of this? If you're seeing that error, the code for monitoring the conversation for new messages would never have been able to run, so I don't follow how new message reporting could possibly work.

@nvaccessAuto

Comment 37 by jteh on 2015-01-21 02:46
Never mind. I'm able to reproduce this if I use split window view; that seems to be the key. Still no idea how it's happening yet, but at least I can reproduce it.

@nvaccessAuto

Comment 38 by James Teh <jamie@... on 2015-01-21 04:39
In [3b291b6]:
```CommitTicketReference repository="" revision="3b291b6484d33c546c3f75b602ef656997bf4ecf"
Skype: Fix complete brokenness of the review message command in some cases.

Sometimes, particularly in Split Window view, we were getting gainFocus and focusEntered events on two different instances of the Conversation object. The second (uninitialised) instance was being used for the review message command.
Fix this by ensuring that we aren't dealing with two different instances. See _isEqual for details.
Re #3210.

@nvaccessAuto

Comment 39 by James Teh <jamie@... on 2015-01-21 07:22
In [87f6562]:
```CommitTicketReference repository="" revision="87f6562bafa024f528cd92112df1e7843f0a8cbc"
Merge branch 'skypeChanges' into next

Incubates #3210.

@nvaccessAuto

Comment 40 by jteh (in reply to comment 27) on 2015-01-21 07:27
Replying to mohammed:

sometimes an error occurs and NVDA plays the error sound too. log says: ...

Can you please test with the next snapshot for 21 Jan when it becomes available? Thanks.

@nvaccessAuto

Comment 41 by mohammed on 2015-01-23 07:34
hi.

yes, this seems to have taken care of my issue. reviewing messages works correctly all the time now

Thanks.

@nvaccessAuto

Comment 42 by James Teh <jamie@... on 2015-01-27 03:15
In [f0e53a2]:
```CommitTicketReference repository="" revision="f0e53a2371708085099d9eb30277bb958a22504b"
Major fixes and enhancements to support for Skype for Desktop, including support for Skype 7, reporting of notifications and message review commands.

Fixes #4218, #3616, #4741, #4644, #3210, #3506.

Changes:
Removed labels: incubating
State: closed
@nvaccessAuto

Comment 43 by jteh on 2015-01-27 03:18
Changes:
Milestone changed from None to 2015.1

@jcsteh jcsteh was assigned by nvaccessAuto Nov 10, 2015
@nvaccessAuto nvaccessAuto added this to the 2015.1 milestone Nov 10, 2015
@jcsteh jcsteh added a commit that referenced this issue Nov 23, 2015
@jcsteh jcsteh In Skype, you can now report and review recent messages using NVDA+co…
…ntrol+1 through NVDA+control+0; e.g. NVDA+control+1 for the most recent message and NVDA+control+0 for the tenth most recent.

Re #3210.
9fd52d6
@jcsteh jcsteh added a commit that referenced this issue Nov 23, 2015
@jcsteh jcsteh Skype: Fix complete brokenness of the review message command in some …
…cases.

Sometimes, particularly in Split Window view, we were getting gainFocus and focusEntered events on two different instances of the Conversation object. The second (uninitialised) instance was being used for the review message command.
Fix this by ensuring that we aren't dealing with two different instances. See _isEqual for details.
Re #3210.
3b291b6
@jcsteh jcsteh added a commit that referenced this issue Nov 23, 2015
@jcsteh jcsteh Major fixes and enhancements to support for Skype for Desktop, includ…
…ing support for Skype 7, reporting of notifications and message review commands.

Fixes #4218, #3616, #4741, #4644, #3210, #3506.
f0e53a2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment