microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
109.68k stars 6.46k forks source link

Integrate the "The Microsoft Keyboard Layout Creator" into Powertoys #5859

Open pguerin3 opened 4 years ago

pguerin3 commented 4 years ago

📝 Integrate the "The Microsoft Keyboard Layout Creator" into Powertoys

The Microsoft Keyboard Layout Creator (MSKLC) extends the international functionality of Windows 2000, Windows XP and Windows Server 2003 systems

_Would be nice to get this Microsoft application integrated into Powertoys, so it's supported in Windows 10.

https://support.microsoft.com/en-ph/help/823010/the-microsoft-keyboard-layout-creator

Jay-o-Way commented 4 years ago

That link seems to be broken

pguerin3 commented 4 years ago

ok - looks like Microsoft have decommisioned the page. Here is what a created layout file (eg Halmak layout) looks like after using the tool:

KBD Halmak "Halmak - AI designed keyboard layout"

COPYRIGHT "Copyright (C) 2016 Nikolay Nemshilov"

COMPANY "Halmak"

LOCALENAME "en-US"

LOCALEID "00000409"

VERSION 1.0

SHIFTSTATE

0 //Column 4 1 //Column 5 : Shft 2 //Column 6 : Ctrl

LAYOUT ;an extra '@' at the end is a dead key

//SC VK_ Cap 0 1 2 //-- ---- ---- ---- ---- ----

02 1 0 1 0021 -1 // DIGIT ONE, EXCLAMATION MARK, 03 2 0 2 0040 -1 // DIGIT TWO, COMMERCIAL AT, 04 3 0 3 0023 -1 // DIGIT THREE, NUMBER SIGN, 05 4 0 4 0024 -1 // DIGIT FOUR, DOLLAR SIGN, 06 5 0 5 0025 -1 // DIGIT FIVE, PERCENT SIGN, 07 6 0 6 005e -1 // DIGIT SIX, CIRCUMFLEX ACCENT, 08 7 0 7 0026 -1 // DIGIT SEVEN, AMPERSAND, 09 8 0 8 002a -1 // DIGIT EIGHT, ASTERISK, 0a 9 0 9 0028 -1 // DIGIT NINE, LEFT PARENTHESIS, 0b 0 0 0 0029 -1 // DIGIT ZERO, RIGHT PARENTHESIS, 0c OEM_MINUS 0 002d 005f -1 // HYPHEN-MINUS, LOW LINE, 0d OEM_PLUS 0 003d 002b -1 // EQUALS SIGN, PLUS SIGN, 10 W 1 w W -1 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, 11 L 1 l L -1 // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, 12 R 1 r R -1 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, 13 B 1 b B -1 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, 14 Z 1 z Z -1 // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, 15 OEM_1 0 003b 003a -1 // SEMICOLON, COLON, 16 Q 1 q Q -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, 17 U 1 u U -1 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, 18 D 1 d D -1 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, 19 J 1 j J -1 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, 1a OEM_4 0 005b 007b 001b // LEFT SQUARE BRACKET, LEFT CURLY BRACKET, ESCAPE 1b OEM_6 0 005d 007d 001d // RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET, INFORMATION SEPARATOR THREE 1e S 1 s S -1 // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, 1f H 1 h H -1 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, 20 N 1 n N -1 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, 21 T 1 t T -1 // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, 22 OEM_COMMA 0 002c 003c -1 // COMMA, LESS-THAN SIGN, 23 OEM_PERIOD 0 002e 003e -1 // FULL STOP, GREATER-THAN SIGN, 24 A 1 a A -1 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, 25 E 1 e E -1 // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, 26 O 1 o O -1 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, 27 I 1 i I -1 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, 28 OEM_7 0 0027 0022 -1 // APOSTROPHE, QUOTATION MARK, 29 OEM_3 0 0060 007e -1 // GRAVE ACCENT, TILDE, 2b OEM_5 0 005c 007c 001C // REVERSE SOLIDUS, VERTICAL LINE, 2c F 1 f F -1 // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, 2d M 1 m M -1 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, 2e V 1 v V -1 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, 2f C 1 c C -1 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, 30 OEM_2 0 002f 003f -1 // SOLIDUS, QUESTION MARK, 31 G 1 g G -1 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, 32 P 1 p P -1 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, 33 X 1 x X -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, 34 K 1 k K -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, 35 Y 1 y Y -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, 39 SPACE 0 0020 0020 0020 // SPACE, SPACE, SPACE 56 OEM_102 0 005c 007c 001c // REVERSE SOLIDUS, VERTICAL LINE, INFORMATION SEPARATOR FOUR 53 DECIMAL 0 002e 002e -1 // FULL STOP, FULL STOP,

KEYNAME

01 Esc 0e Backspace 0f Tab 1c Enter 1d Ctrl 2a Shift 36 "Right Shift" 37 "Num *" 38 Alt 39 Space 3a "Caps Lock" 3b F1 3c F2 3d F3 3e F4 3f F5 40 F6 41 F7 42 F8 43 F9 44 F10 45 Pause 46 "Scroll Lock" 47 "Num 7" 48 "Num 8" 49 "Num 9" 4a "Num -" 4b "Num 4" 4c "Num 5" 4d "Num 6" 4e "Num +" 4f "Num 1" 50 "Num 2" 51 "Num 3" 52 "Num 0" 53 "Num Del" 54 "Sys Req" 57 F11 58 F12 7c F13 7d F14 7e F15 7f F16 80 F17 81 F18 82 F19 83 F20 84 F21 85 F22 86 F23 87 F24

KEYNAME_EXT

1c "Num Enter" 1d "Right Ctrl" 35 "Num /" 37 "Prnt Scrn" 38 "Right Alt" 45 "Num Lock" 46 Break 47 Home 48 Up 49 "Page Up" 4b Left 4d Right 4f End 50 Down 51 "Page Down" 52 Insert 53 Delete 54 <00> 56 Help 5b "Left Windows" 5c "Right Windows" 5d Application

DESCRIPTIONS

0409 Halmak - AI designed keyboard layout

LANGUAGENAMES

0409 English (United States)

ENDKBD

netify-gmail commented 3 years ago

Appears this has been integrated into power toys:
image

pguerin3 commented 3 years ago

Can there be an enhancement to show the full keyboard layout as a single graphic? See the sample from The Microsoft Keyboard Layout Creator.

image

pguerin3 commented 3 years ago

That link seems to be broken

Actually MS have re-released the application at this new webpage:

https://www.microsoft.com/en-us/download/details.aspx?id=102134

Aaron-Junker commented 3 years ago

I change this to a keyboard manager issue

ajhawkings commented 3 years ago

If the open source problems were overcome, could the full keyboard layout creator be added to the keyboard manager section?

Aaron-Junker commented 3 years ago

@ajhawkings So the thing is I think Microsoft will not publish the code of the keyboard layout creator. So we would need to write a new one. And when they would publish it, we need someone who wants to add it to PowerToys. That's a lot of work and we aren't that many people.

rollingmoai commented 2 years ago

MSKLC does not support compiling the layout to ARM64. This feature would be very much needed!

pguerin3 commented 2 years ago

In fact the least effort is to allow Powertoys to map any character to any key. For example, at the moment Powertoys only allows the ;: key to be mapped to another key. This means I can't map the ; character to one key, and the : character to a different key on the keyboard.

If you can allow Powertoys to map any character to any key, then the problem will be solved.

Jay-o-Way commented 2 years ago

This means I can't map the ; character to one key, and the : character to a different key on the keyboard.

Yes you can. Just use shift.

pguerin3 commented 2 years ago

No I can't because I'll be using < shift ; > for another character, and < shift : > for yet another character..... See the link for an example: https://github.com/binarybottle/engram

alisonatwork commented 1 year ago

Something I can't find a solution for right now in Keyboard Manager is mapping a key to a dead key. For example, in US International layout, I would like to have some more dead keys so I can print caron and macron accents, as used in Maori, Pinyin and several Slavic languages.

Adding more dead keys is solvable by creating a custom keyboard in Microsoft Keyboard Layout Creator, but that has its own annoyances in that for some reason loading a custom US International keyboard into an existing region seems to also end up creating an additional "ghost" non-international US keyboard for the region, which makes Win+Space region switching less intuitive than it should be.

Keyboard Manager works great for doing single key replacements, though, so it would be cool if it also supported standard dead keys, as also discussed in #10082. For now I am trying to use the new Quick Accent tool, but it is a bit confusing to have one way to type accents that we used for decades (dead key), and now there is a different way to type accents that feels slower because of the requirement to long press certain letters as if it was a touchscreen.

Jay-o-Way commented 1 year ago

it is a bit confusing to have one way to type accents that we used for decades (dead key), and now there is a different way to type accents

Actually there are more ways: Dead keys, Alt-codes, Emoji input panel...

neyb commented 10 months ago

Key mappings are not layouts...

c4tch commented 9 months ago

Key mappings are definately not keyboard layouts, it's an important point! Here's an example of when a user needs to switch layouts: When using different keyboards or peripherals that are in another language from the one being typed on in the OS, or whos layouts are not identical between brands of input device and you want them to be the same for productivty and muscle memory. Example: I code, and I document, and I design. In two languages, one Swedish one English. I work in various locations with different physical keyboards via BT and using the standard keyboard for my Surface Pro. In Windows 10, I was able to create layouts for each input source that I could switch around depending on how and where I was working (ex. Swedish Coder was one keyboard I used which had nice ergonimic shourtcuts for coding on my old school BT keyboard, where as I then had Swedish (the standard layout) for all other purposes when travelling). This meant I would be able to quickly switch between keyboard layouts depending on language and device I was using.

The ask: As a user I can save a mapping as a layout and switch between Layouts in Windows 11 using standard windows features (like Win+Space shortcut that is standard for switching keyboard layout), so that I can use different assignments depending on the input device or language independently.

xuanswe commented 2 months ago

I used MSKLC to create my own keyboard layout and have used it for many years. Now, I upgraded to Windows 11 and found that it is not working anymore :(.

Supported Operating Systems: Windows 10, Windows XP, Windows 2000, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows Server 2003

And completely agree with @c4tch that "Key mappings are definately not keyboard layouts." We need a complete integration with native Keyboard Settings of Windows 11 to use all affected features. Custom keyboard layouts should appear in the list of Keyboards of each language in "Windows Settings > Time & Language > Language & Region".