|
Differences Between the Packages
- 3.5.x release
- Implements experimental feature - keyboard translation mappings, configuring proper keys detection for QWERTY/QWERTZ/AZERTY and other keyboard drivers
- Full
- Contains the development release, as is. It includes layout sources and setup utility.
- Compact
- Has the same features as full release, but all scripts are packed and obfuscated with Tricky Scripter.
- Lite
- Has all scripts packed, as in the Compact package and does not include setup utility and layouts sources.
- TinyMCE, TinyMCE 3, Xinha
- Plugin for the corresponding WISIWYG editors, built from Compact package.
Introduction
Virtual Keyboard is the great thing when you can't install or use additional keyboard layouts bundled with your OS. For example, you're at the internet cafe where only En/US layout is available and you want to write some letters to your Russian, Korean, Japanese or any other friends. Yes, you can just transliterate your writing, but this will take much more time than you ever expect and makes reading boring.
This is the case to have the VirtualKeyboard installed on a site: you just open it and begin typing. Virtual keyboard will do the translation/transliteration job for you on the fly.
The same goes to the search engines, forums, webmail systems and much other online and offline applications. It makes sense to integrate a tiny app there and make life easier for you and your customers.
Virtual Keyboard Features
- Full keyboard and mouse input - you can even use them together, pressing keys and press Alt on the keyboard and click mouse on the virtual buttons
- Support for Microsoft Keyboard Layout Creator for easy creation of the new layouts
- Support for CSS skins to customize keyboard look
- Support for ltr and rtl scripts, automatically switching to the appropriate one
- Support for RichText editors
- Support for Chinese, Japanese, Korean, Lakhota IME's
- List of the supported layouts contains more than 130 layouts
Using the Code
Including Keyboard on the Page
- Add the following line to the head:
<SCRIPT src="vk_loader.js" type="text/javascript"></SCRIPT>
vk_loader.js has 2 optional params:
vk_skin points to the folder in the /css/ directory, which contains skin definitions
vk_layout passes layout name to enable on start, default is the first loaded one
Example:
<SCRIPT src="vk_loader.js?vk_layout=AM%20Armenian%20Eastern&vk_skin=small"
type="text/javascript"></SCRIPT>
- Add the following lines on the page with the text fields:
VirtualKeyboard.toggle('target_input_field_id','keyboard_holder_id');
i.e. I use it in the event handler to open the keyboard on button click.
Yes, that's all. No need to write any custom code, or whatever else. The solution is really solid.
Using IME Input
Let's type 'hello' - ni hao - in Chinese using Chinese Pinyin layout. Assume, you've opened the page with keyboard and selected a pinyin layout from the keyboard dropdown list.
- Typing any symbol, recognized as hieroglyph start you'll see apopup tool with the available suggestions. Type 'n'.
- Next typed symbol will reduce a list of available hieroglypgs. Type 'i' (ni).
- Pressing a digit you'll choose one of the available hieroglyphs from the IME popup. Pressing 'Enter' or any key, which is not recognized as a part of hieroglyph will insert default (1st) hieroglyph and begin matching hieroglyps with the last symbol. Type 'h' (nih).
- Type 'a' and 'o' (niha and nihao respectively).
- Press '1' or 'Enter' to complete the input. ?? is 'hello'.
Setup Layouts
Most times you have no need in all 130 layouts. Layout configuration is easy as follows...
Local Setup
- Launch /setup/in/setup.html script in IE6 or IE7
- Select the desired layouts and press the 'Process selected' button
- Copy layouts from /setup/out/layouts.js to /layouts/layouts.js
Server Setup (PHP Required)
- Delete /layouts/layotus.js file
- Launch /setup/in/setup.php script
- Select the desired layouts, select 'install' checkbox
- Press the 'Process selected' button
- If you haven't selected 'install' checkbox, layouts from /setup/out/layouts.js to /layouts/layouts.js
That's it. If you don't see the error messages, then you've successfully created new layouts bundle.
Developing New Layouts
Beginning
Any new layout should be described in the *.klc file, built using the Microsoft Keyboard Layout Creator tool. Using this, you'll assign letters and symbols to the keyboard keys, then save it to the *.klc file to the /setup/in/ folder.
Done, you've created a new layout for the VirtualKeyboard. If you aim to add some IME, please refer to the section below. If not, refer to the "Setup layouts" section above.
Adding IME
If you'd like to develop the advanced keyboard layout, you have to write some input processing code and place it in the correct place(s) under the /setup folder.
Setup Folder Structure
- /in
- Place for the *.klc source files
- /in/addons
- Contains files, named exactly as the target country in the locale code. (i.e. for ko-KR it is KR)
It keeps language-wide data, i.e. hieroglyph alphabet. - /in/addons/callbacks
- Contains files, named as the layout file name (i.e. chinese-cangjie.js) and contains layout-dependent JS code in the following format:
{'load' : function () {
}
,'activate' : function () {
}
,'charProcessor' : function (chr, buf) {
return [buf+chr, 0]
}
}
- /out
- Contains compiled layouts.js file, ready to be used with VirtualKeyboard.
License
Free License
Keyboard is distributed under LGPL/BSD license with the additional restrictions:
- Published keyboard should contain the visible copyright information and active link to the Official page.
- Custom keyboard design should keep copyright visible and accessible.
Commercial License
If you'd like to remove copyrights information from the keyboard UI, it's a good idea to get the commercial license. The cost of this license depends on:
- Integration and deployment requirements
- Support requirements
- Required layouts
- Field of application
- Custom development requirements
This license includes on-depends support, delivery of the hotfixes and lets you have an influence on the keyboard development by submitting the first-priority feature requests.
Services Offered
If you have anything you want to see in the keyboard, we offer software/framework integrating services, development of the custom layouts and keyboard modules and so on. Feel free to contact me and I'll take a look at solving your tasks in the best way.
Credits
Sites, Using VirtualKeyboard
Competitors
The Code Project already has a similar tool - http://www.codeproject.com/jscript/jvk.asp, but it lacks in the following aspects:
- Keyboard look cannot be customized easily
- Keyboard layouts are hard to create
- Complicated installation
SmartLink has the VirtualKeyboard too, but it is not so good either:
- It is commercial
- It has keyboard layouts in images
- It does process deadkeys in the weird way
- It does not support normal text edit workflow (at least, in FF it allows to append input chars only)
Gate2Home is nicer of the ones available, but it has limitations too:
- Not portable, you cannot set it upon the local site
- Page is full of ads
- Keyboard reload takes ages to complete (the whole page is reloaded)
History
- September 9th 2008
- VirtualKeyboard v3.4.3
- VirtualKeyboard v3.5.1
- Fixed browser window detection
- Fixed selection pixel coordinates calculation
- Added Chinese Traditional Pinyin layout
- Fixed "smart backspace" feature in the Korean layouts
- Updated Chinese Cangjie and Japanese layouts
- Fixed issue with blocking of the system hot keys (i.e. ctrl+c)
- Fixed text input from the popup keyboard
- Fixed bug with event handlers cleanup
- Refactored virtual buttons control code
- Fixed "sticky" keys on the keyboard
- September 2nd 2008
- VirtualKeyboard v3.4.2
- Maintenance release, including fixes from 3.5.0b1 and 3.5.0b2 releases
- Added better IME toolbar
- July 22nd 2008
- VirtualKeyboard v3.5.0b2
- Added better IME toolbar
- Updated mappings selector, added mapping groups
- Fixed bugs in Chinese Simplified Pinyin
- June 18th 2008
- VirtualKeyboard v3.5.0b1
- Added 15 more layouts: Chechen cyr/lat, Dari, Dinka, Kurdish arabic/cyr/lat, Pashto, Tagalog, Tajik lat, Turkmen cyr, Uighur arbic/cyr/lat, Urdu arabic
- Added keyboard input translation mappings
- QWERTY
- Standard, Canadian, Dutch, Estonian, Greek (220), Greek (319), Gujarati, Italian, Kannada, Portuguese, Scandinavian, Spanish, Tamil, Turkish, UK
- QWERTZ
- Albanian, Bosnian, Czech, German, Hungarian, Slovak, Swiss
- AZERTY
- Belgian, French
- ,WERTY
- Bulgarian
- QGJRMV
- Latvian
- UK-Dvorak
- FG;IOD
- Turkish F
- ;QBYUR
- US-Dvorak
- 56Q.OR
- US-Dvorak
- Fixed tab key in Internet Explorer
- Fixed input of the dead keys from driver, typing 2 symbols in the input field
- May 17th 2008
- April 24th 2008
- VirtualKeyboard v3.4.0
- Added iFrame keyboard module, isolating it from the main page and solving conflicts with Prototype and other frameworks
- Rewritten plugins for WISYIWYG editors, allowing any keyboard module integration
- March 28th 2008
- VirtualKeyboard v3.3.4
- Fixed selection processing from another window/frame
- Fixed event handlers cleanup for the removed elements
- Updated URL parameter names, now they are "
vk_skin" and "vk_layout"
- February 23rd 2008
- VirtualKeyboard v3.3.3
- Updated list of hieroglyps for Japanese IME
- Improved Lakhota IME
- Januari 11th 2008
- VirtualKeyboard v3.3.2
- Fixed setup scripts, incorrectly processing SGCaps tokens from MSKLC
- Added BOM token to the layouts.js, giving better UTF-8 recognition in browsers
- January 8th 2008
- VirtualKeyboard v3.3.1
- Made release preparations
- Fixed bug in
DocumentSelection, causing library errors on the empty iframe input
- December 25th 2007
- VirtualKeyboard v3.3.0b3
- Significantly improved load speed by delayed layouts initialization
- Simplified layout selection by using single dropdown box with layouts grouped by the language code
- Fixed issues in Safari
- December 19th 2007
- VirtualKeyboard v3.3.0b2
- Fixed issues in TinyMCE plugin
- Added plugin for Xinha
- Fixed processing 'Del' key in Internet Explorer
- October 28th 2007
- VirtualKeyboard v3.3.0b1
- Added RichEdit controls support
- Created TinyMCE plugin
- August 8th 2007
- VirtualKeyboard v3.2.1
.addLayout params list has been changed, now it requires the object of the special structure
- Fixed selection offset calculation
- Introduced layout-dependant CSS classes, allowing keyboard styling, dependent on the layout code
- Fixed FF bug with broken hieroglyphic layouts
- July 2nd 2007
- VirtualKeyboard v3.2.0b3
- Added Chinese Simplified Pinyin US, Chinese Simplified Cangjie, Lakhota Standard layouts
- Added configurable layout grouping in setup scripts
- Introduced new callback format with 'load' and 'activate' methods
- June 14th 2007
- VirtualKeyboard v3.2.0b1
- Added IME support
- Added Chinese Simplified IME layout
- Added support for page's vk_layout and vk_loader.js's layout params, setting initial layout
- May 30th 2007
- VirtualKeyboard v3.1.0
- Fixed Opera bug with script includes, preventing keyboard from working there
- Introduced 'binary' layout format, saving about 40% of layout size
- Added PHP script for layouts setup
- Added support for empty buttons in the layout
- Added Mongolian Cyr layout
- April 4th 2007
- VirtualKeyboard v3.0.6
- Emergency update, fixed deadkeys processing
- April 3rd 2007
- VirtualKeyboard v3.0.5
- All CSS manipulations are moved to
DOM.CSS class
- Events processing are done with
EventManager class
- Added several fixes in the keypress translation
- Added
VK_no_anim CSS class check on the target input fields to disable keys animation there
- March 7th 2007
- VirtualKeyboard v3.0.3
- Added Ctrl button and fixed AltGr via Alt+Ctrl emulation
- Fixed CSS, added support for FF1.0.5 and IE5.5
- March 5th 2007
- VirtualKeyboard v3.0.2
- Added 61 language and 119 layouts
- Fixed keyboard input translation
- Added ligatures support
- Fixed display of the "zero-width accent" chars
- February 23rd 2007
- VirtualKeyboard v3.0.1
- Added support for MSKLC
- Added support skins
- 48 languages and 98 layouts supported
- January 13th 2007
- First release at CodeProject
- VirtualKeyboard core v3.0b2
| You must Sign In to use this message board. |
|
| | Msgs 1 to 25 of 166 (Total in Forum: 166) (Refresh) | FirstPrevNext |
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi,
Thank you for choosing this keyboard for your project! =)
Could you post a link to your project here?
--Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Could you describe the problem with localhost installation? I see all my demo pages work fine with the password fields...
--Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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 // COMMA, CYRILLIC SMALL LETTER YERU, 11 W 1 0443 0423 -1 // CYRILLIC SMALL LETTER U, CYRILLIC CAPITAL LETTER U,
target is Russian
10 Q 1 0439 0419 -1 // CYRILLIC SMALL LETTER SHORT I, CYRILLIC CAPITAL LETTER SHORT I, 11 W 1 0446 0426 -1 // CYRILLIC SMALL LETTER TSE, CYRILLIC CAPITAL LETTER TSE,
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
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
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
First: thanks for this great software. Wonderful work.
I need to plug the VirtualKeyboard into TinyMCE3 running under the Drupal CMS and its tinymce module. I extracted the VirtualKeyboard distribution VirtualKeyboard.tinymce3.3.3.3.zip, copied the Jsvk folder to the tinymce3 plugins folder. But the keyboard icon does not show up in the tinymce3 controls. Is there any other setup necessary in tinymce for the VirtualKeyboard to show up? Thanks for your help.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hello,
Thank you for trying the VirtualKeyboard.
According to the example, you have to make Jsvk plugin registered in the TinyMCE editor:
tinyMCE.init({ mode : "textareas" ,theme : "advanced" ,plugins : "Jsvk" ,theme_advanced_buttons1_add_before : "Jsvk,separator" });
I don't know Drupal implementation of TinyMCE and can't suggest a good way to integrate VK there. Possibly you have to ask TinyMCE plugin maintainers for help in this task.
Best regards, Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Ilya,
Thanks for your quick response. I figured it out. In Drupal the TinyMCE module (all php in the Drupal world) is a wrapper around the tinyMCE editor and the plugins registration is driven through it. One needs to add the plugin init info into the function _tinymce_plugins() in the file plugin_reg.php in that module as follows:
$plugins['Jsvk'] = array(); $plugins['Jsvk']['theme_advanced_buttons1'] = array('Jsvk', 'separator');
And then of course one needs to go to the Drupal TinyMCE module configuration page and enable the button for this plugin. Everything works perfectly after that.
Thanks again for this wonderful software.
Best regards. Chandan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hello Chandan,
That's great that you've integrated VK with ease. Once i have more free time, i'll take a look on building the complete solution for the Drupal.
Feel free to contact me, if you'll have anything to discuss.
Best regards, Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hello Ilya:
Thanks for this great contribution. I am experimenting with this on Drupal with Tinymce editor. I followed all the tips given here by Chandan. I could see the keyboard icon in the page. But the click on it does not show up any keyboard at all on IE7. I could see "error on page" at the bottom of the window. Further do u have any plan to have phonetic keybaord layout?
Thanks in advance,
Sunil Jain
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hello Sunil,
Please post IE's error message here to let me see what's going on. It will be great if you could make a check with the FireFox, it has more verbose error reporting.
Regarding the phonetic keyboard - it might be better to open the separate discussion on this. Please explain what do you mean, because there's a lot of the possible phonetic layout implementations.
With the best regards, Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hello Ilya:
Thanks for your fast response. I did try to open the keyboard in Firefox. Pressing the keyboard icon does not react at all in Firefox. In IE7, it does show "error onpage" at the bottom left window. The deatiled message is drupal related which is:
line:22 char:1437 Error: Object does not support this property or method Code URL: http://localhost/drupal/?=node/add/page
Regarding Phonetic keyboard alayouts, I checked up the keyboards for various Indian languages. Currently, the layouts in the JVSK is typical Indian Typewrite layout. What I was looking for is something similar to one found on www.higopi.com under tools/unicode converter.
Thanks again,
Sunil
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Sunil,
Please install the "full" keyboard, which includes uncompressed code and make another report. Firefox error report would be very welcome.
--Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi Ilya,
Noticed another issue (firefox on ubuntu/gnome), clicks on certain keys or typing on the real keyboard under some languages on the VK seem to spawn new browser windows with the same url. Is this a known problem? If not, I'll try to make more detailed observations about the conditions under which it seems to happen.
Thanks and regards.
Chandan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi, Chandan
I've never heard or seen such a problem. Please, make more checks to see what happens there. Thank you for your attention.
Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Ilya,
Jsvk for tinymce3 stopped working with the latest tinyMCE 3.2 release for me. The keyboard shows up. But clicking the keys does not input any characters into the tinymce text area. When I type on the physical keyboard, the corresponding Jsvk keys light up.
Have you tried Jsvk with the latest tinymce 3.2?
Regards.
Chandan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi Chandan,
I'm sorry, i hadn't tested latest release with the tinyMCE editor, fix for this issue will be released soon. Fix is simple: you've to move line 880 to the line 873, updating nodes.attachedInput assignment to the correct node.
Excuse me for the lack of testing, please. Thank you for the reporting!
With the best regards, Ilya
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi Ilya,
Thanks for the quick response. I only looked at the Jsvk 3.5.1 for tinyMCE3 (latest 3.2) which contains compressed JS code. I guess you are talking about line numbers in the full source code version.
WingedFox wrote: Fix is simple: you've to move line 880 to the line 873, updating nodes.attachedInput assignment to the correct node.
It'll be great if you can release a fixed tinyMCE3 version soon. Thanks for the great work.
Regards.
Chandan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
| | |