Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
New keybindings #143
New keybindings #143
Changes from all commits
d763b58
897ce06
855fa87
be36e09
0821d6e
bfd320d
9830617
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In WMoveResize mode, AnyModifier+Escape is bound to cancel resizing.. Does this still work if (ALT)META.."Escape" is bound to switch screens?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it does look like it (but I don't have a second monitor handy to really test this right now)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a link to the documentation for _chld, _sub and _ in the context of keybinding config would be really helpful here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about META..[F1…F9] to change workspaces and META..[1…9] to change client windows (or the other way around because changing workspaces is probably used more often and thus should be closer to the home row)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The general concept is:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I usually have less than 10 screens but more than 5 tabs. F1…12 is a second range of consecutive number keys, I'd say it would be best to use them as such, with everything else on the keyboard being random letters, some of which we might want to use as a mnemonic (the way vim does, "o"=open, "a"=append etc.), which makes it complicated to allocate let's say the whole Q…P row for tab 1…n (besides, those keys are usually shuffled around pseudorandomly in a non-US-keymap).
After all, the keyboard layout is the first thing a new user sees about notion, so I feel it should be as memorable as possible in order to make it easy to get going (this is why I'm proposing "A" for "attach" again).
I'm also a bit conflicted about the META.."K" submap in general, it seems this was used as a place for everything that didn't fit anywhere else (like C-x in emacs), and does not have any meaning? I think it would make more sense to have submaps (if we're going to have any at all in the new keybinding setup) to operate on a type of object, like tabs, e.g. all tab keybindings in META.."T", all workspace keybindings in META.."W", all "go to window by property" (urgent or title) in META.."G" and so on?
Just my two cents, feel free to do something else entirely ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe META.."`" could be the submap for whatever object is going to be on META..[0…9] (workspaces)
and META.."Escape" could be the submap for whatever object is going to be on META..[F1…F12] (screens or windows?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! I really value the discussion, even though I've been experimenting with this for a while so there are some concepts that I'm reluctant to change :)
I agree (I wonder if some companion app like #112 could help here, too)
Part of idea behind this binding is that all basic 'direct' keys are at the left hand (navigation, fullscreen, scratchpad, etc), and more rarely used keys (e.g. anything that opens a query) are at the right hand. I think this would greatly improve how memorable the keys are. I agree using mnemonics is a useful tool as well, but I think that should be a secondary concern.
vim is a bit of an unfortunate example, with hjkl having special meaning there :)
This is definitely a downside, but I think we should just leave it up to the community to come up with bindings for use with different keymaps.
I'm not a fan either. I wonder if we could get away with putting everything under
META
andMETA+Shift
and dropMETA+K
entirely.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For those I had in mind 'next' (so
META+Escape
=next screen, META+`=next ws,META+Tab
=next frame,META+CapsLock
=next tab)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand. I'm most likely not going to use this new setup (except for parts that I like more than what we had in my own modified version of the notion3 standard keymap) because I don't like changing my habits for no good reason, but I think new users should have it easy. If you think you have that figured out, I'm not going to cause you some bikeshed discussion about it.
I think so.
vimtutor
helped me getting started with vim, at least. This would be very easy to integrate into notion on first start thanks to the lua interface. "Would you like to try the tutorial mode? (y/n)".I'm inclined to say that mnemonics and similarity to other tools (something that old-school *nix generally does rather badly compared to, say, OS X) help me more than anything else getting used to another keyboard-driven program with a very full keymap. (YMMV and actually I'd be interested in what helps you personally grok a new tool.)
Back in the day computers did not have arrow keys (and we had to walk uphill to school both ways—kidding, I'm not old enough to have witnessed this).
Other than hjkl, vi's keyboard layout mostly makes sense imo, and is a good example for keyboard-driven software (albeit taking some time getting used to), perhaps because it has had some level of influence on the rest of the *nix software ecosystem over the decades.
Makes sense this way as well.
I trust you to make the right decisions, and maybe there isn't much value in "adding my own mustard" as we say here.