Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keyboard shortcuts customization #747

Closed
4sfaloth opened this issue Oct 1, 2019 · 20 comments
Closed

Keyboard shortcuts customization #747

4sfaloth opened this issue Oct 1, 2019 · 20 comments
Labels
enhancement New feature or request

Comments

@4sfaloth
Copy link

4sfaloth commented Oct 1, 2019

Hi all,

this is just a feature suggestion I thought might be useful.

Are there any plans on allowing users to customize the keyboard shortcuts? I feel like I it would be considerably easier to perform annotation tasks if one could adapt the shortcuts for each task

@nmanovic nmanovic changed the title Customize keyboard shortcuts (feature suggestion) Keyboard shortcuts customization Oct 2, 2019
@nmanovic nmanovic added the enhancement New feature or request label Oct 2, 2019
@nmanovic nmanovic added this to the Backlog milestone Oct 2, 2019
@mistermult
Copy link

@nmanovic I'm interested in implementing custom shortcuts. However, I'm not sure what's best.

  1. User Shortcuts: Each user can define its own shortcuts. Shortcuts are saved in the DB and loaded when the Annotation Editor starts. The shortcuts from the DB override the default shortcuts in the GUI. This allows to use the GUI without the DB. In the main menu, add a React-GUI to change the shortcuts. The React-Component can later be reused in the Annotation Editor when it is migrated to React.
  2. Shortcut Presets for Tasks: The Admin (or other authorized) persons can create shortcut presets in a React GUI from the main menu. When creating the task, one can select the shortcuts for this task. In the editor one can switch to other shortcut presets (maybe with a fixed shortcut or with a drop down window in the setting page). The shortcuts are global and each user has the same.

I hope I can get your ideas or preferences on this topic.

@nmanovic
Copy link
Contributor

@mistermult , great news! Sorry for delay with your previous PR. We definitely will integrate it in the future. Now we are busy with the new UI.

I prefer the option #1. CVAT should have some settings per user (serialize/deserialize arbitrary JSON configuration into a DB table = (user_id, json_settings)). I don't think that it makes sense to have presets for a task. If a user has own settings they will be used otherwise default settings applied (shortcuts, options, theme, ...). What do you think?

@mistermult
Copy link

mistermult commented Jan 30, 2020

@nmanovic First, @4sfaloth mentioned task specific shortcuts. But I agree that shortcuts per user (or default vales) sound better for me.
Saving an arbitrary JSON was my first idea. However, then migration, e.g. changing the names for shortcuts, might be little harder but still possible. So the alternative would be a table (user_id, shortcut_id, keys). If you don't have any objection, I'll go with JSON.

@nmanovic
Copy link
Contributor

@mistermult , for tasks we can implement in the future. It can be a cascade scheme (default settings -> user settings -> task settings). Let's implement UserSettings = (user_id, settings) table where settings string is a json string. REST API could be /api/v1/users/{id}/config with GET, PATCH, DELETE, PUT methods. JSON settings should have a special key "shortcuts": { "name1": "shortcut1", ... }. Thus in the future we will use the approach as well to keep other settings.

@bsekachev , could you please give us some hints how to implement shortcuts in the new UI?

@bsekachev
Copy link
Member

@mistermult

Hi, we are going to replace legacy annotation view with a React based single page application soon.
Basic work with the new annotation view is complete. The latest version always can be found in the branch bs/cvat_ui and we merge it to develop regularly.

Now the UI doesn't have any shortcuts and you would help us with it.
Here are some ideas about client implementation:

  1. We have a settings page, where we can add additional tab with shortcuts settings.
    Screenshot from 2020-01-30 11-09-11

Something like:
Action 1: [Ctrl + A]
Action 2: [Ctrl + C]

  • Reset default button
  1. When user changes a shortcut (by focusing an input field and entering keys), the shortcut is updated in redux storage and sent to the server as a JSON in PATCH request (server combines the JSON with saved in DB JSON), CVAT setups event listeners

  2. On clicking reset default button, CVAT gets default shortcuts from redux state, saves them on the server and setups event listeners

  3. When CVAT is being loaded with an authorized user, CVAT requests shortcuts from the server, saves them in redux state and setups event listeners

  4. I haven't investigated deeply yet, but there should be ready react libraries for that react-hotkeys or react-shortcuts.

@bsekachev
Copy link
Member

@mistermult

Hi,
Any news here?

@celhannah
Copy link

Is there any update on user customizable shortcuts?

@jnothman
Copy link

It seems to me that there is sense in allowing task-specific shortcuts, for instance, to allow a shortcut that creates a rectangle with a particular label.

@Meriipu
Copy link

Meriipu commented Aug 12, 2021

It seems to me that there is sense in allowing task-specific shortcuts, for instance, to allow a shortcut that creates a rectangle with a particular label.

you can do ctrl+1 to at least ctrl+5 to change the default label rect (e.g for the next one)

or you can do ctrl+1 to ctrl+5 while hovering a rect to change it

@Meriipu
Copy link

Meriipu commented Aug 12, 2021

personally I would benefit from shortcuts to select region of interest (zoom) but none are configured atm

@bsekachev
Copy link
Member

bsekachev commented Aug 13, 2021

personally I would benefit from shortcuts to select region of interest (zoom) but none are configured atm

@Meriipu
Just interested, why not to use mousewheel? Actually it has the same meaning (zoom in/out with keeping cursor position at the center)

@Meriipu
Copy link

Meriipu commented Aug 13, 2021

personally I would benefit from shortcuts to select region of interest (zoom) but none are configured atm

@Meriipu
Just interested, why not to use mousewheel? Actually it has the same meaning (zoom in/out with keeping cursor position at the center)

the scroller on my mousewheel is broken so I realize that is a bit unique

@Meriipu
Copy link

Meriipu commented Aug 13, 2021

Additionally I often use a graphics tablet combined with a keyboard key bound to left-click to annotate as 4-point annotation is a bit smoother that way, and I do not have a scroll-wheel on the tablet.

@nmanovic nmanovic removed this from the Backlog milestone Nov 28, 2021
@doctorcolossus
Copy link

doctorcolossus commented Jan 28, 2022

I would also like this. I usually use my laptop's trackpad, rather than a mouse. If I only needed to draw one or two bounding boxes, it would be no biggy, but when it comes to annotating hundreds or thousands of images, CVAT causes me a lot of pain. Having used AutoCAD and GIMP extensively, it's very frustrating to me that CVAT offers no keyboard controls for panning or zooming.

@timurlenk07
Copy link
Contributor

timurlenk07 commented Mar 26, 2022

I would also be interested in this feature. In our use case, certain attributes of tags should be updated on a hotkey press (for instance, tick/untick a checkbox), which would help us to be more performant.

What is the current situation on this feature request? Does it have a planned feature launch date yet? @bsekachev

@dudulasry
Copy link

I'd also love to see shortcuts customization in CVAT. The current setup is not very convenient for me.

@WilberRojas
Copy link

Is this issue like a feature request? I see that it has been open for a long time, and I was just looking for how to customize the keyboard shortcuts to my liking. I made a simple sketch of what I personally think would be a convenient and easy to understand menu.

my suggestion is to have a tab in settings where we can configure all these shortcuts, something like this but more aesthetic:
image

@bsekachev bsekachev mentioned this issue Jan 5, 2024
2 tasks
@Vidit-Kushwaha
Copy link

Hi Maintainer,

I'm writing to inquire about the status of the project that I found on the Google Summer of Code (GSoC) website.

I'm interested in potentially contributing to this project, but I'd like to confirm if it's still actively maintained and accepting contributions.

@nmanovic
Copy link
Contributor

Hi, please find our application on the GSoC and contact us using of mentioned ways. We will guide you. https://summerofcode.withgoogle.com/programs/2024/organizations/cvat

@danishzulfiqar
Copy link

Hi all,

I am interested in this project, should I contact using email?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

No branches or pull requests