景
最近在做一個(gè)項(xiàng)目,用戶端是觸摸屏,涉及到一些表單數(shù)據(jù)的操作,因?yàn)槭菦](méi)有外接的鼠標(biāo)鍵盤(pán),所以想著當(dāng)用戶在操作表單的時(shí)候,能夠把軟件鍵盤(pán)輸入法給調(diào)出來(lái)使用。
什么是觸滑輸入法
觸滑輸入法Swype,是針對(duì)觸摸屏這種輸入方式的革命性改進(jìn)產(chǎn)品,Swype根據(jù)滑動(dòng)的軌跡,智能分析并自動(dòng)拼寫(xiě)出所輸入的單詞。由于這種輸入方式不需要手指離開(kāi)屏幕,因此被人稱作滑行輸入。
網(wǎng)上找了下,發(fā)現(xiàn)了多文輸入法是不錯(cuò)的選擇,還有對(duì)應(yīng)的sdk,看了下介紹。專為觸控一體機(jī)設(shè)計(jì)的智能輸入法,包含有以下功能: →進(jìn)入新站點(diǎn) 支持全鍵盤(pán)、九宮格(T9模式)智能拼音、身份證鍵盤(pán),數(shù)字鍵盤(pán)等。支持手寫(xiě)識(shí)別。支持智能筆畫(huà)(T9筆畫(huà))??梢?..
于是說(shuō)干就干。
代碼實(shí)現(xiàn)
1、加載動(dòng)態(tài)庫(kù)
private const int WM_COPYDATA=0x004A;
// 結(jié)構(gòu)定義
public struct CopyDataStructIN
{
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}
//1
[ ]
private static extern bool DWAPI_SendCmdA(StringBuilder fullPath);
[ ]
public static extern int RegisterWindowMessage(string Name);
2、設(shè)置開(kāi)機(jī)啟動(dòng)
private void Form1_Load(object sender, EventArgs e)
{
// 輸入法主程序:DWMain.exe
// 它應(yīng)該是隨電腦開(kāi)機(jī)啟動(dòng),如果沒(méi)有啟動(dòng),你也可以在這里啟動(dòng)它。
// 路徑:安裝目錄\bin\windwos32\DWMain.exe
textBox2.LostFocus +=new EventHandler(txt_LostFocus); //失去焦點(diǎn)后發(fā)生事件
textBox2.GotFocus +=new EventHandler(txt_GotFocus); //獲取焦點(diǎn)前發(fā)生
}
3、鼠標(biāo)在文本框的時(shí)候,調(diào)用顯示方法
// 顯示
private void buttonShow_Click(object sender, EventArgs e)
{
DWAPI_SendCmdA(new StringBuilder("show"));
}
4、離開(kāi)的時(shí)候,退出輸入法
// 退出輸入法
private void buttonClose_Click(object sender, EventArgs e)
{
DWAPI_SendCmdA(new StringBuilder("close"));
}
效果圖如下
OT2000拼音(簡(jiǎn)體)轉(zhuǎn)換功能
拼音(簡(jiǎn)體)轉(zhuǎn)換
可以通過(guò)字符串輸入將所輸入的字符串轉(zhuǎn)換為中文(簡(jiǎn)體)。
轉(zhuǎn)換的方法如下所示。
拼音轉(zhuǎn)換:拼音→中文(簡(jiǎn)體)
通過(guò)設(shè)置了拼音轉(zhuǎn)換用的鍵代碼觸摸開(kāi)關(guān),或拼音轉(zhuǎn)換用鍵盤(pán)進(jìn)行字符串的轉(zhuǎn)換。
拼音(簡(jiǎn)體)轉(zhuǎn)換生效條件
字符代碼格式控制(GS456)的值 | GOT的系統(tǒng)語(yǔ)言 | [字符串輸入]對(duì)話框的[軟元件/樣式]頁(yè)的[字符代碼] |
0 | 中文(簡(jiǎn)體) | [系統(tǒng)語(yǔ)言聯(lián)動(dòng)] [Unicode] [GB] |
3 | ? 日語(yǔ) ? 英語(yǔ) ? 中文(簡(jiǎn)體) ? 中文(繁體) ? 韓語(yǔ) |
功能演示-功能設(shè)置
最終效果
使用用戶自制鍵盤(pán)
使用 系統(tǒng)按鍵窗口
最近有個(gè)朋友找我定制一個(gè)輸入法,需要高仿一個(gè)蘋(píng)果MAC電腦的輸入法,MAC操作系統(tǒng)的審美無(wú)疑是相當(dāng)棒的,于是乎直接拿以前的輸入法高仿了一個(gè),由于之前有做過(guò)輸入法這塊的開(kāi)發(fā),而且改進(jìn)了四年,各種需求都遇到過(guò),陸陸續(xù)續(xù)完善了很多年,所以這個(gè)高仿起來(lái)難度不大,而且要支持滑動(dòng)選詞,直接擼代碼。
1:采用Qt系統(tǒng)層輸入法框架,獨(dú)創(chuàng)輸入切換機(jī)制。
2:純QWidget編寫(xiě),支持任何目標(biāo)平臺(tái)(親測(cè)windows、linux、嵌入式linux等),支持任意Qt版本(親測(cè)Qt4.6.0到Qt5.11.2),支持任意編譯器(親測(cè)mingw、gcc、msvc等),支持任意控件輸入包括網(wǎng)頁(yè)中的輸入控件。
3:調(diào)用極為方便,pri文件調(diào)用形式,只要改成文件包含即可,例如pro文件中寫(xiě) include($$PWD/inputnew/inputnew.pri)。
4:界面清晰簡(jiǎn)潔,UI美觀友好,非常適合觸摸設(shè)備。
5:同時(shí)支持實(shí)體鍵盤(pán)輸入+鼠標(biāo)單擊輸入+觸摸輸入。
6:支持Qt程序嵌入的瀏覽器中的網(wǎng)頁(yè)中的文本框等控件的輸入。
7:支持迷你模式,界面大小隨意設(shè)置,采用布局自使用任何分辨率。
8:支持純數(shù)字鍵盤(pán)模式,自由控制彈出完整輸入法面板和數(shù)字鍵盤(pán)面板,只需要對(duì)控件設(shè)置屬性即可。例如ui->txt->setProperty(“flag”, “number”);
9:自由控制需要顯示輸入法和不需要顯示輸入法,當(dāng)某些控件不需要彈出輸入法,只需要對(duì)應(yīng)不需要彈出輸入法的控件設(shè)置屬性noinput為真即可。例如ui->txt->setProperty(“noinput”, true);
10:界面自適應(yīng)屏幕大小,輸入法彈出位置為控件底部時(shí),當(dāng)超過(guò)桌面右邊或者底部時(shí),自動(dòng)調(diào)整位置。
11:實(shí)現(xiàn)了長(zhǎng)按超過(guò)500毫秒重復(fù)執(zhí)行按下的鍵的功能。例如長(zhǎng)按退格鍵,不斷刪除。
12:shift鍵切換輸入法,esc鍵隱藏輸入法,空格選中第一個(gè)漢字,回車選中輸入的拼音。和搜狗輸入法處理一致。
13:英文、中文、數(shù)字字母、大小寫(xiě)、特殊字符自由切換。
14:支持單拼雙拼詞組輸入,網(wǎng)上大部分只支持單個(gè)漢字輸入。智能分頁(yè)算法,可任意翻頁(yè)查看漢字詞組。
15:默認(rèn)自帶5種皮膚顏色,可隨意切換,用戶也可用QSS自定義皮膚。
16:字庫(kù)文件可大可小,提供迷你版字庫(kù)大小僅120KB,方便存儲(chǔ)空間緊張的硬件,完整版字庫(kù)25MB。
17:可選谷歌內(nèi)核的輸入法引擎,字庫(kù)文件1MB,不依賴數(shù)據(jù)庫(kù),資源占用低效率極高。支持模糊拼音,比如nh=你好。
18:可選windows專有版本,支持外部程序輸入,比如輸入到記事本、QQ聊天窗口等。
19:整個(gè)輸入法代碼行數(shù)1000行左右,非常小,不會(huì)對(duì)程序增加大小造成負(fù)擔(dān)。
20:代碼結(jié)構(gòu)極為清晰,注釋詳細(xì),非常容易閱讀和理解,同時(shí)也可以自行修改拓展自定義的需求。
1:界面重新布局,高仿IOS輸入法。
2:頂部滑動(dòng)選詞+彈出漢字面板選詞,支持滑動(dòng)。
3:增加記憶功能,優(yōu)先詞庫(kù)首先顯示,支持單個(gè)拼音多個(gè)漢字,自動(dòng)調(diào)整優(yōu)先級(jí)。
4:增加造詞功能,可以直接打開(kāi)文件文件寫(xiě)入自定義詞組,最高級(jí)別顯示。