|
Hi Ilya,
At least in the Windows Hebrew keyboard, they are used for the Niqqud - The Hebrew vowels. Generally, Hebrew is written without vowels, and the correct word (If there is ambiguity) is understood from context, but naturally, in some cases (That are not everyday, but are often enough), vowels are required, so they are present as SGCaps for the top number row. For example, "encyclopedia" without vowels is אנציקלופדיה, and with vowels it is אֶנְצִיקְלוֹפֶּדְיָה.
I know other layouts use SGCaps as well, but I don't know which, as I only write Hebrew and English.
If you need to know more, perhaps you can ask Michael Kaplan: http://blogs.msdn.com/michkap/default.aspx, he seems to know all about Windows keyboard layouts...
Thanks!
|
|
|
|
|
Hi Liron,
Please send me this layout, because no one of the existing layout does not show me something special enough to see that this feature is required. Some of the 180 layouts has the SGCaps, but they still has the same with the AltGr and Shift+AltGr modifiers.
PS: Browsing for the SGCaps I've found something like "this is more intuitive kind of input" but this tells me nothing
Wbr,
Ilya
|
|
|
|
|
Hi Ilya,
I've exported the layout with MSKLC and put it here: http://eesh.net/Hebrew.klc
As I said, I don't know about other layouts, but in the Hebrew layout, the only way to generate these characters is through SGCaps. On the other layouts, are all the SGCap characters accessible through AltGr modifiers? Anyway, if it isn't too much work, I'd like to see it there for completeness' sake. This page says it's also used in the Czech and Swiss German layouts. As far as I know, it was Microsoft Israel that put the vowel symbols in there instead of using AltGr. This is probably because the Hebrew DOS layout dictates that Shift+CapsLock+key equals the key's Hebrew letter, so they couldn't use these, and Hebrew users were used to both Alts doing the same, so AltGr would be confusing.
Regarding its intuitiveness - As the page I linked to says, "they are either very intuitive if you are used to them and incredibly confusing if you aren’t familiar with them." I know people who use vowels often remember them, but let's just say keyboard makers aren't printing them on the number row keys yet.
Anyway, as I said, I'd love this feature to be included. Personally, it bothered me when I tried to use it and found it wasn't there.
Thanks anyway, even for caring enough to ask.
Liron.
|
|
|
|
|
Hello Liron,
I've implemented support for SGCaps. Please check the dev. release at http://debugger.ru/temp/heb/demo_inline.html for correctness in Hebrew layout.
Thank you for pushing me to extend VK with new features
Wbr,
Ilya
|
|
|
|
|
Hi Ilya,
Thank you! But there are bugs. First, the detection of Capslock seems to be wrong - If I open the page when Capslock is on, the on-screen keyboard shows that it's off, even after I hit some keys, and when I turn Capslock off, it shows Capslock is on, and so on.
Second, the layout's behavior is wrong - In Hebrew, when Capslock is on, the letter keys should generate uppercase English letters, and when Capslock and Shift are both pressed, the letter keys should generate the Hebrew letters. Also, the SGCaps characters are generated by the number-row keys when just Capslock is pressed, without shift. When Capslock+Shift are pressed, I get the usual Shift+NumberRow characters (Dollar sign, etc.).
The desired behavior is that when Capslock is on and Shift is not pressed, the number row should generate the regular number characters, and only when both Capslock and Shift are pressed, it should generate the vowel characters.
Thanks again!
Liron.
|
|
|
|
|
Hi Liron,
eesheesh wrote: If I open the page when Capslock is on
CapsLock state could not be detected by using javascript. Probably there might be a way, but i don't know any.
eesheesh wrote: Second, the layout's behavior is wrong
Ok, i've fixed this, comparing to the MSKLC sandbox. Unfortunately, MSKLC has the bug with exporting layout from the binary driver, it does not take in a count that there might be no explicit SGCaps state, but Shift+SGCaps exists.
Then, exporting Hebrew layout using MSKLC you'll get one with the bugs you described above.
Please take a look on update: http://debugger.ru/temp/heb/demo_inline.html[^]
With the best regards,
Ilya
|
|
|
|
|
Hi Ilya,
I tested the new version and it seems to work great!
Regarding Capslock detection - I tried Googling for it, and as you probably know too, it seems the only way to detect that Capslock is on (Aside from the keyup/keydown) is to check if uppercase letter keypress events occur with shiftKey=false. Is that relevant for code that can run on many layouts, not just English ones? The Hebrew layout has English capitals when Capslock is pressed, but I know that it isn't true for many other layouts.
Anyway - thanks! When can we expect the release of a stable version that supports SGCaps?
Liron.
|
|
|
|
|
Hi Liron,
I suppose 3.6.1 release will be ready by the next weekend.
Feature set:
- complete shift states support (shift, altgr, altgr+shift, caps, caps+shift)
- ethiopic layouts
- runic and other ancient layouts
- performance tweaks
For (1) and (4) i have to complete the testing. (3) requires some development.
Regarding the capslock, this is still not too reliable way, because i can't track exactly the caps lock state, especially when caps lock state changed outside the browser window. Side effects like uppercase letter without the shift pressed -- are the side effects only.
With the best regards,
Ilya
|
|
|
|
|
|
Hello Liron,
Article is updated and release packages are online.
Wbr,
Ilya
|
|
|
|
|
Hi All,
I've setup the virtualKeyboard successfully on xamp.
After uploading it to my Provide Webspace (with PHP at Strato) I got the following message in Firefox
Error: layout.heapSort is not a function
Source File: http://www.abunaissa.de/forum/styles/subsilver2/theme/kb/virtualkeyboard.js?layout=SA%20Arabic%20(101) Line: 1109
I tried several things nothing is working.
Did anyone of you know where the problem could be?
Thank you in advance for an answer.
|
|
|
|
|
Hi,
Please, check <vk>/extensions/e.js or <vk>/extensions/ext/array.js (depends on the downloaded package) for existence. That's only the problem, why VK does not see its extensions.
Also, please try my online demo and let me know, if it shows the same error.
Thank you for reporting.
--Ilya
|
|
|
|
|
Hi Ilya,
Thanks a lot for the hint.
I was working with my UMTS Card but there was something not really working very well with the FTP Software this is why there were files missing. Even if I uploaded them twice and trice it was still not working.
After uploading them from the WiFi it's working perfectly.
Thanks a again for the hint.
regards and marry christmas
|
|
|
|
|
Hi,
Congratulations! =)
Thanks.
--Ilya
|
|
|
|
|
I've download the compact version 3.5.1 and the keyword works well on both text and textarea but not in the password field. I've got the same issue on both IE7 and Firefox.
I would like to know if this is a known issue or I'm alone experiencing this.
-> Update: It's seems that the keyword it actually working when integrated into my projet (it's usually the inverse...) it's working!
modified on Friday, November 28, 2008 4:43 PM
|
|
|
|
|
Hi,
Thank you for choosing this keyboard for your project! =)
Could you post a link to your project here?
--Ilya
|
|
|
|
|
I can post a link however as I updated my previous post, the keyboard is working on my live site by the demo do not work on localhost.
http://www.igolder.com/[^]
To open the keyboard there is a link "KEY" that will be replace with an image later.
|
|
|
|
|
Could you describe the problem with localhost installation?
I see all my demo pages work fine with the password fields...
--Ilya
|
|
|
|
|
I've download and extract VirtualKeyboard.compact.3.5.1.zip
I've open the file demo_inline.html using Firefox 2 (same bug with IE7 and Crome)
In that page there is 3 texts, the first (subject and text works perfectly) but the password field, when I click on any letter in the virtual keyboard nothing appear to be added to the password field.
I've received no JavaScript error, nothing.
I'm using Windows XP SP2.
|
|
|
|
|
Ah, yes. I got it...
This has to be fixed in the next release.
I suppose, it will be out on the weekend.
Thank you for reporting!
--Ilya
|
|
|
|
|
Hi All!
If you'd like to have a new keyboard layout, please drop a line in this thread.
Required information:
1) layout purpose (who will use it)
2) a list of keystroke completions
3) keystroke substitution guidelines
4) (optional) word/syllable frequency table for dictionary-based IMEs
5) (optional) working IME examples
6) (optional) the shortcomings of the current VK layout implementations, if any
Any additional resources will be very welcome.
Please note, i don't know all the languages, bundled with the keyboard.
With the best regards,
Ilya
|
|
|
|
|
I'm wondering - how did you crack the mystery of what the output is from Microsoft's "Keyboard Layout Creator"? I created a WPF keyboard, but it's just a visual rendition. It seems to me the sensible thing as far as hooking it up, and changing it's key assignments, is your approach - consume the KLC's output to switch automatically. If I may inquire.. how did you accomplish this?
Thank you for your advice, and my compliments on great article.
JH
James Hurst
"The greatness of a nation and its moral progress can be judged by the way its animals are treated."
Mahatma Gandhi
|
|
|
|
|
Hi James,
It's not a secret. =)
I don't remember right which data is available from the keyboard driver, assume it is the "VK_" scancodes. Then, all you have to do is reading KLC file for the
1) source (currently active) layout, which gives you the direct order of the scancodes, see the 2nd and 1st columns in the "LAYOUT" section.
2) target layout, the 1st column compared to (1) describes the map for translating user input
I.e., source layout is Bulgarian
10 OEM_COMMA 0 002c 044b -1
11 W 1 0443 0423 -1
</none></none>
target is Russian
10 Q 1 0439 0419 -1
11 W 1 0446 0426 -1
</none></none>
Use case: user press 2nd key in the 2nd row, right to the 'Tab' key. In the US layout it is the 'Q' key.
Bulgarian scancode: 'OEM_COMMA', key number: 0x10
Russian scancode: 'Q'
Translation:
1) Read scancode (2nd column) -> 'OEM_COMMA'
2) Match key number (1st column) for (1) against Bulgarian scancodes table -> '0x10'
3) Match Russian scancode (2nd column) for the key number (2) -> 'Q'
4) Read key modifiers, finding the correct column number in the Russian KLC, refer to the "SHIFTSTATE" section.
5) Match resulting char code for row (3), column (4)
That't it. Later you may add some deadkeys processing, but it is not required for the Russian layout.
Note, you can bypass step (3), using result from (2) as the target offset in the Russian keyboard layout. Then step (5) will looks like 'Match resulting char code at < offset(2) + offset(4) >'.
Hope, this helps you.
With the best regards,
Ilya
|
|
|
|
|
Hello, I appreciate an excellent design and that you provided it as inspiration to us!
I was wondering - I'm trying to design a desktop WPF application in C#, for helping memorize Russian vocabulary. And after seeing your article I thought it would be cool to include an on-screen Cyrillic keyboard for entering the Russian words.
Do you happen to know of an easy way to incorporate your Javascript/HTML keyboard in a C# desktop application, and do you think this would be an appropriate approach? I don't suppose you've tinkered around with an WPF implementation of your keyboard, have you?
Any advice would be deeply appreciated - thank you very much.
yours respectfully,
James Hurst
of New Orleans, LA
US
James Hurst
"The greatness of a nation and its moral progress can be judged by the way its animals are treated."
Mahatma Gandhi
|
|
|
|
|
Hi James,
I appreciate your words about my work, thank you!
As long, as this script works fine offline as HTML/HTA, i suggest you embedding browser window into the application and pointing it to the specially designed html file, like the demo_inline.html from the packages. This way you'll make a sort of the offline browser, with the limited functionality.
But... you can't rely on the embedded HTML application, due to lot's of limitations it has.
1) you can't detect a correct keyboard scancodes layout from the Javascript. You'll have to embed some ActiveX object to the browser for keyboard layout autodetection.
2) you'll be limited with Jsvk to input text into the HTML text fields only. Otherwise, another ActiveX component implementing TextRange interface for the window controls will be required.
If you'll take this way, feel free contacting me for any help and keyboard code customizations.
PS: i suggest you to take a look on Mozilla XUL/XULRunner and Adobe AIR platforms, possibly they will be more suitable for this task. For example, they does embed SQLite database, which makes applications highly portable...
With the best regards,
Ilya
|
|
|
|
|