Skip to content

Using different shortcuts / keybinds / keymaps set in different profiles #18601

@repackage8650

Description

@repackage8650

Description of the new feature

I have seen that there are demands for switching shrotcuts / keybinds / keymaps sets in #9301 and #15277, which I think this is because people are used to different shrotcuts / keybinds / keymaps when working in different profiles, so that I think it would be an effective solution if the shrotcuts / keybinds / keymaps set can be specified in the profile.

Proposed technical implementation details

A simple and specific idea is as follows: move the current actions options to the default profile as default actions, and allow each profile to override the default actions, such as overriding unnecessary actions to null or adding keybinds for new actions.
The new settings.json will look like this:

{
    ...,
    "actions": 
    [
        {
             "command": "ACommandName",
             "id": "User.a" 
        },
        {
             "command": "BCommandName",
             "id": "User.b" 
        },
        {
             "command": "CCommandName",
             "id": "User.c" 
        },
        {
             "command": "DCommandName",
             "id": "User.d" 
        },
        ...
    ],
    ...,
    "profiles": 
    {
        "defaults": 
        {
            ...,
            "keybinds": 
            [
                {
                    "id": "User.a",
                    "keys": 
                    [
                        "ctrl+a"
                    ]
                },
                ...
            ]
        },
        "list": 
        [
            {
                "commandline": "%ProgramFiles%\\Neovim\\bin\\nvim.exe",
                "guid": "{00000000-0000-0000-0000-000000000000}",
                "hidden": false,
                "icon": "%ProgramFiles%\\Neovim\\bin\\neovim.png",
                "name": "Neovim",
                "keybinds": 
                [
                    {
                        "id": null,
                        "keys": 
                        [
                            "ctrl+a"
                        ]
                    },
                    ...,
                    {
                        "id": "User.b",
                        "keys": 
                        [
                            "ctrl+b"
                        ]
                    },
                    ...
                ]
            },
            {
                "commandline": "%ProgramFiles%\\Git\\bin\\bash.exe",
                "guid": "{00000000-0000-0000-0000-000000000000}",
                "hidden": false,
                "icon": "%ProgramFiles%\\Git\\git-bash.exe",
                "name": "Git Bash",
                "keybinds": 
                [
                    {
                        "id": null,
                        "keys": 
                        [
                            "ctrl+a"
                        ]
                    },
                    ...,
                    {
                        "id": "User.c",
                        "keys": 
                        [
                            "ctrl+c"
                        ]
                    },
                    ...
                ]
            },
            {
                "commandline": "%ProgramFiles%\\PowerShell\\7\\pwsh.exe",
                "guid": "{00000000-0000-0000-0000-000000000000}",
                "hidden": false,
                "name": "PowerShell",
                "source": "Windows.Terminal.PowershellCore",
                "keybinds": 
                [
                    {
                        "id": null,
                        "keys": 
                        [
                            "ctrl+a"
                        ]
                    },
                    ...,
                    {
                        "id": "User.d",
                        "keys": 
                        [
                            "ctrl+d"
                        ]
                    },
                    ...
                ]
            },
            ...
        ]
    },
    ...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Issue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.Resolution-DuplicateThere's another issue on the tracker that's pretty much the same thing.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions