amibiz / ergo-keys Goto Github PK
View Code? Open in Web Editor NEWSupercharge your productivity with the most efficient keybinding for Intellij family of IDEs
License: BSD 2-Clause "Simplified" License
Supercharge your productivity with the most efficient keybinding for Intellij family of IDEs
License: BSD 2-Clause "Simplified" License
xah-fly-keys recommends mapping the Capslock key to << Home >> and binding << Home >> to Command mode.
It makes things a lot easier and it would be really handy if I could switch to the command mode with CapsLock.
Thanks.
After removing the plugin, if a custom keymap was created based on the plugin keymaps, an error notification is shown
Because the cloned keymap uses the ErgoKeys (QWERTY) keymap as parent, after uninstalling the plugin, IntelliJ can not find the parent keymap and shows the error notification.
Steps to reproduce:
Workaround: delete any custom keymap based on the plugin before/after removing the plugin
Related to #30
In version 1.14, pressing the Enter key in Command mode starts a new line.
But in versions >=1.15 the same action is missing.
I wanted to reproduce vim's exit from insert mode by pressing escape key, but I can't seem to do so.
I've added a custom binding for Command Mode to do that (I've had to do it directly in file), but Pressing escape does nothing. I've also removed all other mappings for escape key, but nothing changed.
Binding Insert Mode to Escape has some weird consequences too: insert mode is entered, but only after second press.
Can Escape a viable key for command mode/insert mode?
Middle click (or Ctrl+Click) on an identifier no longer goes to declaration/usages if you're in command mode
Command mode auto exit after escape from pop up float windows which open by commands that like Shift,Shfit
or Space, Comma
.
Is this a bug or a expected behavior?
List all supported key bindings (with examples) in the README.
Command mode shortcut Alt+Space
doesn't work on windows 10. It triggers the OS window menu (with Restore, Move, etc).
Currently, the key bindings are coded at compile time. This feature will let the user customize the key bindings.
Note that changing the default key binding for entering command mode, ALT + SPACE
, is possible in Settings / Keymap.
Some keyboards have a split space bar with one acting as backspace and the other as space.
Add a toggle that lets the user activate the backspace key as an additional leader key in CMD mode.
Add support for Programmer Dvorak keyboard layout.
See: https://www.kaufmann.no/roland/dvorak/
Implementation notes:
ErgoKeys (Programmer Dvorak).xml
.ErgoKeys (Dvorak)
as the parent keymap in the new keymap xml.How to reproduce:
Expected:
When the dialog is open switch to INS mode.
Hello! Thank you for the great plugin.
Coming from emacs I was excited to see someone had implemented modal key bindings.
I can't seem to find the list of keybindings? And is it possible to change what command the keys bind to?
Add the default shortcuts (e.g. Ctrl+N
for go to class) in command mode.
When in CMD mode and calling search everywhere with Shift + Shift
or run anything with Ctrl + Ctrl
,
the keys i j k l
do not insert the corresponding characters (still bound to CMD mode).
Need to detect that the user focus is away from the editor and change to INS mode.
This plugin is great! I am just having some trouble using it in the new jupyter notebook interface (PyCharm 2021.3.3 (Professional Edition)).
The command mode does not seem to work in this interface. While it seems as though it is possible to enable it, none of the commands work and it cannot be disabled again. Perhaps this is due to interference from the jupyter command mode?
This plugin isn't compatible with the latest IntelliJ and Rider versions (2022.3.*). Could you publish an update?
There is a problem with command-mode custom keybindings that open pop-up windows or menus. The menu or window will open but I will be stuck on command-mode with the key to switch to insert-mode not working. Basically, we need to switch to insert-mode before performing the action. I think you have also ran into this problem and that's why this piece of code exists:
if (action.getClass().equals(SearchEverywhereAction.class) ||
action.getClass().equals(RunAnythingAction.class) ||
action.getClass().equals(IncrementalFindAction.class) ||
action.getClass().equals(FindInPathAction.class) ||
action.getClass().equals(ViewStructureAction.class)) {
final Editor editor = dataContext.getData(CommonDataKeys.EDITOR);
activateInsertMode(editor);
}
This fixes the issues for these specific actions, but obviously can never cover all the different actions I want to bind to keys.
This is my current minimal solution:
EditorFactory.getInstance().addEditorFactoryListener(
new EditorFactoryListener() {
@Override
public void editorCreated(@NotNull EditorFactoryEvent event) {
Editor editor = event.getEditor();
+
editor.getContentComponent().addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent focusEvent) {
- LOG.debug("focusGained: focusEvent=", focusEvent);
- editor.getSettings().setBlockCursor(inCommandMode());
+ LOG.debug("focusGained: focusEvent=", focusEvent.toString());
+
+ EditorComponentImpl e = (EditorComponentImpl)(focusEvent.getSource());
+ VirtualFile f = e.getEditor().getVirtualFile();
+ // No file name. Assume it is not the "main" editor windows where user modifies code.
+ if(f != null){
+ activateCommandMode(editor);
+ }
}
@Override
public void focusLost(FocusEvent focusEvent) {
LOG.debug("focusLost: focusEvent=", focusEvent);
- lastEditorUsed = editor;
+ // Will we need this?
+// lastEditorUsed = editor;
+ activateInsertMode(editor);
}
});
}
I have been using this for a while and seems to work well. Other approaches that I tried had corner cases I couldn't easily handle. I have a fork of this repo but it is cumbersome to maintain and merge new changes.
I'd be happy to make a PR with these changes if there is interest? Thanks
First of all thanks for writing this plugin.
I've started using it today and am liking it. I've also noticed the following problems:
I think we can live with most of these issues but the first one would definitely need to be fixed, if possible. As neither of mouse-based and keyboard-based input mode can ever totally replace one another, any software should provide optimal support for both.
Also, I created a visual layout of the plugin's Keymap on keyboard-layout-editor.com, as a way to help familiarise myself quickly with it: ErgoKeysV0. Might come in handy for other new users.
(#29) Opening the builtin terminal while in command mode does not automatically switch to insert mode and will also prevent switching to it, forcing the user to switch back to the editor in order to change the keymap.
Add binding to select all in CMD mode.
Add binding to insert space in CMD mode without switching to INS mode, press the space bar and back to CMD mode.
Customizing Command mode key binding is done using the IDE keymap settings.
Unfortunately, it is not documented in the README or anywhere else.
Ref: #39
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.