How to assign number keys to sublime text keybinding - macros

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).

Related

VSCode keyboard shortcut to go to split windows using the side numeric keypad (and/or top number bar)

I want to use the keyboard to go from split window 1 to 2 to 3 etc.
I know I can press command+1, command+2, command+3 using the numbers at the top of the keyboard.
But his only works for number bar on top, it does not work with the number pad
These keys are accepted:
numpad0-numpad9, numpad_multiply, numpad_add, numpad_separator
numpad_subtract, numpad_decimal, numpad_divide
So you would need to make your keybindings with those keys:
{
"key": "cmd+numpad0",
"command": "workbench.action.openEditorAtIndex1",
"when": "editorTextFocus"
}
You may be able to do this simply with the context menu command Add Keybinding... on each of the commands, like workbench.action.openEditorAtIndex1 you find in the Keyboard Shortcuts list. And then use your numpad keys and see what it adds to your keybindings.json file.
see keybindings - accepted keys

Can VS Code input text when I type a rapid shift shift sequence?

So, my new keyboard doesn't have the pipe key, and I use it frequently (I'm learning elixir right now). I know that alt + 124 produces |, but it is a bit annoying to type it every time I want to use |> on elixir.
Is it possible to configure a shortcut (thought about something like shift shift) to insert |> in the editor?
Microsoft has its own tool to create custom layouts.
Microsoft Keyboard Layout Creator 1.4 Download.
Here is a brief how-to gracefully stolen from MakeUseOf
Open the Microsoft Keyboard Layout Creator app.
Head to File > Load Existing Keyboard.
Pick the layout you want to customize. You should make sure you pick the layout that matches your current keyboard setup, for example, QWERTY (U.S.).
Go to File > Save Source File As so you have a backup before you start making changes.
Set your new keyboard’s parameters in Project > Properties. You can pick a language and give the keyboard a name and description.
Click on a key and follow the on-screen prompt to remap it to a character of your choosing.
Assigning control keys combinations to input letters is not possible, AFAIK. Just set it so Shift+Something or to any 3rd level key. BTW, I am pretty sure your current 3rd level already has a pipe, to test it press the right Alt (also called AltGr) and press all the alphanumeric keys.
{
"key": "shift shift",
"command": "type",
"args": {
"text": "|>"
},
"when": "editorTextFocus"
}
Looks like using two modifier keys in rapid sequence will work soon. Commit merged: see Feature: Shift Shift, Ctrl Ctrl, Alt Alt Keybinds (Double press modifer keybind support)
Will be in v1.54 - works in the Insiders Build now.
You can define a keyboard shortcut
{
"key": "shift+alt+p",
"command": "type",
"args": { "text": "|>" },
"when": "editorTextFocus"
}
You can choose any key combo you like, see the docs

How can I write specific words on terminal( mainly GIT)?

When We press the uparrow button. it types "code.". can we write other words when we press some key? I want to write ./a.exe on the terminal when pressing some key. How can we do so in Visual studio code?
The integrated terminal inside the VS Code is very much customizable when it comes to key bindings. The official documentation says:
The workbench.action.terminal.sendSequence command can be used to send
a specific sequence of text to the terminal, including escape
sequences. This enables things like sending arrow keys, enter, cursor
moves, etc. The example below shows the sorts of things you can
achieve with this feature, it jumps over the word to the left of the
cursor (Ctrl+Left arrow) and presses backspace:
{
"key": "ctrl+u",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;5D\u007f" }
}
This feature supports variable substitution.
Note that the command only works with the \u0000 format for using
characters via their character code (not \x00).

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 do I set a key bind with context to hide the bottom output panels?

Currently the default hotkey is Ctrl+J and it works to toggle (show and hide) any panel that may be occupying the space (Output, Terminal, etc.)
What I want to do is make Esc the hotkey to only hide the panel if already shown (not toggle). This is what I have right now in keybindings.json, but of course it will toggle the panel back and forth.
{ "key": "escape", "command": "workbench.action.togglePanel" }
Is there a "when" context I can use that states the panel being shown so I can have this hotkey only work when shown?
{ "key": "escape", "command": "workbench.action.togglePanel",
"when": "__________??______________" }
If not "when", is there a "command" that only closes active panel instead of toggle? Thanks.
No, there is no when condition which indicates the panel's visibility. Even if there would be such a condition and you'd bind Esc to workbench.action.togglePanel then you would probably get conflicts with other commands bound to Esc as their when conditions could be fulfilled at the same time.
The default keybindings (at least on a Windows machine) contain 15 commands bound to Esc in different conditions. I guess it's much easier to use CTRL+j for toggling the panel then adjusting the when conditions for all the other 15 keybinds in order to get the behaviour you want in all cases.