個性化的VirtualKeyboard,虛擬鍵盤,即不須要用輸入法打字,直接在網頁中實現多語種在線輸入。有點相似滬江小D,dahanyu.com,青雲在線的網站。 javascript
最近作項目時,客戶須要利用觸摸屏進行操做,不外接鼠標鍵盤,但要求能錄入文字,包括數字,英文,中文,德文,法文,西文等,這有點相似於google translate . php
Google Translate 產品 Google 翻譯輸入框已整合 Google 輸入工具,能夠實現 Google 翻譯支持的 65 種不一樣語言間輸入法的切換,例如中文,從翻譯語言中選擇源爲中文,翻譯框左邊會多出一個輸入法按鈕,點擊便可激活輸入法,而且能夠經過輸入法菜單選擇默認的拼音輸入法以外的五筆、注意輸入法等輸入方式。圖下, html
javascript語言實現(適合php網站) 前端
其實要實現相似於Google多語種 虛擬鍵盤輸入,是靠js來實現的,js有一款功能強大的JS虛擬鍵盤插件----virtualkeyboard.
java
VirtualKeyboard,它內置了100多種鍵盤佈局和200多種輸入法,9套可選皮膚方案,並且支持自建輸入法,功能至關強大。開發相似谷歌在線輸入多語種鍵盤綽綽有餘,有些能夠自定義添加。 jquery
圖: app
我正在作網頁前端開發,天然上路啦,let't do it! 框架
項目頁面中引用JS文件: ide
<script type="text/javascript" src="jscripts/vk_loader.js?vk_layout=CN%20Chinese%20Simpl.%20Pinyin&vk_skin=flat_gray" ></script>
解釋一下:vk_layout=CN%20Chinese%20Simpl.%20Pinyin 表示默認輸入法設置爲簡體中文,
vk_skin=flat_gray 表示默認皮膚選用flat_gray。這兩個能夠根據我的須要進行設置。 函數
調用/隱藏虛擬鍵盤的函數:
VirtualKeyboard.toggle("txt_Search", "softkey");
txt_Search是文本框的ID,softkey是虛擬鍵盤顯示位置元素的ID。
下面是個簡單的例子:
code:
<html> <head> <script type="text/javascript" src="vk_loader.js?vk_layout=CN%20Chinese%20Simpl.%20Pinyin&vk_skin=flat_gray" ></script> </head> <body> <input type="text" id="txt_Search" onfocus="VirtualKeyboard.toggle('txt_Search', 'softkey')" onblur="VirtualKeyboard.toggle('txt_Search','softkey');" /> <div id="softkey"></div> </body> </html>
手動添加多語言
<select id=\"kb_langselector\"></select>" + "<select id=\"kb_mappingselector\"></select>"
kb_mappingselector是鍵盤佈局選擇框的ID,kb_langselector是輸入法選擇框的ID,kb_langselector就是咱們要的ID。
網站所使用的框架是jquery.
還有一種語言c#(asp.net網站)
關鍵技術點有兩個:
1.將鍵盤所在的窗體設置爲浮動工具條窗體。只要將窗體的CreateParams重寫便可,這樣窗體就不會獲取焦點,代碼以下:
#region 將當前窗體指定爲浮動工具條窗體
public enum WindowStyles : uint
{
WS_EX_CONTROLPARENT = 0x00010000,
WS_EX_STATICEDGE = 0x00020000,
WS_EX_APPWINDOW = 0x00040000,
WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE),
WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST),
//#endif /* WINVER >= 0x0400 */
//#if(WIN32WINNT >= 0x0500)
WS_EX_LAYERED = 0x00080000,
//#endif /* WIN32WINNT >= 0x0500 */
//#if(WINVER >= 0x0500)
WS_EX_NOINHERITLAYOUT = 0x00100000, // Disable inheritence of mirroring by children
WS_EX_LAYOUTRTL = 0x00400000, // Right to left mirroring
//#endif /* WINVER >= 0x0500 */
//#if(WIN32WINNT >= 0x0500)
WS_EX_COMPOSITED = 0x02000000,
WS_EX_NOACTIVATE = 0x08000000
//#endif /* WIN32WINNT >= 0x0500 */
}
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.Style = (int)WindowStyles.WS_THICKFRAME | (int)WindowStyles.WS_CHILD;
ret.ExStyle |= (int)WindowStyles.WS_EX_NOACTIVATE | (int)WindowStyles.WS_EX_TOOLWINDOW;
ret.X = this.Location.X;
ret.Y = this.Location.Y;
return ret;
}
}
#endregion
像滬江小D網站就是c#語言的實現。
end
david he隨筆