Keyboard interface?

The documentation seems to assume use of the mouse only. But disabled users and keyboard macros both require use of the keyboard, for example in setting up a challenge and playing a game. I see that this point has been raised before, but not sufficiently addressed, so I’m raising this issue again. Can someone please help with this important issue?

Added: I see that the forum website has a “?” keyboard command to display a list of keyboard shortcuts. But these only seem to apply to the forum, not the game website.

4 Likes

Hi David265,

I have no experience with doing any user experience work targeted toward disabled users. Are there any sort of standard keys used that we should be aware of before dreaming up a short cut keymap?

I would find it very useful if you and any other interested parties could chime in and list out what keys you would like to see bound to what features throughout the site. Once we have an idea of how we want it to function, I think I can make this happen reasonably quickly.

– anoek

3 Likes

Hello,

I am not disabled, so I don’t know about this particular use case, but I do like using the keyboard when available, so I have some ideas.

  • Keys to access main pages (the one on the top bar, and in the drop down menu), probably prefixed by a common key for consistency, and to avoid invading the keymap too much.

  • Keys for different actions in game (pass, resign, undo request, submit move…)

  • Ability to select a move with keyboard, maybe by moving a stone around - probably not with arrow keys as they are used already, but something like wasd ?

  • Maybe being able to use arrow keys to focus and select various things, such as games, things on the drop down menu, on the friend/user list… That would require the ability to focus these menus/lists as well, I guess. Actually, that would only require focusing the first link of the menu, and then we can go through them with tab/shift-tab in any browser, I think.

  • A key to access your next game (like when you click the top right number)

  • A key to pop up the challenge creation dialogue.

  • A key to focus chat input (in games and reviews, mostly) - I believe escape already unfocuses (if that is a word)

  • A key to find them. A key to rule them all and in the darkness bind them. (or just one to pop up a help menu that displays them, that would do too)

As for what the actual bindings would be, I haven’t given that much thought yet, but it seems important to avoid conflicting with browser default keys (and OSes global keys, I guess, and maybe accessibility software). I will happily look into it when we have some consensus as to what functions we actually want. Ideally, they would be customizable, saved in cookies, though that might be overdoing it (but it limits localization problems)

Finally, these are just ideas, obviously. I’ve been a very happy user of the website for a while, I don’t actually need any of them. But I would happily use them if they were available. I hope this helps.

4 Likes

Anoek, thank you for your positive response. It was quite pleasantly surprising.

I think a good start would be implementing a subset functionality that could then be expanded over time. That way you don’t have to do a complete design right away.

Since browsers already use many shortcut keys, there are two approaches that might be considered:

First, you could bind some key (doesn’t much matter what, maybe Ctrl+G) to make a popup context menu appear, then list on the menu additional keys that can be typed at that point. I think that’s the approach you use in the community forum.

Or second, you could use javascript bound to an outermost window event to detect a set of Control or other keys (I haven’t thought this all through in detail), and execute them in javascript.

Either way, the minimum functionality is to mimic what the mouse can do in normal navigation and game playing:

  • Navigate by keyboard to one of the menu items (OGS down arrow, Home, Play, Games, etc.) – underline the letter to be used with Alt or Ctrl, like in typical menus

  • A keystroke to compose a challenge, and Enter to submit it (Esc to cancel it)

  • Later, some way to choose an existing challenge from the keyboard (Play screen)

  • During a game, typing “E6” or “e6” should place a stone at that position

  • During a game, typing “c” could move the cursor to the Chat edit box

  • Esc or some other key should pause the game; esc again should resume

  • e or some other key should show estimated score

  • r or some other key should resign

  • p or some other key should pass

  • Enter or some other key should agree with the score shown

I may have forgotten something here; try playing with the interface and you’ll quickly discover what basic operations need to be supported in the first release.

BTW, I think this keyboard interface would be easier for many sighted players to use–I would use it instead of a mouse (except for making moves) because it would be faster than using the mouse.

Added: I just saw surema’s post. I think those ideas are good, too. Don’t worry about not pleasing everyone in the first release, because people who care what the keys are will let you know, and you can change them freely. Just provide some central place where the list of shortcut keys will live, so they are easily found.

Thanks in advance for this wonderful addition to this great website.

3 Likes

It looks like we had fairly similar ideas, which is good. Here is a shot at a more coherent and concrete keymap than my previous post (and incorporating ideas above). The main idea would be to use key sequences without modifiers that mostly involve letters to avoid conflicting with other software. Is there a good way to make this not conflict with input boxes?

  • Global shortcuts : g , < action-specific key >
    When a menu is mentioned, the shortcut only needs to focus the first menu element (as navigation can be done with tab/shift-tab when the elements are/contain links), and maybe display the menu if it was hidden.

    • OGS drop-down : g, o
    • Menu bar (top) : g, t
    • Friend list : g, f
    • Game list : g, g
    • Archived games : g, a
    • Reviews : g, r
    • User list : g, u
    • In-game side menu : g, m
    • Search bar (top right) : g, s
    • Next active game : g, n
    • Create challenge : g, k
  • In-game actions :

    • Estimate score : e
    • Focus chat : c
      (getting focus away from chat can already be done with tab)
    • Resign : r
      (with confirmation, as normal)
    • Pass : p
    • Pause : space
      (p is the standard in games, I think, but I can’t find another good one for pass, and space is used in media players for pause so, it is sort of standard)
    • Undo request : u
    • Submit move : s
    • Move (emulates clicking a point on the board) : m , < coordinates > , enter
      (maybe pop up a dialog not over the board or chat to enter the coordinates?)
    • Focus opponent username : o
    • Toggle coordinates : t
  • When a username is focused :

    • Create challenge : k
    • See profile : i
    • Open chat : c
    • Report user : r
    • Moderation control : m

I think that’s it. Hopefully this gives a good base to add/remove/modify from.

Surema, I assume from the way that you wrote this that you are the developer of the OGS software, and may I say that I’m much impressed with the program’s design and reliability of operation.

Yes, I think this is a great base for the keyboard design, although I’d encourage you to test as you implement this, so that you are happy with how it works in each program state or context. I guess that’s already obvious.

I’d recommend that you use a standard function (or a library like jquery) for implementing the event handler for the keyboard, since this is done in different ways in different browsers. Make sure that unhandled keystrokes are sent on to the system for default handling.

I don’t understand your worry about “conflict with input boxes”. If you mean entry of text information, such as into the challenge dialog box and the chat input box, you’ll have to use a Ctrl or Alt key combination so users can get out of them smoothly, I think. Some Alt key combinations are already used by browsers, and you can find which ones by doing a little Web searching. Such standard tasks have already been solved many times and are described on the Web. Maybe that’s obvious, too.

If and/or when you decide to add perfect locking to the program, I can help by supplying a function that does this (although it is written in PHP, which may not be the right language for you). I can also describe what that function does, in words or in pseudocode. Just let me know if or when you want this, since this is likely to require some time beyond these forum postings, and likely require some direct contact between us.

I’m very happy this functionality is being considered for OGS, which is already such a great system.

David Spector
Springtime Software

[quote=“david265, post:6, topic:7622”]
Surema, I assume from the way that you wrote this that you are the developer of the OGS software.[/quote]

Not at all, I’m just a happy user of the website, interested in having keyboard shortcuts, and hoping to help.

What I mean with conflict with input boxes is that I don’t know how event handlers work in browsers, and I wouldn’t be surprised that you have to be explicit about not wanting them to be active when the user is typing in chat or filling fields in the game challenge creation.

Really, I’m just trying to offer ideas, because I am interested in the feature, but maybe I’m being too intrusive.

I don’t feel that you are being intrusive at all. Your design is good and I hope you continue to contribute.

But I’d rather be talking directly to the developer at this point, as I’m somewhat busy.

David

are there keyboard shortcuts these 4 years later?

1 Like