文档章节

js+c#打造多语种输入法虚拟键盘的网站在线输入(创世纪篇)

crossmix
 crossmix
发布于 2015/11/27 10:08
字数 893
阅读 482
收藏 3

   个性化的VirtualKeyboard,虚拟键盘,即不需要用输入法打字,直接在网页中实现多语种在线输入。有点类似沪江小D,dahanyu.com,青云在线的网站。

   最近做项目时,客户需要利用触摸屏进行操作,不外接鼠标键盘,但要求能录入文字,包括数字,英文,中文,德文,法文,西文等,这有点类似于google translate .

   Google Translate 产品 Google 翻译输入框已整合 Google 输入工具,可以实现 Google 翻译支持的 65 种不同语言间输入法的切换,例如中文,从翻译语言中选择源为中文,翻译框左边会多出一个输入法按钮,点击即可激活输入法,并且可以通过输入法菜单选择默认的拼音输入法之外的五笔、注意输入法等输入方式。图下,

javascript语言实现(适合php网站)

其实要实现类似于Google多语种 虚拟键盘输入,是靠js来实现的,js有一款功能强大的JS虚拟键盘插件----virtualkeyboard.

  VirtualKeyboard,它内置了100多种键盘布局和200多种输入法,9套可选皮肤方案,而且支持自建输入法,功能相当强大。开发类似谷歌在线输入多语种键盘绰绰有余,有些可以自定义添加。

  图:

我正在做网页前端开发,自然上路啦,let't do it!

  

项目页面中引用JS文件:

<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网站)

C#Winform实现简单的虚拟键盘


关键技术点有两个:

1.将键盘所在的窗体设置为浮动工具条窗体。只要将窗体的CreateParams重写即可,这样窗体就不会获取焦点,代码如下:

#region 将当前窗体指定为浮动工具条窗体
public enum WindowStyles : uint
{

WS_OVERLAPPED =  0x00000000 ,
    WS_POPUP =  0x80000000 ,
    WS_CHILD =  0x40000000 ,
    WS_MINIMIZE =  0x20000000 ,
    WS_VISIBLE =  0x10000000 ,
    WS_DISABLED =  0x08000000 ,
    WS_CLIPSIBLINGS =  0x04000000 ,
    WS_CLIPCHILDREN =  0x02000000 ,
    WS_MAXIMIZE =  0x01000000 ,
    WS_BORDER =  0x00800000 ,
    WS_DLGFRAME =  0x00400000 ,
    WS_VSCROLL =  0x00200000 ,
    WS_HSCROLL =  0x00100000 ,
    WS_SYSMENU =  0x00080000 ,
    WS_THICKFRAME =  0x00040000 ,
    WS_GROUP =  0x00020000 ,
    WS_TABSTOP =  0x00010000 ,

    WS_MINIMIZEBOX =  0x00020000 ,
    WS_MAXIMIZEBOX =  0x00010000 ,

    WS_CAPTION = WS_BORDER | WS_DLGFRAME,
    WS_TILED = WS_OVERLAPPED,
    WS_ICONIC = WS_MINIMIZE,
    WS_SIZEBOX = WS_THICKFRAME,
    WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW,

    WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
    WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU,
    WS_CHILDWINDOW = WS_CHILD,

     // Extended Window Styles

    WS_EX_DLGMODALFRAME =  0x00000001 ,
    WS_EX_NOPARENTNOTIFY =  0x00000004 ,
    WS_EX_TOPMOST =  0x00000008 ,
    WS_EX_ACCEPTFILES =  0x00000010 ,
    WS_EX_TRANSPARENT =  0x00000020 ,

     // #if(WINVER >= 0x0400)

    WS_EX_MDICHILD =  0x00000040 ,
    WS_EX_TOOLWINDOW =  0x00000080 ,
    WS_EX_WINDOWEDGE =  0x00000100 ,
    WS_EX_CLIENTEDGE =  0x00000200 ,
    WS_EX_CONTEXTHELP =  0x00000400 ,

    WS_EX_RIGHT =  0x00001000 ,
    WS_EX_LEFT =  0x00000000 ,
    WS_EX_RTLREADING =  0x00002000 ,
    WS_EX_LTRREADING =  0x00000000 ,
    WS_EX_LEFTSCROLLBAR =  0x00004000 ,
    WS_EX_RIGHTSCROLLBAR =  0x00000000 ,

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随笔


© 著作权归作者所有

共有 人打赏支持
上一篇: sql经典语句大全
下一篇: linq学习圣经
crossmix
粉丝 66
博文 305
码字总数 645711
作品 0
广州
高级程序员
私信 提问
语音识别率再提升!讯飞输入法引领交互方式,以AI赋能保乡音

2018年6月12日,讯飞输入法在京举办了主题为“爱输入·更懂你”的媒体见面会,并正式启动“AI方言发音人招募”公益行动。在这场以“交互方式和AI赋能保护濒危方言”为核心的发布会开始之前,...

智科技
06/13
0
0
MrEO/QmlInputMethod

QML输入法 本项目分为两个模块:中文输入法和虚拟键盘 其中输入法模块可单独使用,而虚拟键盘模块依赖输入法模块 输入法 Introduction QML输入法,过滤键盘事件,分割拼音并从数据库获取词组...

MrEO
01/02
0
0
iOS 输入框限制字数一步到位

// 注册输入框改变监听方法 [editTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; // 以下为输入框改变方法实现: - (void)textF......

小鹏GG丶
2017/11/01
0
0
人工智能离我们有多近?看看你正在打字的输入法!

  这个世界上,最公平的就是时间,但往往造就不公平的人生。为什么你跟别人花了一样的时间,却不如别人输出的内容多,拉开你们之间差距的到底是什么?或许不是能力、也不是聪明才智,很可能...

人工智能那些事
04/12
0
0
Fcitx 4.1 的开发进度

Fcitx──小企鹅输入法:Free Chinese Input Toy for X是一个以 GPL方式发布的、基于XIM的简体中文输入法(即原来的G五笔),包括拼音(全拼和双拼)、区位以及码表输入模块,是在Linux操作系统中...

红薯
2011/06/02
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
0
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
2
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
0
0
Python的安装及文件类型、变量

一、为什么学习python 服务于大数据、人工智能、自动化运维。 简单易学 代码简洁 薪资高 近几年越来越火 二、Python的安装 linux 系统默认安装, CentOS7 默认安装了python2.7 安装ipython y...

枫叶云
昨天
1
0
JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理...

ThinkGem
昨天
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部