Hotkeys, anyone?

is there a list somewhere of what hotkeys already exist?

I’m dying for increase/decrease grid size hotkey pair.

Not yet.

Good idea, will be available in the next release :slight_smile:


So I have now almost finished the implementation of this feature and thus the list of all commands is complete. I also tried to assign reasonable default shortcuts - thanks a lot to @rapha and @EdizonTN for your suggestions I used for inspiration :tada:

Note that the usage of so many single-key shortcuts (e.g. ‘A’) makes it almost impossible to also use key sequences (like ‘A, R’) since their first key would conflict with the single-key shortcuts :frowning_face: One option would be to use only very few keys as the first key of all the key sequences, and never use these keys as single-key shortcuts (i.e. keep them reserved). In the extreme case this would be only a single key (e.g. the space key) but of course in fact this would make all key sequences longer.

Here the list of all commands, and the status of each shortcut in the last column (? = not fully clear yet). Any comments welcome! I will keep the list up to date by editing this post until the shortcuts are officially implemented.

Click to expand...
Command Description Shortcuts Status
Editor
New Add a new item Ctrl+N :heavy_check_mark:
Open Open the selected item(s) Return :heavy_check_mark:
Save Save changes to filesystem Ctrl+S :heavy_check_mark:
Save All Save all elements to filesystem Ctrl+Shift+S :heavy_check_mark:
Select All Select all visible objects Ctrl+A :heavy_check_mark:
Find Find or filter objects Ctrl+F :heavy_check_mark:
Find Next Go to the next found object F3 :heavy_check_mark:
Find Previous Go to the previous found object Shift+F3 :heavy_check_mark:
Show in File Manager Open directory in the file manager :heavy_check_mark:
Control Panel Bring control panel to front Ctrl+Alt+Home :heavy_check_mark:
Switch Workspace Choose another workspace
Workspace Settings Open workspace settings Ctrl+, :heavy_check_mark:
Rescan Libraries Scan all workspace libraries F5 :heavy_check_mark:
Library Manager Open library manager Ctrl+Alt+M :heavy_check_mark:
Add To Favorites Add project to favorites :heavy_check_mark:
Remove From Favorites Remove project from favorites :heavy_check_mark:
New Library Element Create a new library element Ctrl+N :heavy_check_mark:
Duplicate Create element by duplicating this one Ctrl+D :heavy_check_mark:
New Project Create a new project Ctrl+N :heavy_check_mark:
Open Project Open an existing project Ctrl+O :heavy_check_mark:
Save Project Save the currently opened project Ctrl+S :heavy_check_mark:
Project Settings View/modify the project settings Ctrl+Alt+T :heavy_check_mark:
Project Properties View/modify the project properties Ctrl+Alt+R :heavy_check_mark:
Net Classes View/modify the net classes Ctrl+Alt+N :heavy_check_mark:
Grid Properties View/modify the grid properties F4 :heavy_check_mark:
Layer Stack View/modify the board layer stack setup F6 :heavy_check_mark:
Design Rules View/modify the board design rules F7 :heavy_check_mark:
Design Rule Check Run the design rule check (DRC) F8 :heavy_check_mark:
Update Project Library Update the project’s library Ctrl+F5 :heavy_check_mark:
Schematic Editor Bring schematic editor to front Ctrl+Alt+S :heavy_check_mark:
New Sheet Add a new schematic sheet to the project Ctrl+N :heavy_check_mark:
Rename Sheet Rename current schematic sheet Ctrl+F2 :heavy_check_mark:
Remove Sheet Remove current schematic sheet Ctrl+Del :heavy_check_mark:
Board Editor Bring the board editor to front Ctrl+Alt+B :heavy_check_mark:
New Board Add a new board to the project Ctrl+N :heavy_check_mark:
Copy Board Add a copy of the current board Ctrl+D :heavy_check_mark:
Remove Board Remove the current board Ctrl+Del :heavy_check_mark:
Show All Planes Make filled areas of planes visible :heavy_check_mark:
Hide All Planes Make filled areas of planes invisible :heavy_check_mark:
Rebuild All Planes Re-calculate areas of planes Ctrl+Shift+R :heavy_check_mark:
Import/Export
Import DXF Import a 2D mechanical drawing :heavy_check_mark:
Import EAGLE Library Import library elements from EAGLE *.lbr :heavy_check_mark:
Export *.lppz Archive Export the project as *.lppz archive :heavy_check_mark:
Export Image Export graphics as a pixmap Ctrl+Shift+I :heavy_check_mark:
Export PDF Export graphics as a PDF Ctrl+Shift+P :heavy_check_mark:
Print Send graphics to a printer Ctrl+P :heavy_check_mark:
Generate Bill Of Materials Generate BOM F9 :heavy_check_mark:
Generate Fabrication Data Generate Gerber/Excellon F10 :heavy_check_mark:
Generate Pick&Place Files Generate pick&place files F11 :heavy_check_mark:
Order PCB Start ordering the PCB online F12 :heavy_check_mark:
Modify
Undo Revert the last modification Ctrl+Z :heavy_check_mark:
Redo Re-apply the last reverted modification Ctrl+Y; Ctrl+Shift+Z :heavy_check_mark:
Cut Cut the selected object(s) to clipboard Ctrl+X :heavy_check_mark:
Copy Copy the selected object(s) to clipboard Ctrl+C :heavy_check_mark:
Paste Paste object(s) from the clipboard Ctrl+V :heavy_check_mark:
Move Left Move object(s) to the left Left :heavy_check_mark:
Move Right Move object(s) to the right Right :heavy_check_mark:
Move Up Move object(s) up Up :heavy_check_mark:
Move Down Move object(s) down Down :heavy_check_mark:
Rotate Counterclockwise Rotate selected object(s) counterclockwise R :heavy_check_mark:
Rotate Clockwise Rotate selected object(s) clockwise Shift+R :heavy_check_mark:
Mirror Horizontally Mirror the selected object(s) horizontally M :heavy_check_mark:
Mirror Vertically Mirror the selected object(s) vertically Shift+M :heavy_check_mark:
Flip Horizontally Flip the selected object(s) horizontally F :heavy_check_mark:
Flip Vertically Flip the selected object(s) vertically Shift+F :heavy_check_mark:
Snap to Grid Move selected object(s) onto the grid S :heavy_check_mark:
Reset All Texts Reset texts of footprint to initial state
Properties View/modify the object properties E :heavy_check_mark:
Rename Rename the selected object F2 :heavy_check_mark:
Remove Delete the selected object(s) Del :heavy_check_mark:
View
Zoom to Fit Contents Set zoom level to fit content Ctrl+Home :heavy_check_mark:
Zoom In Increase the zoom level Ctrl++ :heavy_check_mark:
Zoom Out Decrease the zoom level Ctrl+- :heavy_check_mark:
Increase Grid Interval Increase grid interval Ctrl+Shift++ :heavy_check_mark:
Decrease Grid Interval Decrease grid interval Ctrl+Shift+- :heavy_check_mark:
Tools
Select Select & modify existing objects :heavy_check_mark:
Draw Line Draw graphical lines L :heavy_check_mark:
Draw Rectangle Draw graphical rectangles G :heavy_check_mark:
Draw Polygon Draw graphical polygons P :heavy_check_mark:
Draw Circle Draw graphical circles C :heavy_check_mark:
Add Text Add graphical text objects T :heavy_check_mark:
Add Name Add graphical text objects for {{NAME}} N :heavy_check_mark:
Add Value Add graphical text objects for {{VALUE}} V :heavy_check_mark:
Add Pin Add symbol pins I :heavy_check_mark:
Add SMT Pad Add surface mounted copper pads D :heavy_check_mark:
Add THT Pad Add plated through-hole copper pads H :heavy_check_mark:
Add Hole Add non-plated holes (NPTH drills) O :heavy_check_mark:
Draw Wire Draw wires W :heavy_check_mark:
Add Net Label Add net labels N :heavy_check_mark:
Add Component Insert components A :heavy_check_mark:
Draw Trace Draw copper traces W :heavy_check_mark:
Add Via Add plated through-hole vias V :heavy_check_mark:
Draw Plane Draw auto-filled copper areas N :heavy_check_mark:
Commands
Go To Command Toolbar Move focus into command toolbar Tab :heavy_check_mark:
Abort Command Abort the currently active command Esc :heavy_check_mark:
Layer Up Switch to next higher layer (bottom->top) PgUp :heavy_check_mark:
Layer Down Switch to next lower layer (top->bottom) PgDown :heavy_check_mark:
Increase Line Width Increase line/trace/stroke/text width + :heavy_check_mark:
Decrease Line Width Decrease line/trace/stroke/text width - :heavy_check_mark:
Increase Size Increase via/pad/text size * :heavy_check_mark:
Decrease Size Decrease via/pad/text size / :heavy_check_mark:
Increase Drill Increase via/pad/hole drill diameter Home :heavy_check_mark:
Decrease Drill Decrease via/pad/hole drill diameter End :heavy_check_mark:
Toggle Fill Toggle the fill property state F :heavy_check_mark:
Toggle Auto-Width Toggle the auto-width property state . :heavy_check_mark:
Toggle Grab Area Toggle the grab area property state , :heavy_check_mark:
Align Left Horizontal alignment: Left 1 :heavy_check_mark:
Align Center Horizontal alignment: Center 2 :heavy_check_mark:
Align Right Horizontal alignment: Right 3 :heavy_check_mark:
Align Bottom Vertical alignment: Bottom 4 :heavy_check_mark:
Align Center Vertical alignment: Center 5 :heavy_check_mark:
Align Top Vertical alignment: Top 6 :heavy_check_mark:
Horizontal - Vertical Wire mode: First horizontal, then vertical 1 :heavy_check_mark:
Vertical - Horizontal Wire mode: First vertical, then horizontal 2 :heavy_check_mark:
90° - 45° Wire mode: First 90°, then 45° 3 :heavy_check_mark:
45° - 90° Wire mode: First 45°, then 90° 4 :heavy_check_mark:
Straight Wire mode: Straight line 5 :heavy_check_mark:
Round Shape: Round 7 :heavy_check_mark:
Rectangular Shape: Rectangular 8 :heavy_check_mark:
Octagonal Shape: Octagonal 9 :heavy_check_mark:
Components
Resistor Add standard component: Resistor :heavy_check_mark:
Inductor Add standard component: Inductor :heavy_check_mark:
Bipolar Capacitor Add standard component: Bipolar capacitor :heavy_check_mark:
Unipolar Capacitor Add standard component: Unipolar capacitor :heavy_check_mark:
GND Supply Add standard component: GND supply :heavy_check_mark:
VCC Supply Add standard component: VCC supply :heavy_check_mark:
Docks
Pages Go to the pages dock Ctrl+Alt+G :heavy_check_mark:
Electrical Rule Check Go to ERC messages dock Ctrl+Alt+E :heavy_check_mark:
Design Rule Check Go to DRC messages dock Ctrl+Alt+D :heavy_check_mark:
Layers Go to the layers dock Ctrl+Alt+L :heavy_check_mark:
Place Devices Go to the dock for placing devices Ctrl+Alt+P :heavy_check_mark:
Window Management
Next Tab/Page Navigate to the next tab or page Ctrl+Tab :heavy_check_mark:
Previous Tab/Page Navigate to the previous tab or page Ctrl+Shift+Tab :heavy_check_mark:
Close Tab Close the currently opened tab Ctrl+W :heavy_check_mark:
Close All Tabs Close all currently opened tabs Ctrl+Shift+W :heavy_check_mark:
Close Window Close this window Alt+F4 :heavy_check_mark:
Close Project Close the currently opened project Ctrl+F4 :heavy_check_mark:
Close All Projects Close all opened projects Ctrl+Shift+F4 :heavy_check_mark:
Quit Close the whole application Ctrl+Q :heavy_check_mark:
Help
About LibrePCB Show information about the application :heavy_check_mark:
About Qt Show information about Qt :heavy_check_mark:
LibrePCB Website Open LibrePCB website in web browser :heavy_check_mark:
Online Documentation Open documentation in web browser F1 :heavy_check_mark:
1 Like

For the record, the pull request to implement these shortcuts is now open:

Thanks for this new feature.

Just, I want to remind that in human machine interface, most done actions should have easiest ways to do it.
For example, when moving the mouse, the 4 corners of the screen is the 4 fastest points to reach. So you put main actions there.

For shortcuts, big touches are the best for HMI i.e. space, tab, enter and backspace.
It’s why I suggested above to use ‘space’ as rotate shortcut key as is might be the most done action.

Nevertheless I will be able to set it when keys will be configurable, but it will be better for everyone if it was the ‘official’ key.

And also, it would be great if short-keys depends on the context as it will be possible to reuse these keys (and other natural keys).

But it might be not really easy to avoid conflicts.

I think increase/decrease grid interval should be single key hotkeys, but view grid properties could be a ctl modified key. Increase/decrease will get used many times as often.

Other grid related features I would find really useful that would also need hotkeys are:

  • crosshairs (on nearest grid line to mouse) with toggle on/off hotkey
  • nudge selected items one grid space - use arrow keys?

In general I think file management and preference type options don’t need single key hotkeys as they aren’t done so often or repeatedly, but adjusting items in the schematic and board editors do benefit from single key hotkeys.

to conserve keys some items with only a few options could be on a single hotkey that cycles through the options, eg wire mode, there are 4 options, one key that advances through them would do, as it is very quick to press the same key repeatedly.

Personally I don’t find the “Add standard component” features useful at all, I am always placing specific devices from the menu.

Could keys be conserved by making “increase/decrease size of selected item” a function? with one pair of keys that can then be applied to traces, vias, holes, circles etc depending on what is selected.

Generally I agree, but somehow I think ‘r’ for rotate is more intuitive and also consistent with ‘m’ for mirror and ‘f’ for flip. In addition, space might be a good first key if we decide to add key-sequence shortcuts, i.e. any sequence could start with space to avoid conflicts (but of course it makes the sequences longer, I’m not sure if that’s acceptable). Anyway, I’d like to keep space unused for now - we could still add it as a secondary shortcut for rotate some day later.

Technically this is already the case, but unfortunately this is not visible in the shortcut editor. For example the shortcut ‘n’ is used several different things, but each time in a different context: “Add Name” (library editor), “Add Net Label” (schematic editor) and “Draw Plane” (board editor). I’m not fully happy with it, but so far I don’t have a better idea.

Hmm I’m not sure about that… :thinking:

Good idea, but the crosshairs feature would be a totally new feature, thus I won’t include it in this shortcuts feature yet.

Good point as well, I’ll check that :+1:

Hmm yeah sounds reasonable as well!

To be honest, I don’t like the current implementation as well, it is “too hardcoded”. I am thinking more about a more customizable way, or maybe even just a quick access to the recently placed components. Thus maybe it is good anyway to don’t assign keyboard shortcuts to these actions now as they might be removed anyway some day.

I also thought about that, but for example in the “draw trace” tool there are three different sizes configurable at the same time: trace width, via outer size, via drill diameter - thus for now I left these shortcuts separate.

Is there a feature of the grid that you would want to change more often than size? I can sort of understand needing to change between imperial and metric if you have a mix of components, but still not as often as size.

Yes it’s a new feature. Crosshairs should be a really easy feature to add though - as it is purely a visual aid it wouldn’t actually DO anything, so no complex interactions to deal with. So I am hoping it might happen soon. (Of course it would be nice to have the ability to change the colour and line style for the crosshairs, but I wouldn’t want to see that delay a basic implementation.)

I reworked some shortcuts and updated the list in the post above. I think it should be complete now - if there are no objections, I’ll merge the opened PR soon to add all these shortcuts.

I don’t understand how this question is related to whether grid increase/decrease should be a single key shortcut - maybe we are talking about different things. The grid unit has no shortcut at all, there are only shortcuts to increase/decrease the grid interval, and one shortcut to open the grid properties.

Possible single key shortcuts are more limted in number. So only the most used functions should be single key, and the less used functions should be modifier key shortcuts.

I was contending that change grid size would get used a lot so should be single key, wheras, if the change size shortcut exists then the grid properties dialog doen’t need to be opened very often so does not need to be single key. But it is listed as 3 key for change size and single key for the open dialog. So that’s the wrong way round for the way I would use it.

There’s quite a few other single key shortcuts there that I would rarely use and would be quite happy if they used modifier keys.

However I’m sure everyone uses the application differently - so it’s hard to tell what would suit the most people, which is why you are planning to add customisation - so in the long run i guess it doesn’t matter!

1 Like

@parenthetical I see your point - IMHO the current grid increase/decrease shortcuts are easier to memorize since they are very similar to zoom in/out. I think I’ll leave it this way unless more users think it should be changed.

Anyway, I am now even implementing a keyboard shortcut reference PDF export to allow printing or viewing the configured shortcuts in a neat overview. Here’s the current state:

3 Likes

That reference PDF is awesome :slightly_smiling_face:

1 Like

I’m a bit late (didn’t see this discussion before), but some thoughts:

  • The “Add Pin” functionality will probably be used more often than “Add Polygon”. So maybe the pin should be “P” and the polygon “Y”?
  • For adding components, maybe we should use prefixed sequences? For example “Q R” for resistor, “Q I” for inductor, “Q B” for bipolar capacitor, “Q U” for unipolar capacitor, “Q G” for GND and “Q V” for VCC?

Too late, PR is merged :see_no_evil:

I’m not sure how we should proceed with the shortcuts now. Maybe just collecting any further change requests here in this thread and then (if needed) make a PR before creating the next release…

As I wrote in a post above, I want to change the concept of the hardcoded components toolbar anyway and thus didn’t assign shortcuts for now. But if the new concept is not ready for the next release, maybe we should still add (temporary) shortcuts :thinking:

Yeah, that makes sense. I’ll try to test the development version sometime to see whether the current shortcuts make sense. Other people are welcome to test as well!

2 Likes

Sorry, if possible, please add option to change mouse settings.
For example, when installing components into a sch, the right mouse button cancels the operation = ESC

1 Like

You could remove the focus on the value input field after entering the value (value+enter). Putting the focus on the value input field could also be an option (when placing, after placing, off).

Hmm yeah that would be possible, but the “problem” is now much smaller anyway because in the latest release the focus is not moved to the input field anymore when adding components - one has to press tabulator to get the focus there, and can also be used to move focus back to the schematic.