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

Want consistent keybindings (as part of Modernize) #58

Open
masinter opened this issue Oct 27, 2020 · 7 comments
Open

Want consistent keybindings (as part of Modernize) #58

masinter opened this issue Oct 27, 2020 · 7 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@masinter
Copy link
Member

"help wanted" is different than "good first time project". In this case, what we need is someone to research what key bindings are now and what they should be. Also for window actions, menus, etc.

I don't think the fact that Interlisp pre-dated Mac and Windows and Linux UI guidelines is important to preserve

Originally posted by @masinter in #50 (comment)

@masinter masinter added the enhancement New feature or request label Dec 24, 2020
@masinter masinter changed the title set up key bindings to match Mac, Windows, Linux, Emacs (at user's preference Want consistent keybindings (as part of Modernize) Aug 3, 2021
@masinter
Copy link
Member Author

masinter commented Aug 3, 2021

Between TTYIN, sedit, tedit compared to Linux, Mac, Windows, emacs set up user GREET settiable (undoably) consistent set of key bindings. It is impossible to be simultaneously consistent with multiple inconsistent things, but settable key handling should allow these:

  • arrow keys (left, right, up/previous, down/next)
  • DEL as "delete selection" or (if nothing selected) delete forward
  • CR/Enter as (submit line) even if not at end
  • control-A as "select all" or "go to beginning of line"
  • control-K as "delete rest of line"

For extra credit: allow the input stream to be a stdin / pipe and output stream to be a terminal with character IO

@masinter
Copy link
Member Author

@masinter
Copy link
Member Author

those links were pretty useless. Here's the beginning of a chart
https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit#gid=642562870

@masinter
Copy link
Member Author

masinter commented Sep 22, 2022

I made good progress on the keystroke binding table:
https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit#gid=79579844
and found the code for TTYIN which has lots of features I didn't know about, being assigned (hard wired) to odd keystrokes and tied up with some meta-key changes
I found the table of SEdit key bindings nicely organized by function
TEdit key bindings are still to be discovered.
some keystrokes are owned by non-Lisp code (browser for online, windows, etc.)
I tested in -nogreet LISP.Venuesysout. I didn't see cut copy or paste as those are in clipboard.

Next steps

  • validate the information gathered
  • complete the table
  • make ttyin actions assignable
  • (others as possible)
  • settle on at least one but possibly more "consistent key-binding sets"
    for (mac/metakey) (online user) (common lisp/slime) key binding sets
  • document and test

@masinter
Copy link
Member Author

Another source of input, perhaps as much for other issues like the foreign keyboard problems, is the table in Maiko used to populate its key tables
Please review https://github.com/Interlisp/maiko/blob/master/inc/XKeymap.h

It seems this is tuned for situations we don't have, and a solution will require at the very least updating this table.

@masinter
Copy link
Member Author

@nbriggs
Copy link
Contributor

nbriggs commented Sep 29, 2022

When reviewing XKeymap.h, you also need to read the code in https://github.com/Interlisp/maiko/blob/master/src/initkbd.c function make_X_keymap, which starts from the generic mapping in XKeymap.h and produces one specialized for the X server it is running against.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
Status: No status
Development

No branches or pull requests

2 participants