嵌入式Linux系统的软键盘实现

合集下载

嵌入式Linux系统的设计与实现

嵌入式Linux系统的设计与实现

嵌入式Linux系统的设计与实现一、概述嵌入式系统(Embedded System)是指以嵌入式处理器为核心,集成有限的资源完成特殊功能的计算机系统。

而Linux是一种流行的开源操作系统,底层的内核提供了强大的驱动和内存管理功能。

通过将二者结合,可以设计出高效、可靠的嵌入式Linux系统。

本文将分别从嵌入式系统和Linux系统的角度探讨嵌入式Linux系统的设计与实现。

二、嵌入式系统的基础架构嵌入式系统的基础架构通常由芯片、操作系统、应用软件和外设组成。

其中,芯片是嵌入式系统的核心,决定了整个系统的性能和功能;操作系统提供了嵌入式系统的基本支持和管理;应用软件是嵌入式系统的具体功能部分;而外设则可以满足系统与外界的交互需求。

三、嵌入式Linux系统的开发流程1. 准备工作在开发嵌入式Linux系统之前,需要准备好开发环境,包括开发板、调试器、仿真器、编译器、调试工具等。

此外,还需要掌握嵌入式Linux系统的基本知识和基础编程技巧。

2. 制定系统设计规划根据实际需求,制定嵌入式Linux系统的设计规划。

包括选择合适的芯片、操作系统版本、应用软件和外设等。

3. 编写驱动程序驱动程序是嵌入式Linux系统的核心部分,负责管理硬件设备和提供系统调用接口。

驱动程序需要根据芯片和外设的不同而有所区别。

4. 编译内核内核是操作系统的核心部分,提供了大量的服务和管理功能。

编译内核需要根据芯片和操作系统的不同而有所区别。

5. 构建文件系统文件系统是操作系统的重要组成部分,提供了文件存储和管理功能。

构建文件系统需要根据实际需求制定文件系统结构。

6. 编写应用程序应用程序是嵌入式Linux系统的具体功能部分,需要根据系统需求编写不同的应用程序。

这些应用程序可以基于系统调用接口进行开发。

7. 调试和优化开发嵌入式Linux系统之后,需要进行调试和优化以确保其能够正常运行和提供良好的性能。

调试和优化需要根据实际情况进行。

基于嵌入式Linux的Qtopia阿拉伯文环境解决方案

基于嵌入式Linux的Qtopia阿拉伯文环境解决方案

系统的多语言环境需求 日益迫切 。 嵌人式 Ln x iu 在嵌入式领域的应用越来越广泛 , 优势主要表 现在 其 源码开放 、 模块可定制 、 图形用户界面 、 强大的网络功能 、 运行稳 定 、 移植 方便等 [ 。 当前嵌入式 L u 的 G I 日益完善 , 是它所开发的应 用程序往 ix n U正 但 往是英文的 , 这对于使用其他语 言文字 的国家, 使用它并进 行应用程 序 开发造成了很大的障碍 。
基于嵌入式 Lnx Qoi 阿拉伯文环境解决 方案 i 的 t a u p
姜 伟 天津工业大学计算机科 学与软件
【 摘
要】 随着嵌入 式系统 的广泛应用, 嵌入 式系统平 台对 于其他语言环境 支持 的需求 日 益迫切 , 文章讨论 了嵌入 式系统 国际化发展现状 , 阐述 了 本地化 Qoi 阿拉伯文环境 t a p
N O ( 和 Q . R N L T — O P )4。它们 仅仅为文 本做 出标签 , O P ) TT A S A E N O ( _ J 以便于被 1p a u dt e工具提取 。
[] 4 许立云. 智能手机开发平台 Q T中软键 盘的实现 与改进 [ B O ] E / L
B sd o a e n Emb d e i u e d d Ln x
Ab ta t Wih t e wi e u e o mb d e y t ms t e r q ie n s o t e n u g n i n n n e e d d s se a p ia in r e t g mo e a d mo e u - sr c : t h d s fe e d d s se .h e u r me t fo h rl g a e e v r me ti mb d e y tm p l t s a e g t n r n r r a o c o i g n . h r c e d s u s s t e c re t i ai n o n e n t naiai n o mb d e y tm , e c b d h w t mp e n ip a i g a d i p ti g Ar b c b s d o e t T e a t l ic s e u r n t t f i tr ai l to f e e d d s se d s r e o o i l me td s l yn n n u tn a i a e n i h su o o z i

linux下如何模拟按键输入和模拟鼠标

linux下如何模拟按键输入和模拟鼠标

linux下如何模拟按键输入和模拟鼠标linux下如何模拟按键输入和模拟鼠标查看/dev/input/eventX是什么类型的事件,cat /proc/bus/input/devices设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。

linux/input.h中有定义,这个文件还定义了标准按键的编码等struct input_event {struct timeval time; //按键时间__u16 type; //类型,在下面有定义__u16 code; //要模拟成什么按键__s32 value;//是按下还是释放};code:事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0~127为键盘上的按键代码,0x110~0x116 为鼠标上按键代码,其中0x110(BTN_ LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_ MIDDLE)为鼠标中键.其它代码含义请参看include/linux/input.h文件. 如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).type:EV_KEY,键盘EV_REL,相对坐标EV_ABS,绝对坐标value:事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_ REL,value的正数值和负数值分别代表两个不同方向的值./** Event types*/#define EV_SYN 0x00#define EV_KEY 0x01 //按键#define EV_REL 0x02 //相对坐标(轨迹球)#define EV_ABS 0x03 //绝对坐标#define EV_MSC 0x04 //其他#define EV_SW 0x05#define EV_LED 0x11 //LED#define EV_SND 0x12//声音#define EV_REP 0x14//repeat#define EV_FF 0x15#define EV_PWR 0x16#define EV_FF_STATUS 0x17#define EV_MAX 0x1f#define EV_CNT (EV_MAX+1)1。

嵌入式linux系统的学习方法及流程

嵌入式linux系统的学习方法及流程

嵌入式linux系统的学习方法及流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!嵌入式Linux系统学习方法及流程详解在数字化时代的今天,嵌入式Linux系统因其开放源码、稳定可靠等特性,被广泛应用于各种智能设备和物联网系统中。

天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发

天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发
3.1.1 嵌入式软件体系结构 3.1.2 基于Linux的嵌入式软件
18:19
4
3.1.1 嵌入式软件体系结构
18:19
5
1. 设备驱动层
设备驱动层是嵌入式系统中必不可少的重 要部分,使用任何外部设备都需要有相应 驱动程序的支持,它为上层软件提供了设 备的操作接口。 上层软件不用理会设备的具体内部操作, 只需调用驱动层程序提供的接口即可。 驱动层一般包括硬件抽象层HAL、板级支 持包BSP和设备驱动程序。
18
3.2.2 基于开发板的二次开发
所谓二次开发是利用现成的开发板进行开发,不同于通用 计算机和工作站上的软件开发工程,一个嵌入式软件的开 发过程具有很多特点和不确定性。其中最重要的一点是软 件跟硬件的紧密耦合特性。 由于嵌入式系统的灵活性和多样性,这样就给软件设计人 员带来了极大地困难。第一,在软件设计过程中过多地考 虑硬件,给开发和调试都带来了很多不便;第二,如果所 有的软件工作都需要在硬件平台就绪之后进行,自然就延 长了整个的系统开发周期。这些都是应该从方法上加以改 进和避免的问题。 为了解决这个问题,通常的做法是基于某种开发板做二次 开发,从这个角度看,硬件开发所占的比重不到20%,而 软件开发的比重占到了80%。
3.1 嵌入式软件结构 3.2 嵌入式软件开发流程 3.3 嵌入式linux开发环境 3.4 嵌入式系统引导代码 3.5 linux内核结构及移植 3.6 嵌入式文件系统及移植 3.7 linux设备驱动概述 3.8 设备驱动程序接口 3.9 linux设备驱动开发流程
18:19 3
3.1 嵌入式软件结构
?在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器rs232接口lcd等等

嵌入式Linux系统的设计与实现

嵌入式Linux系统的设计与实现

嵌入式Linux系统的设计与实现随着信息时代的发展,嵌入式系统越来越得到广泛应用。

作为一种典型的嵌入式系统,嵌入式Linux系统已经成为了通行的选择。

本文将进一步探讨嵌入式Linux系统的设计与实现。

一、嵌入式Linux系统概述嵌入式系统是一种计算机系统,与传统计算机系统相比,它更加具有针对性和实用性。

嵌入式Linux系统基于Linux,其核心是Linux内核,而其它功能模块由Linux内核和用户自定义的应用程序共同组成。

常用的开发板有树莓派、Orange Pi等等。

二、嵌入式Linux系统的设计嵌入式Linux系统的设计需要从以下几个方面进行考虑。

1.硬件驱动为了满足定制化的需求,硬件驱动是嵌入式Linux系统设计的第一步。

硬件驱动要根据开发板的型号、版本以及用户自定义的需求确定所需的内核模块。

有时,用户需要自己编写内核模块,以兼容自己定制板的各种接口和组件。

2.系统工具系统工具包括调试、部署、测试等工具。

在嵌入式Linux系统的设计过程中,需要选择一台开发机来完成系统工具的编写和配置。

Linux系统提供了强大的命令行工具,例如GDB(GNU调试器)、strace(系统调用跟踪器)等等。

这些工具可以帮助开发者快速诊断和解决问题。

3.内存管理由于嵌入式系统的内存和磁盘资源比传统计算机系统要匮乏得多,因此对内存管理的要求极为严格。

嵌入式Linux系统需要采取各种控制手段,减少内存泄露和内存碎片,并及时释放不必要的内存资源。

优化内存管理对于增强系统的稳定性和可靠性至关重要。

三、嵌入式Linux系统的实现在完成嵌入式Linux系统的设计后,需要进行实现。

在实现过程中,以下几个方面需要重点关注。

1.交叉编译由于嵌入式Linux系统的运行环境和开发环境不同,需要进行交叉编译。

交叉编译指的是在PC机上编译生成可在嵌入式设备上运行的可执行文件。

编译时,需要选择合适的编译器、链接器和库文件。

2.系统部署系统部署是嵌入式Linux系统实现的最后一步工作,也是最重要的一个工作。

嵌入式Linux软件开发环境搭建

嵌入式Linux软件开发环境搭建

第4章嵌入式Linux软件开发环境搭建1.1 体验嵌入式linux系统1. 获得光盘image目录提供的映像文件2. 使用h-jtag将u-boot.bin烧写进nor flash中3. 启动超级终端,设置bautrate为115200,8IN1。

重启开发板,将会进入u-boot的命令界面。

表明bootloader已正常运行Dennis Yang >4. 在PC机上安装usb驱动(安装文件位于光盘software\USB Download Driver.exe)5. 用usb线将PC机与开发板连接起来6. 在PC机上启动USB传输软件dnw(位于光盘software\dnw.exe)7. 在开发板上输入usbslave命令,让开发板进入等待接收数据状态Dennis Yang > usbslave 1 0x32000000USB host is connected. Waiting a download8. 在dnw软件界面,单击“USB Port”-->“Transmit/Restore”,找到image目录中的kernel 文件uImage(如果你使用的是天嵌tq2440,请选择uImage-embsky),进行传输。

这将导致uImage被传输到开发板内存的0x32000000处Dennis Yang > usbslave 1 0x32000000USB host is connected. Waiting a download.Now, Downloading [ADDRESS:32000000h,TOTAL:1518826]RECEIVED FILE SIZE: 1518826 (741KB/S, 2S)9. 在u-boot命令行输入命令,将nand flash的0x100000 -- 0x400000区间擦除(格式化)Dennis Yang > nand erase 0x100000 0x300000NAND erase: device 0 offset 0x100000, size 0x30000Erasing at 0x120000 -- 133% complete.OK10. 在u-boot命令行输入命令,将内存0x32000000处的kernel烧写到nand flash的0x100000-- 0x400000区间Dennis Yang > nand write.jffs2 0x32000000 0x100000 0x300000NAND write: device 0 offset 0x100000, size 0x300000Writing data at 0x3ff800 -- 100% complete.3145728 bytes written: OK11. 使用相同的方法将根文件系统(myfs-128M.jffs2,如果使用64M的nand flash,请选择myfs-64M.jffs2)烧写到nand flash的0x400000 -- 0x3c00000区间Dennis Yang > usbslave 1 0x30000000USB host is connected. Waiting a download.Now, Downloading [ADDRESS:30000000h,TOTAL:24594994]RECEIVED FILE SIZE:24594994 (667KB/S, 36S)Dennis Yang > nand erase 0x400000 0x3c00000NAND erase: device 0 offset 0x400000, size 0x3c00000Erasing at 0x3fe0000 -- 100% complete.OKDennis Yang > nand write.jffs2 0x30000000 0x400000 $(filesize)NAND write: device 0 offset 0x400000, size 0x1774a28Writing data at 0x1b74800 -- 100% complete.24594984 bytes written: OK12. 输入启动操作系统命令,将进入linux操作系统Dennis Yang > boot13. 使用触笔进行屏幕校正后,将进入qtopia图形系统如果由于屏幕校正不准确而不能正常使用触摸屏的话,请删除/etc/pointercal文件后,重启开发板,重新进行校正14. 在linux命令提示符下,播放歌曲# madplay /music/pianpianxihuanni.mp3MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.Title: Track 1Artist: 陳百強Orchestra: 陳百強Album: Best MemoryTrack: 15Genre: Other1.2 Linux操作系统安装1.2.1在Window上安装虚拟机本书基于ubuntu9.10进行开发,它是一个容易安装和使用的Linux发行版,光盘映像文件可以自由从互联网上获得,在配套光盘中提供了该文件(software/ubuntu-9.10-desktop-i386.iso)。

成都理工嵌入式实验报告

成都理工嵌入式实验报告
// 0 1 2 3 4 5 6 7 8 9
int data[10];
fd =open(DEVICE_NAME ,O_RDWR);
if(fd==-1)
{
printf("err");
}
else{
buf[0]=0x22;
while(1)
{
read(fd,buf,1);
if(buf[0]!=pre_scancode)
{
if(buf[0]!=0xff)
{
printf("key=%x\n",buf[0]);
fd2 = open(DEVICE_NAME2, O_RDWR);
printf("fd = %d\n", fd2);
if(fd2 == -1)
{
}
else
{
data[0]=0x00;
write(fd2,data, 1);
printf("close keypad_driver test\n");
}
}
实验三 网络数据传输实验
1.实验题目及要求
1.1实验题及目的
实验题目:嵌入式linux网络编程
实验目的:
熟悉linux的TCP/IP操作函数;
掌握linux的编程方法;
1.2 实验要求
要求:实现上位机(PC,ubuntu)串口2与实验板(ARM,嵌入式linux)的TCP数据通信。该程序包括服务器端程序(sever)和客户端程序(client)。Ubuntu上运行服务器端程序(sever),ARM实验板上运行客户端程序(client)。传输模拟转数字信号并存入文件。
perror("accept");
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式Linux系统的软键盘实现
随着对嵌入式系统体积小型化和操作人性化的要求,以
及大尺寸触摸式显示屏的广泛应用,在嵌入式系统中采用软
键盘实现字符的输入,已经成为目前的发展主流。QT是一
个跨平台的C++图形界面库,是由挪威TrollTech公司推出的
产品。它采用的是面向对象的程序设计思想,因此,具有良
好的可扩展性和可移植性,同时支持多个GUI平台的交互开
发。QT采用了良好的封装机制,使得它的模块化程度非常
高,可重用性好,开发方便。凭借其良好的性能,QT已成
为目前GUI开发中使用最为广泛的图形界面库之一。QT/E
(QT/Embedded)是用于嵌入式系统的QT版本。QT/E去掉
了对XLib的依赖而直接工作于Frame
Buffer上,因而效率更高,文中主要使用QT4.5.3版本,在
嵌入式Linux环境下实现软键盘设计。

1
QT/E体系结构

QT/E是2001年Trolltech公司开发的一款面向嵌入式系统的
QT版本。它采用轻量级窗口系统,完全摒弃了底层的XLib,
以Framebuffer作为底层图形接口,极大地减少了对内存的
消耗。QT/E在上层仍然保持着原来的QT架构,因此,针对
在Xwindow上设计的QT程序仍然具有很好的移植性。QT/E
的基本体系结构如图1所示。

1)QT/E体系结构中的图形引擎是通过相关的图形算法和
Framebuffer操作底层的硬件设备来实现的;事件驱动则是通
过底层的输入输出设备驱动来实现对外界事件的响应。

2)如图1所示,由图形引擎层实现对图形界面的绘图操作,
然后由QT基本类提供对外界的操作接口。其中,图形类提
供图形操作接口,比如:画线、画矩形等;控件类通过继承
公共抽象类QWidget来实现基本的控件,为外界提供接口。
2 QT/E通信机制

在图形界面编程时,我们经常要实现界面之间的相互切换或
者相互通知,更具体的来说就是需要实现类与类之间的相互
通信。比如,在软键盘的设计中,当一个事件产生时,系统
就会发出一个信号。信号和槽(Signal&slot)机制是QT
的核心特征,在QT库中有很多已经设置好的信号,比如:
clicked()、triggered()等,开发人员也可以根据需要来自
定义某些信号。事件的响应对应着QT窗口里的槽函数,和
信号类似,系统有很多预定义的槽,比如exit()、quit()
等,用户也可以根据需要来添加自己的槽函数。

当对象改变其状态时,信号就由该对象发射(emit)出去,
这就是对象所要做的全部事情,它不知道另一端是谁在接收
这个信号。这就是真正的信息封装,它确保对象被当作一个
真正的软件组件来使用。槽用于接收信号,但它们是普通的
对象成员函数。一个槽并不知道是否有任何信号与自己相连
接。而且,对象并不了解具体的通信机制。可以将很多信号
与单个槽进行连接,也可以将单个信号与很多槽进行连接,
甚至于将一个信号与另外一个信号相连接也是可能的。

因此,整个QT窗口的设计简单、灵活且扩展性好。信
号与槽之间的链接一般用connect()函数来实现,具体关联
方式和实现函数如图2所示:

3 基于QT/E软键盘的实现
文中主要根据项目的实际需要,在软键盘上制定了数字键、
字母键、退出键和确定键。具体分两步实现,第一步:在基
于linux环境的PC机上制定软键盘,并编写代码实现其按键
功能;第二步:生成能够在ARM板上运行的代码,并移植
到arm板上。

3.1 PC机x11环境下制定软键盘的模型

根据项目的实际需求,在PC机x11/QT环境下设计了软键盘
界面,该软键盘具有数字键、字母键、退出键和确定键,总
共42个按键,如图3所示。在linux环境的QT
designer下,创建新的widget,然后根据项目中所需要的按键
个数来确定软键盘的大小,在此,选择软键盘的外框大小为:
540x160.软键盘外框搭建完成之后,需要在软键盘区域内加
入实际所需要的按键。将Widget
Box下Buttons选项中的PushButton按键拖入到软键盘区域
内,在PushButton按键属性的文本编辑中填入按键值,比如
"1".在PushButton按键属性的名字编辑中填入按键名,比如
"n1".

同理,在软键盘区域内拖入实际所需要按键个数的按
键,根据所需要的键值修改每个按键上面的文本属性和名字
属性。按照一般键盘的布局对它们进行排列3.2 软键盘实现

如图3所示,首先建立了足项目要求的软键盘的基本模型,
接下来要实现的就是当按键响应时能够读出键盘值并将其
发送出去,具体实现的流程如图4所示。

图4中,初始化按键时,可以使用QSignalMapper类来
捆绑不同按键所发送的一系列无参数信号,并将其转发为有
参数的信号:
QSignalMapper*mapper=new QSignalMapper(this);
QSignalMapper的主要应用为可以实现一个函数响应不同按
钮的功能,下面举例来说明图4的具体实现过程:

首先设置软键盘界面名称为ui,然后以数字键"1"为例:将在
图3中数字键1对应的按键名称设为:n1,在图4中的第(1)
步中,建立键值"1"所对应的映射,代码如下:

mapper->setMapping(ui.n1,"1");
接着,在图4中的第(2)步,需要建立键值clicked对应的
信号与槽之间的关系代码如下:

connect(ui.n1,SIGNAL(clicked()),mapper,SLOT(map
()));
最后,将所需要用到的字母或者数字通过上述方式连接到槽
函数中。如图4中的(3),将这些所要求得到的字母或者数
字发送给焦点控件,代码如下:

connect(mapper,signal(mapped(const
QString&)),im,slot(sendcontent(const QStling&)))

上面语句中sendcontent()函数为发射子函数,具体代码如
下:

sendCommitString(content);
(1)

content.clear(); (2)

语句(1)将焦点控件内的字母和数字发送出去,语句(2)
清除发送框中的字母和数字,供下一次使用。
可以采用同样的方式,对软键盘中其它的按键进行映射函数
和连接函数的编写,然后在arm-linux-gcc环境下编译,生成
可以在arm板上运行的二进制文件。3.3 下载到目标板上运

本文的设计思路是:先将程序代码在PC机上调试通过,然
后将调试通过的程序代码在RAM-linux-gcc环境下进行编
译,生成可以在RAM板上运行的二进制文件,最后将此二
进制文件下载到目标板中。本文的前提是QT4.5.3环境已经
移植到开发板上,具体移植步骤在这里不作介绍。在终端上
面,运行启动软键盘指令,命令行后面加上"-qws"指令,运
行结果如图5所示。

图5是在实际项目中需要的预设手机号码的界面,在系统运
行前要先设置手机号码,以便系统故障时能够自动的给对应
的手机用户发送预警信息,使用户能够实时的了解自己系统
的运行状态。在该界面中,准备预设手机号码时,直接选择
打开软键盘按钮,图3所示的预制的软键盘会弹出界面,选
择要求预设的手机号码值,完成之后选择exit按键,软键盘
关闭。在此就可以用图5所示的软键盘完成手机号码的预设。

4 结束语
随着Linux操作系统的广泛应用以及人们对GUI人机交互界
面的更多需求,本文在linux操作系统的QT开发套件下,分
析了软键盘实现的原理,并完成了软键盘的设计。此软件盘
可以根据用户的要求来添加按键,与外部接入实体键盘相
比,不仅便利,还节约成本。通过实践证明此软键盘具有较
强的实时性和可靠性,可以广泛的应用于各种QT界面中。

相关文档
最新文档