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

WinGet manifest Keyboard Shortcuts extension #35433

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions doc/specs/WinGet Manifest Keyboard Shortcuts extension.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Winget Manifest Keyboard Shortcuts extension v1.0

## 1 What this spec is about

## 2 Save location of manifests

All manifests and one index file are saved under `%localappdata%/Microsoft/Windows/KeyboardShortcuts`. All apps are allowed to add their manifest files there. In addition Package Managers (like WinGet) and manifest interpreters (like PowerToys Shortcut Guide) can control and add other manifests themselves.
Fixed Show fixed Hide fixed

### 2.1 File names

The file name of a keyboard shortcuts file is the WinGet package identifier, plus the locale of the strings of the file and at last the `.KBSC.yml` file extension.
Fixed Show fixed Hide fixed

For example the package "test.bar" saves its manifest with `en-US` strings in `test.bar.en-US.KBSC.yml"
Fixed Show fixed Hide fixed
Fixed Show fixed Hide fixed

#### 2.1.1 No winget package available

If an application has no corresponding WinGet package its name starts with a plus symbol.

### 2.2 Reserved namespaces

Every name starting with `+WindowsNT` is reserved for the Windows OS and its components.

## 3 File syntax

All relevant files are written in the

### 3.1 Keyboard shortcuts manifest

#### 3.1.1 `PackageName` field

#### 3.1.2 `Filter` field

#### 3.1.3 `Shortcuts` field

##### 3.1.3.1 `SectionName` field

**Special sections**:

Special sections start with an identifier enclosed between `<` and `>`. This declares the category as a special display. If the interpreter of the manifest file can't understand the content this section should be left out.

##### 3.1.3.2 `Properties` field

###### 3.1.3.2.1 `Name` field

###### 3.1.3.2.2 `Win` field

###### 3.1.3.2.3 `Ctrl` field

###### 3.1.3.2.4 `Shift` field

###### 3.1.3.2.5 `Alt` field

###### 3.1.3.2.6 `Description` field

###### 3.1.3.2.7 `Recommended` field

###### 3.1.3.2.8 `Keys` field

An string array of all the keys that need to be pressed.

**Special keys**:

Special keys are enclosed between `<` and `>` and correspond to a key that should be displayed in a certain way

|Name|Description|
|----|-----------|
|`<Office>`| Corresponds to the Office key on some Windows keyboards |
|`<Copilot>`| Corresponds to the Copilot key on some Windows keyboards |

### 3.2 `index.yml` file

#### 3.2.1 `DefaultShellName` field

This declares the package identifier of the default shell used in Windows. Most commenly it is `+WindowsNT.Shell`. Although not enforced, only the shell declared in the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell` should be used here.
Fixed Show fixed Hide fixed

#### 3.2.2 `Index` field

##### 3.2.2.1 `Filter` field

##### 3.2.2.2 `Apps` field

Loading