VS code on win 10 - create keybinding for capslock+i/j/k/l to act as arrow buttons - visual-studio-code

I have a 60% mechanical keyboard where the capslock works as an fn button. By pressing FN + i/j/k/l, it works as the arrow buttons.
I would like to replicate this behavior on the laptop's keyboard (for the sake when I don't have the keyboard with me), but by what I saw so far it won't work (sharpkeys and keytweak), so I had hoped to do it at least on the VS code, which is the place where I miss this at most.
I've tried to add it as keybinding on the keybindings.json, but I must be doing something wrong. Does anybody knows if it's possible and how to do it?

Here are some of the things I tried, and the one that "worked":
{
// "key": "shift+capslock shift+i", // works once at a time
// "key": "0x14 + i", // DOESN'T WORK
// "key": "VK_CAPITAL+i", // DOESN'T WORK
// "key": "VirtualKeyCode.VK_CAPITAL+i", // DOESN'T WORK
// "key": "oem_14 i", // DOESN'T WORK
// "key": "[CapsLock]+i", // DOESN'T WORK
// "key": "capsLock+i", // DOESN'T WORK
"key": "capsLock i", // Works one key at a time
"command": "cursorLeft",
"when": "textInputFocus"
},
As you clarified in the comments, an acceptable solution is that you press capslock (and then must release it), then press i to move the cursor one character at a time. I made the command cursorLeft but you can make it whatever you want. It works whether caps are being locked or unlocked at the time.
The gif isn't the best at showing all the keystrokes, but (1) press capslock, (2) release the button, and (3) press i. Repeat.

Related

Skip certain tabs when cycling through them in VSCode

In VSCode, pressing ctrl + pgup and ctrl + pgdn cycles backwards and forwards between tabs, respectively.
However I often have multiple editors opened side-by-side. For example one on the left, which I don't want to change; and one on the right with multiple tabs. I want to cycle through the tabs on the right, without affecting the tab(s) on the left.
Is it possible to change the key bindings above, or introduce new ones, to "skip" certain tabs? For example, to cycle tabs in the current editor only, or skip tabs which are somehow marked.
I found a way: ctrl+k ctrl+pageup and ctrl+k ctrl+pagedown, which correspond to commands workbench.action.nextEditorInGroup and workbench.action.previousEditorInGroup.
I find those combos to be unusable though, so I remapped them in keybindings.json:
{ "key": "ctrl+k ctrl+pagedown", "command": "-workbench.action.nextEditorInGroup" },
{ "key": "ctrl+alt+pagedown", "command": "workbench.action.nextEditorInGroup" },
{ "key": "ctrl+k ctrl+pageup", "command": "-workbench.action.previousEditorInGroup" },
{ "key": "ctrl+alt+pageup", "command": "workbench.action.previousEditorInGroup" },

How to make console and tree "unpinned"?

I want to simulate behavior of WebStorm: when I set console as "Dock Unpinned" it closes if it loses focus. I can press Esc, that switches focus to editor, and the console is closing. The same with the project tree (or "Explorer" in VS Code).
How to copy this behavior?
Give these keybindings a try:
{
"key": "ctrl+`",
"command": "workbench.action.togglePanel",
"when": "panelFocus || editorFocus"
},
{
"key": "ctrl+`",
"command": "workbench.action.maximizeEditor",
"when": "sideBarFocus"
},
{
"key": "ctrl+`",
"command": "-workbench.action.terminal.toggleTerminal"
},
I tried to make various combinations work with esc but there are just too many terminal conflicts with the esc key.
The Ctrl+backtick is interesting since it usually works to toggle the terminal. You don't necessarily need that last disabled keybinding but with toggleTerminal disabled Ctrl+backtick will return you to whichever view in the Panel you were working on previously - like Search, Problems, etc. instead of only to the terminal.
Let me know if this is what you were looking for.

Visual Studio Code: How to define key bindings for page-home and page-end

Whilst coding I frequently find myself needing to jump either to the top or bottom of a file, but I can't find a quick way to do this with a single key stroke. I tried to define a short cut in the key bindings, but I can't find a function like "page-home" and "page-end". I was going to use the alt key with the home button to jump to the top of a page and alt+end for the bottom.
ie I was expecting to be able to define say:
{ "key": "alt+home", "command": "[what is page home command]", "when":
"terminalFocus"}
So, are there such functions page-home/page-end (I may have this wrong, perhaps its defined as something else).
I've spotted a binding for "cmd+home" bound to "workbench.action.terminal.scrollToTop" which sounds like the right function (and a similar one for "cmd+end"), but they don't work.
UPDATE: I've tried to apply changes to the keybindings via the key bindings page, by defining the keystrokes I mentioned before, and it still does not work. Unless I'm doing something wrong, I . think there is a bug that needs to be reported, unless somebody can say otherwise.
Thanks.
The answer is in this GitHub post. The commands you're looking for are cursorTop and cursorBottom.
Open up the command palette (CTRL + SHIFT + P on Windows) and select Preferences: Open Keyboard Shortcuts File
Add in the following settings in keybindings.json:
{
"key": "ctrl+home",
"command": "cursorTop",
"when": "editorTextFocus"
},
{
"key": "ctrl+end",
"command": "cursorBottom",
"when": "editorTextFocus"
}
replacing the key with whatever shortcut you prefer.

How to assign number keys to sublime text keybinding

I want to create a macro in sublime text using the number key on my keyboard. Is this possible?
My attempts have given me these results:
This works for the number 1 key on the keypad but not on the number 1 key on the keyboad
{"keys": ["alt+keypad1"], "command": "run_macro_file", "args": {"file": "Packages/User/action_self.sublime-macro"}}
This works for the f1 key on the keypad.
{"keys": ["alt+f1"], "command": "run_macro_file", "args": {"file": "Packages/User/action_self.sublime-macro"}}
This does not work!
{"keys": ["alt+1"], "command": "run_macro_file", "args": {"file": "Packages/User/action_self.sublime-macro"}}
It seems like the last mentioned should work. Is there a way to use the numbers of the keyboard to run macros?
Any help will be greatly appreciated!
That should work just fine. For example, under Windows/Linux, that key is bound by default to switch to the first tab in the current tab group:
{ "keys": ["alt+1"], "command": "select_by_index", "args": { "index": 0 } },
Possible problems with this include your operating system/window manager seeing the key and handling it before it gets to sublime or having a keyboard layout that makes that key not map to what you think it does.
To check both, open the Sublime console (View > Show Console from the menu or press Ctrl+`) and enter the command:
sublime.log_input (True)
This will make sublime output to the console whenever you press a key. Press Alt+1 and see what it displays in the console.
If nothing displays, something global is eating the key before Sublime gets to see it, which might be a shortcut in your OS of some sort.
Otherwise, it will display what key it thinks you pressed. If it shows you alt+1, then it's seeing the key and your key binding is just not taking effect for some other reason (wrong filename, the command does not do what you think it does, etc) which is a different issue.
If it shows you a key but not what you expect it to be, that's a result of your keyboard layout. In this case you can either switch to a different keyboard layout or just bind with the key as Sublime is reporting it.
Once you're done, you should run sublime.log_input (False) in the console to turn off input logging (or restart Sublime).

Use Keyboard Maestro to move the cursor one space forward

In ST3 (OS X) I use shift+space to move the cursor one space forward, i.e. with something like:
{ "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true} },
I find myself wanting to use this in other applications too. I thought I could use Keyboard Maestro to write a macro that did this, but haven't got very far. Any suggestions?
In Keyboard Maestro there is a 'Simulate Keystroke' action that you could use to do that.
Create a new macro, triggered by 'Hot Key Trigger', and set your hot key.
Add a new action, 'Simulate Keystroke', and set the keystroke.
Here's a screenshot of the test macro I made: