Comments (24)
@DJm00n - Good catch. Fixed now.
Justy FYI: Internally, ligatures are stored in the same way as the non-BMP characters. The non-BMP characters have to be converted from surrogate pairs, while the ligatures are just combinations of characters.
from globalization.
The KLC doesn't always correctly reflect what the keyboard is returning. The keyboard layout generator used to depend on KLC, but we found some issues with the .klc files that are generated, so we now use user32.dll directly (https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-tounicodeex, https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardlayoutlist, etc.)
Let me spend some more time with this when I have more time available.
Oh, thats sad.
It solved an issue at the time...
how to detect physical keyboard layout type
I don't believe that the keyboard driver knows anything about the keyboard itself.
from globalization.
from globalization.
@DJm00n I've fixed the title case -> upper case issue. Reformatting the ligature descriptions with "WITH" will take a little longer.
from globalization.
@DJm00n After thinking about it a little more, I'm not sure that <U+XXXX, U+YYYY> XXXXXXXXXXX [WITH/AND] YYYYYYYYY is the correct approach here. While some ligatures are "letter + combining character" (not accurate, but I think that you'll understand what I am getting at), other ligatures are simply combinations or groups of characters. I went with:
<U+XXXX, U+YYYY> XXXXXXXXXXX, YYYYYYYYY
from globalization.
@jowilco I understand you objection concerning [WITH/AND] but I think current U+09B0, U+09CD BENGALI LETTER RA, BENGALI SIGN VIRAMA
format that you're submitted is not readable.
Possible alternative would be <U+09B0 BENGALI LETTER RA, U+09CD BENGALI SIGN VIRAMA>
<>
is mandatory here since it means sequences of code points (UCS Sequence Identifier or USI).
from globalization.
Also, it would be great if you can add VK_*
codes on the button popups. It is mandatory for a user to see which code is emitted on a key press too (think about US QWERTY vs French AZERTY vs new French BÉPO) - and this value is not clear for non-US keyboards at all.
Look at VK_*
keys here:
![image](https://private-user-images.githubusercontent.com/1285934/249772861-1108e3e1-41a2-4807-8638-7d8e6f65e465.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0MDcyNjIsIm5iZiI6MTcyMTQwNjk2MiwicGF0aCI6Ii8xMjg1OTM0LzI0OTc3Mjg2MS0xMTA4ZTNlMS00MWEyLTQ4MDctODYzOC03ZDhlNmY2NWU0NjUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTYzNjAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZmZhZTkxMmY0YmNiODk3M2Q3M2ZhYzEyM2E1YjAzMWY1NzdhZGNiZTc5YjY2ZjUyZTNhYTExNGY3NjNkY2Y4YSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.9vdmrRKB1M1wPVEK13HJi0ArMTe6BFEbXIQg2dxQ0SA)
https://kbdlayout.info/kbdus/virtualkeys
![image](https://private-user-images.githubusercontent.com/1285934/249772978-524b95f1-3d35-4b96-bfdd-beba390de00e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0MDcyNjIsIm5iZiI6MTcyMTQwNjk2MiwicGF0aCI6Ii8xMjg1OTM0LzI0OTc3Mjk3OC01MjRiOTVmMS0zZDM1LTRiOTYtYmZkZC1iZWJhMzkwZGUwMGUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTYzNjAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTUzNjA2OTc4ZmEzN2U0N2NjYjAyNTIyZWZjNWZjY2QyMGNiYzhlYmMxZWFiZjUwMmI2YzZmMDg1MzQ4Y2Q1OSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.DM7VaxPGj9kBmcyOcR2laiuChm9XLkN-Fhib7RxyIXM)
https://kbdlayout.info/kbdfrna/virtualkeys
![image](https://private-user-images.githubusercontent.com/1285934/249791655-237aaf6b-5bf1-4bd1-8e74-dc22bcba2a5d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0MDcyNjIsIm5iZiI6MTcyMTQwNjk2MiwicGF0aCI6Ii8xMjg1OTM0LzI0OTc5MTY1NS0yMzdhYWY2Yi01YmYxLTRiZDEtOGU3NC1kYzIyYmNiYTJhNWQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTYzNjAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTg4Njc1NDEwMzkyNWU0ODQ0MDc4MmZhODZiMDg0NzMzZGQ3NzkzMGZlMjBkMDM2ZDRkZWYwZWNiM2NhNzQ1MSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.oT4PDcSdhm5_EPtR17neAodIOlnc5X8jm4wuoPWdVmI)
https://kbdlayout.info/kbdfrnb/virtualkeys
from globalization.
Also, it would be great if you can add character and VK codes for this scan codes in all shift states:
0x0e
(usually mapped toVK_BACK
withU+0008 BACKSPACE
)0x0f
(usually mapped toVK_TAB
withU+0009 CHARACTER TABULATION
)0x39
(usually mapped toVK_SPACE
withU+0020 SPACE
)0x1c
(usually mapped toVK_RETURN
withU+000D CARRIAGE RETURN
)
Since these can be remapped in keyboard layout too.
from globalization.
@DJm00n - Please try now. I hope that is closer.
from globalization.
@jowilco now it looks much better! thank you!
one thing I noted that <>
is rendered for non-BMP Unicode chars. See https://learn.microsoft.com/en-us/globalization/keyboards/kbdgthc for example.
from globalization.
Thank you again, @jowilco!
from globalization.
Hi @jowilco!
Minor nit. There SHOULD BE <>
in this case with surrogate + ligature:
from globalization.
Thanks @DJm00n - good catch!
Fortunately, this was the only instance.
#267
from globalization.
@jowilco thank you for a quick fix!
from globalization.
Hi @jowilco!
Dead Key characters are missing Unicode character names:
Minor: also, there should be space after :
char (not before) in DeadKey :^ â Â ê Ê î Î ô Ô û Û
string.
from globalization.
Hi @DJm00n - Good to hear from you!
Good suggestions. Implemented in #281
from globalization.
Thank you, @jowilco!
Here is name of character is still missing, it should be ^ U+005E CIRCUMFLEX ACCENT
:
from globalization.
Also, it seems some keyboards can output chars/deadchars from the Private Use Area (range: E000—F8FF).
But current implementation just omits them.
For example ADLaM layout have such keys in Ctrl+Alt (AltGr) and Shift+Ctrl+Alt (Shift+AltGr) modes and on GRAVE ACCENT deadkey:
https://learn.microsoft.com/en-us/globalization/keyboards/kbdadlm
https://kbdlayout.info/kbdadlm
Maybe you can output them too? Something like U+EF1E Private Use Area
?
![image](https://private-user-images.githubusercontent.com/1285934/282228555-da61b58c-337e-4bba-b76f-9ce95c4affa0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0MDcyNjIsIm5iZiI6MTcyMTQwNjk2MiwicGF0aCI6Ii8xMjg1OTM0LzI4MjIyODU1NS1kYTYxYjU4Yy0zMzdlLTRiYmEtYjc2Zi05Y2U5NWM0YWZmYTAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTYzNjAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OWFjZjQyY2RjYmM2MjRkZTVkZDU0OTQyYWM0ZWYwNDk4MDg3ZGMyYjNlZmJiOTdlYjY4OWM5NThkNmZhMzQyNCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.klnYne5QGXj0hPhgdQN_yjIGgK-jhBlzMPtEXA70Y34)
https://kbdlayout.info/features/unicode
from globalization.
@DJm00n - Thanks again for finding the issues. I really do appreciate that you are willing to help us make the information that we are publishing better!
I added the character names to the Deadkey base characters.
The issue with Osage and ADLaM is that they were set as keyboards that didn't support AltGr, which of course they do. Once they were set correctly, the PUA characters appeared correctly.
from globalization.
The issue with Osage and ADLaM is that they were set as keyboards that didn't support AltGr, which of course they do
How do you set that? It can be detected by KLLF_ALTGR
flag in low word of KBDTABLES.fLocaleFlags
if I got it right.
Also, dead key list is still empty here. There should be a bunch of Private Use Area
chars:
from globalization.
That would be a better way of doing this. Unfortunately, all of the changes that I have been making are to a tool that I inherited that is solely for generating the keyboards for this site. It relies on a static database table with records for each keyboard. I really should remove that dependency and instead generate the data when I generate the keyboards, but that will take time/resources.
For the ADLaM keyboard, it isn't a dead key. If you use the AltGr key, you'll see the PUA chars on VK_OEM_3 and several others.
from globalization.
VK_OEM3 without shift states is a deadkey according to https://kbdlayout.info/kbdadlm/download/klc
DEADKEY 0060 // GRAVE ACCENT
0042 ef1e // B ->
004a ef1f // J ->
004b ef1d // K ->
0050 ef20 // P ->
0053 ef21 // S ->
0056 ef1c // V ->
0062 ef40 // b ->
006a ef41 // j ->
006b ef3f // k ->
0070 ef42 // p ->
0073 ef43 // s ->
0076 ef3e // v ->
0060 0060 // ` -> `
from globalization.
It relies on a static database table with records for each keyboard
Oh, thats sad. I had a related question - how to detect physical keyboard layout type from KBDTABLES
?....and it seems now answer is "there is no way". Right?
from globalization.
Hi @DJm00n - I had some time to look at the ADLaM issue again. I installed the keyboard on Windows 11 and tried using the ` deadkey. It appears that it can be used with any character, not just the set mentioned at the bottom of the page on https://kbdlayout.info/kbdadlm/shiftstates. Unfortunately, there is very little information on the Internet about using the ADLaM keyboard, at least in English, so I'm not sure if this is an issue with the keyboard driver or if this is by design.
I don't think that it is worth listing every single character in the ` tooltip, but I am open to suggestions.
If nothing else, I plan on updating the PUA keys (AltGr) to display the correct glyphs. I was also thinking about adding the base character to each of the deadkey combinations in the tooltip.
Happy holidays!
from globalization.
Related Issues (20)
- MSKLC link dead HOT 11
- 3 broken links on Globalization Documentation main page - https://github.com/MicrosoftDocs/globalization/blob/live/globalization/index.md HOT 1
- Typo HOT 1
- National keyboard layouts page not working HOT 10
- Strange translation of "Learn More" on Russian Language Portal page HOT 2
- United Kingdom layouts should show ISO keyboard HOT 1
- US keyboard layout shows spurious extra key that doesn't exist HOT 1
- German Keyboard: Caps Lock is Shift Lock HOT 8
- Document how Font fallback really works HOT 5
- Ligatures are missing on keyboard layout previews HOT 9
- Control key is not considered as modifier on keyboard layout preview HOT 5
- Navigation is broken on keyboard preview pages HOT 4
- There is missing HOT 4
- Direct keyboard layout pages shouldn't be accessed HOT 2
- Include keyboard identified on keyboard layout pages HOT 6
- Where is this linked in the main learn site? HOT 7
- Links to old MSDN site
- This docset has no PR Preview HOT 4
- Some topics are not hooked up to the TOC HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from globalization.