Skip to content

Commit

Permalink
[GSoC'24] Keyboard Shortcuts Customization, Documentation (#8345)
Browse files Browse the repository at this point in the history
  • Loading branch information
tahamukhtar20 authored Aug 31, 2024
1 parent 579ea7f commit f36f18e
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 71 deletions.
132 changes: 61 additions & 71 deletions site/content/en/docs/manual/advanced/shortcuts.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,79 +2,69 @@
title: 'Shortcuts'
linkTitle: 'Shortcuts'
weight: 23
description: 'List of available mouse and keyboard shortcuts.'
description: 'List of available keyboard shortcuts and notes about their customization.'
---

Many UI elements have shortcut hints. Put your pointer to a required element to see it.
CVAT provides a wide range of customizable shortcuts, with many UI elements
offering shortcut hints when hovered over with the mouse.

![](/images/image075.jpg)

| Shortcut | Common |
| -------------------------- | -------------------------------------------------------------------------------------------------------- |
| | _Main functions_ |
| `F1` | Open/hide the list of available shortcuts |
| `F2` | Go to the settings page or go back |
| `Ctrl+S` | Go to the settings page or go back |
| `Ctrl+Z` | Cancel the latest action related with objects |
| `Ctrl+Shift+Z` or `Ctrl+Y` | Cancel undo action |
| Hold `Mouse Wheel` | To move an image frame (for example, while drawing) |
| | _Player_ |
| `F` | Go to the next frame |
| `D` | Go to the previous frame |
| `V` | Go forward with a step |
| `C` | Go backward with a step |
| `Right` | Search the next frame that satisfies to the filters <br> or next frame which contain any objects |
| `Left` | Search the previous frame that satisfies to the filters <br> or previous frame which contain any objects |
| `Space` | Start/stop automatic changing frames |
| `` ` `` or `~` | Focus on the element to change the current frame |
| | _Modes_ |
| `N` | Repeat the latest procedure of drawing with the same parameters |
| `M` | Activate or deactivate mode to merging shapes |
| `Alt+M` | Activate or deactivate mode to splitting shapes |
| `G` | Activate or deactivate mode to grouping shapes |
| `Shift+G` | Reset group for selected shapes (in group mode) |
| `Esc` | Cancel any active canvas mode |
| | _Image operations_ |
| `Ctrl+R` | Change image angle (add 90 degrees) |
| `Ctrl+Shift+R` | Change image angle (subtract 90 degrees) |
| | _Operations with objects_ |
| `Ctrl` | Switch automatic bordering for polygons and polylines during drawing/editing |
| Hold `Ctrl` | When the shape is active and fix it |
| `Alt+Click` on point | Deleting a point (used when hovering over a point of polygon, polyline, points) |
| `Shift+Click` on point | Editing a shape (used when hovering over a point of polygon, polyline or points) |
| `Right-Click` on shape | Display of an object element from objects sidebar |
| `T+L` | Change locked state for all objects in the sidebar |
| `L` | Change locked state for an active object |
| `T+H` | Change hidden state for objects in the sidebar |
| `H` | Change hidden state for an active object |
| `Q` or `/` | Change occluded property for an active object |
| `Del` or `Shift+Del` | Delete an active object. Use shift to force delete of locked objects |
| `-` or `_` | Put an active object "farther" from the user (decrease z axis value) |
| `+` or `=` | Put an active object "closer" to the user (increase z axis value) |
| `Ctrl+C` | Copy shape to CVAT internal clipboard |
| `Ctrl+V` | Paste a shape from internal CVAT clipboard |
| Hold `Ctrl` while pasting | When pasting shape from the buffer for multiple pasting. |
| `Ctrl+B` | Make a copy of the object on the following frames |
| `Ctrl+(0..9)` | Changes a label for an activated object or for the next drawn object if no objects are activated |
| | _Operations are available only for track_ |
| `K` | Change keyframe property for an active track |
| `O` | Change outside property for an active track |
| `R` | Go to the next keyframe of an active track |
| `E` | Go to the previous keyframe of an active track |
| | _Attribute annotation mode_ |
| `Up Arrow` | Go to the next attribute (up) |
| `Down Arrow` | Go to the next attribute (down) |
| `Tab` | Go to the next annotated object in current frame |
| `Shift+Tab` | Go to the previous annotated object in current frame |
| `<number>` | Assign a corresponding value to the current attribute |
| | _Standard 3d mode_ |
| `Shift+Up Arrow` | Increases camera roll angle |
| `Shift+Down Arrow` | Decreases camera roll angle |
| `Shift+Left Arrow` | Decreases camera pitch angle |
| `Shift+Right Arrow` | Increases camera pitch angle |
| `Alt+O` | Move the camera up |
| `Alt+U` | Move the camera down |
| `Alt+J` | Move the camera left |
| `Alt+L` | Move the camera right |
| `Alt+I` | Performs zoom in |
| `Alt+K` | Performs zoom out |
These shortcuts are organized by scopes. Some are global, meaning they work across the entire application,
while others are specific to certain sections or workspaces.
This approach allows reusing the same shortcuts in different scopes, depending on whether they might conflict.
For example, global shortcuts must be unique since they apply across all pages and workspaces.
However, similar shortcuts can be used in different workspaces, like having the same shortcuts
in both the Standard Workspace and the Standard 3D Workspace, as these two do not coexist.

| **Scope** | **Shortcut Conflicts** |
|----------------------------------|---------------------------------------------------------------------------------|
| **Global** | Must be unique across all scopes, as they apply universally. |
| **Annotation Page** | Must be unique across all scopes, except Labels Editor. |
| **Standard Workspace** | Must be unique across itself, Annotation Page and Global Scope. |
| **Standard 3D Workspace** | Must be unique across itself, Annotation Page and Global Scope. |
| **Attribute Annotation Workspace** | Must be unique across itself, Annotation Page and Global Scope. |
| **Review Workspace** | Must be unique across itself, Annotation Page and Global Scope. |
| **Tag Annotation Workspace** | Must be unique across itself, Annotation Page and Global Scope. |
| **Control Sidebar** | Must be unique across itself, all workspaces, Annotation Page and Global Scope. |
| **Objects Sidebar** | Must be unique across itself, all workspaces, Annotation Page and Global Scope. |
| **Labels Editor** | Must be unique across itself and Global Scope. |

## Shortcuts Customization

You can customize shortcuts in CVAT settings.

- Open Settings:\
![](/images/shortcuts01.png)

- Go to the Shortcuts tab:\
![](/images/shortcuts02.png)

- You'll see the shortcuts customization menu:\
![](/images/shortcuts03.png)

- As it can be seen there is a warning, that some shortcuts are reserved by a browser and cannot be overridden in CVAT,
there isn't a specific list available for such combinations, but shortcuts such as ctrl + tab (switching tabs) or
ctrl + w (closing tabs) etc, are reserved by the browser and shortcuts such as alt + f4 (closing the window)
are usually reserved by your operating system.

- All sections collapsable, so you can easily navigate through the list of shortcuts.
Here is the Global scope expanded:\
![](/images/shortcuts04.png)

- To add a custom shortcut all you have to do is to click the input field and start pressing the sequence you want
to assign to the action. As an example `f3` has been set here for Show Shortcuts along with `f1`:\
![](/images/shortcuts05.png)

- Shortcuts can be any combination of modifiers (ctrl, shift or alt) and up to one non-modifier key e.g. `ctrl+shift+f1` etc.\
![](/images/shortcuts06.png)

- If you try to add a shortcut that is already in use, you will get a warning message:\
![](/images/shortcuts07.png)

- If pressed cancel it will remain the same otherwise the conflicting shortcut will be unset.\
![](/images/shortcuts08.png)

- If you want to reset all the shortcuts to default, you can do so by clicking the
Restore Defaults button at the top of the shortcut settings.\
![](/images/shortcuts09.png)
Binary file added site/content/en/images/shortcuts01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts03.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts04.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts05.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts06.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts07.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts08.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/content/en/images/shortcuts09.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit f36f18e

Please sign in to comment.