Updated Keyboard Manager (markdown)

sakariya 2020-02-13 11:59:28 -08:00
parent 15fa581063
commit ffd1f1485f

@ -25,7 +25,7 @@ Ever switched computers and the shortcut to search your computer was different?
## 1.3 Elevator Pitch
A keyboard is an extremely powerful and primary method of interacting with your operating system, and historically Windows has lacked the configurability to make this power extend to you, the user. With this new addition to Powertoys you gain access to the keyboards potential with the ability to remap keys and create user-defined keyboard shortcuts.
The keyboard is still the primary method of interacting with your device(s). Historically, Windows has not easily let you configure your keyboard. The new Powertoys Keyboard Manager allows you to customize the keyboard to be more productive by remapping keys and creating your own keyboard shortcuts.
## 1.4 Tweet
@ -33,13 +33,13 @@ A keyboard is an extremely powerful and primary method of interacting with your
## 1.5 Narrative / Scenario
**User Problem 1** - Mac/Linux “switch” users: A user who has recently made the switch to Windows and is having trouble adjusting to the keyboard differences. Simple tasks like locking the computer, copy / paste, and switching browsers now require thinking and the lack of muscle memory makes the user feels clumsy at times. For example, copying an object on MacOS, <kbd>cmd</kbd> + <kbd>C</kbd>, requires your thumb whereas on Windows, <kbd>Ctrl</kbd> + <kbd>C</kbd>, its your pinky. Even within identical applications there are shortcut disparities. Going to the address bar in Google Chrome on a Mac is <kbd>cmd</kbd> + <kbd>L</kbd>, on a PC, that would map to <kbd>Alt</kbd> + <kbd>D</kbd>.
**Switching from Mac/Linux**: A user who has recently made the switch to Windows and is having trouble adjusting to the keyboard differences. Simple tasks like locking the computer, copy / paste, and switching browsers now require thinking and the lack of muscle memory makes the user feels clumsy at times. For example, copying an object on MacOS, <kbd>cmd</kbd> + <kbd>C</kbd>, requires your thumb whereas on Windows, <kbd>Ctrl</kbd> + <kbd>C</kbd>, its your pinky. Even within identical applications there are shortcut disparities. Going to the address bar in Google Chrome on a Mac is <kbd>cmd</kbd> + <kbd>L</kbd>, on a PC, that would map to <kbd>Alt</kbd> + <kbd>D</kbd>.
**Outcome**: A successful KSM manager would increase comfortability and users wouldnt feel like they lost functionality or convenience with switching to Windows 10. In effect, it would help decrease churn and avoid a negative experience for a new user, which is crucial moment for public sentiment on Windows.
**Outcome for Switching**: A successful KSM manager would increase comfortability and users wouldnt feel like they lost functionality or convenience with switching to Windows 10. In effect, it would help decrease churn and avoid a negative experience for a new user, which is crucial moment for public sentiment on Windows.
**User Problem 2** Users want customizability to make them faster: Developers, or power users, who use their keyboard a lot are constantly looking to save themselves time and make their processes more convenient. This community has largely relied on 3<sup>rd</sup> party tools or has left their keys alone but voiced frustration with the lack of a native tool to remap keys. An example of a power shortcut that made its way into Windows is <kbd>![Windows Key][winlogo]</kbd> + <kbd>L</kbd>. You used to have to hit <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>Del</kbd> then click “Lock”.
**Customize my keyboard** Users want customizability to make them faster: Developers, or power users, who use their keyboard a lot are constantly looking to save themselves time and make their processes more convenient. This community has largely relied on 3<sup>rd</sup> party tools or has left their keys alone but voiced frustration with the lack of a native tool to remap keys. An example of a power shortcut that made its way into Windows is <kbd>![Windows Key][winlogo]</kbd> + <kbd>L</kbd>. You used to have to hit <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>Del</kbd> then click “Lock”.
**Outcome**: A successful KSM manager would unlock functionality and convenience for many power users, increasing their everyday efficiency. Keyboard changes are highly visible and successfully extending control would greatly boost satisfaction to continue to cement Windows as the *ideal* platform for a developer.
**Outcome for Customizing**: A successful KSM manager would unlock functionality and convenience for many power users, increasing their everyday efficiency. Keyboard changes are highly visible and successfully extending control would greatly boost satisfaction to continue to cement Windows as the *ideal* platform for a developer.
## 1.6 Customers
@ -50,13 +50,13 @@ We have two primary customers:
## 1.7 Problem Statement and Supporting Customer Insights
Windows 10 is available on a multitude of devices and as such, various keyboard inputs are utilized to access the UI. The Keyboard and eyboard Shortcuts are an integral way of teracting with Windows and users have had difficulty accessing them when they have non-standard keyboards or knowledge of shortcuts from a different OS.
Windows 10 is available on a vast array of devices using both physical and touch screen keyboards for user interaction. Lack of keyboard customization is leading to user frustration when switching from another OS and satisfaction around being less productive.
Comfortability/Ease of use, especially for new users, can be crucial as their first few interactions can cause frustration and result in a higher churn towards competitors. For developers and some seasoned users, where using their keyboard is a large part their job, ability
to remap keystrokes and engage executables can lead to massive gains in time. In fact, this was the [second most popular topic](https://github.com/microsoft/PowerToys/issues/6) measured through thumbs up and the most commented issue in the PowerToys Github.
## 1.8 Solutions or Expectations
To make-up for the lack of a built-in solutions users that have come across this issue only once often rely on learning the basic windows shortcuts and forgoing additional productivity. For users where this has become an ongoing concern, the vast majority who switch to the Powertoy will come with certain expectations as they have come to rely on a multitude of 3<sup>rd</sup> party solutions. 28% of survey respondents used 3<sup>rd</sup> party tools, and 60% of those who did used either AutoHotKey or SharpKeys.
For casual users, they are forced to use Windows shortcuts, if anything, and forgo additional productivity due to a lack of a keyboard mapping solution built-in to Windows. Whereas for users where this has become an ongoing concern, the vast majority who switch to the Powertoy will come with certain expectations as they have come to rely on a multitude of 3<sup>rd</sup> party solutions. 28% of survey respondents used 3<sup>rd</sup> party tools, and 60% of those who did used either AutoHotKey or SharpKeys.
*Various 3<sup>rd</sup> party solutions:*
@ -85,7 +85,7 @@ Figure 1. SharpKeys: Landing Screen
![alt text][sharpkey_setting]
Figure 2. Sharpkeys: Key Remapping Input
**AutoHotKey** is a scripting language that runs on Windows and while it focuses on and was first created to remap keys and create shortcuts, it is capable of a lot more. Using AHK requires spending time reading their extensive documentation (*Figure 3)* to become adept at writing scripts. There is no GUI or interface that comes with AHK and it is all interpreted through a text editor. With AHK users can create both OS-level and app-specific shortcuts, however there is no simple way to share/save key configurations among multiple users. AHK has a very strong community that has been able to create tools that fill in many of the languages functionality gaps.
**AutoHotKey** (AHK) is a scripting language that runs on Windows and while it focuses on and was first created to remap keys and create shortcuts, it is capable of a lot more. Using AHK requires spending time reading their extensive documentation (*Figure 3)* to become adept at writing scripts. There is no GUI or interface that comes with AHK and it is all interpreted through a text editor. With AHK users can create both OS-level and app-specific shortcuts, however there is no simple way to share/save key configurations among multiple users. AHK has a very strong community that has been able to create tools that fill in many of the languages functionality gaps.
![alt text][ahk_documentation]
Figure 3. AutoHotKey Documentation
@ -140,7 +140,7 @@ A brief survey was sent to the Windows Developer community during the planning s
| 1 | Remap any button on keyboard to any other button on keyboard | P0 |
| 2 | OS-Level key shortcuts. Example: Making <kbd>![Windows Key][winlogo]</kbd> + <kbd>G</kbd> lock the computer. | P1 |
| 3 | App level keyboard shortcuts. Example: Going to the address bar in Chrome on a MacOS is <kbd>cmd</kbd>+<kbd>L</kbd>, on a PC, that would map to <kbd>Alt</kbd> + <kbd>D</kbd>. | P2 |
| 4 | Settings page that easily configures all supported scenarios. | P1 |
| 4 | Settings page where user can change key remapping/keystrokes and other supported changes. | P1 |
| 5 | The Powertoys Shortcut Guide needs to be aware of keyboard remaps. Example: If <kbd>![Windows Key][winlogo]</kbd> + <kbd>G</kbd> locks the computer the Shortcut Guide needs to list this as the method to lock a computer, not <kbd>![Windows Key][winlogo]</kbd> + <kbd>L</kbd>. | P1 |
| 6 | A Mac ready profile that is prepopulated with commonly used remappings and adjustments. | P1 |
| 6 | A Linux ready profile that is prepopulated with commonly used remappings and adjustments. | P1 |
@ -153,9 +153,9 @@ A brief survey was sent to the Windows Developer community during the planning s
| No. | Requirement | Pri |
| --- | ------------------------------------------------------------------------------------------------------------------------------------- | --- |
| 1 | Remapping of keys is done through a user interface. User is able to select the key to remap and the corresponding key to remap it to. | P1 |
| 2 | Support for global and key-board specific shortcuts. Example: See Karabiner | P2 |
| 3 | Function Key remap | P3 |
| 4 | Remapping of keys can be done through a JSON file | P3 |
| 2 | User can edit both global and key-board specific shortcuts. Example: See Karabiner | P2 |
| 3 | User can remap the function key. | P3 |
| 4 | User can remap keys through a JSON file | P3 |
### 2.3 Functional Requirements for OS-Level shortcuts
@ -211,22 +211,22 @@ A brief survey was sent to the Windows Developer community during the planning s
| No. | Requirement | Implication | Pri |
| - | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | --- |
| 1 | \# of keys being remapped per user and which keys | Insight into use and whether certain keys are persistent across community\* | P1 |
| 2 | \# of OS-level shortcuts created vs \# of App-level shortcuts | Understand how users are using shortcuts | P1 |
| 3 | \# of times the same user loads different key configurations. | Should multi-profile use be prioritized | P1 |
| 4 | \# of times built-in shortcuts are disabled | Recommended defaults for developers | P1 |
| 5 | \# of times built-in shortcuts are remapped | Recommended defaults for developers | P1 |
| 6 | Specificity and frequency of *exotic* keys being remapped. | Whether the KSM is missing keys and if some keys not useful | P1 |
| 7 | \# of visits to the KSM editor/settings in a given time period | Continuous visits could imply lack of clarity with UX or bug in app | P1 |
| 8 | Frequency of keys being mapped to each other (swapped). Example: <kbd>*Key A*</kbd> -> <kbd>Key B</kbd>, <kbd>Key B</kbd> -> <kbd>Key C</kbd>, <kbd>Key C</kbd> -> <kbd>*Key A*</kbd> | Whether auto/hot swapping needs to be prioritized | P1 |
| 9 | Amount of people that have remapped turned on / off | Information on whether KSM is being utilized | P1 |
| 10 | Maximum number of keyboards someone has attached to their keyboard in a 28-day period | Validates whether to prioritize additional keyboard support | P1 |
| 1 | \# of keys being remapped per user and which keys | Insight into use and whether certain keys are persistent across the community. Allows us to identify key recommendations and keys that are causing consistent issues.\ | P1 |
| 2 | \# of OS-level shortcuts created vs \# of App-level shortcuts | Understand how users are using shortcuts and about which shortcuts are critical. | P1 |
| 3 | \# of times the same user loads different key configurations. | Answers where multi-profile use, as a new feature, should be prioritized | P1 |
| 4 | \# of times built-in shortcuts are disabled | Allow us to recommend defaults to Windows developers. | P1 |
| 5 | \# of times built-in shortcuts are remapped | Allow us to recommend defaults to Windows developers. | P1 |
| 6 | Specificity and frequency of *exotic* keys being remapped. | Whether the KSM is missing keys and if some keys are not useful (i.e being mapped over) | P1 |
| 7 | \# of visits to the KSM editor/settings in a given time period | Continuous visits in a short time could imply lack of clarity with UX or bug in app | P1 |
| 8 | Frequency of keys being mapped to each other (swapped). Example: <kbd>*Key A*</kbd> -> <kbd>Key B</kbd>, <kbd>Key B</kbd> -> <kbd>Key C</kbd>, <kbd>Key C</kbd> -> <kbd>*Key A*</kbd> | Whether auto/hot swapping, as a new feature, needs to be prioritized | P1 |
| 9 | Amount of people that have remapped turned on / off | Information on whether KSM is being utilized by PowerToys users. | P1 |
| 10 | Maximum number of keyboards someone has attached to their keyboard in a 28-day period | Validates whether to prioritize additional keyboard support. | P1 |
## 4. UI Mockup
### See below for screenshots of the UI mockups:
*Please understand that these are preliminary**
*Please understand that these are preliminary and requirements that are Priority level 3 are not fully defined in the design**
### 4.1 Main UI Settings