CN103164265A - 基于Linux***的输入事件处理方法和*** - Google Patents
基于Linux***的输入事件处理方法和*** Download PDFInfo
- Publication number
- CN103164265A CN103164265A CN 201110426192 CN201110426192A CN103164265A CN 103164265 A CN103164265 A CN 103164265A CN 201110426192 CN201110426192 CN 201110426192 CN 201110426192 A CN201110426192 A CN 201110426192A CN 103164265 A CN103164265 A CN 103164265A
- Authority
- CN
- China
- Prior art keywords
- incoming event
- linux system
- shape library
- module
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Processing Of Solid Wastes (AREA)
Abstract
本发明提供了一种基于Linux***的输入事件处理方法和***,其中,所述方法包括:步骤1:获取基本输入事件;步骤2:将所述基本输入事件转换成图形库消息;步骤3:响应所述图形库消息;其中,所述步骤2与步骤1于同一进程进行,或者所述步骤2与步骤3于同一进程进行。通过将基本输入事件转换成图形库消息与获取基本输入事件于同一进程进行,或者将基本输入事件转换成图形库消息与响应所述图形库消息于同一进程进行,使得对输入事件的处理只需要进行一次派发过程,从而降低了***开销及运行时间。
Description
技术领域
本发明涉及操作***技术领域,特别涉及一种基于Linux***的输入事件处理方法和***。
背景技术
作为一个开放源代码并且免费的操作***,Linux***已经广泛应用在服务器、嵌入式等领域。Linux***执行程序时可以分作两个部分,一个为核心区间(Kernel Space),也可称为内核、核心层或者Kernel等;另一个为使用者区间(User Space),也可称为用户区间或者用户层等。与硬件相关的存取控制都是在内核中执行,而一般使用者写的程序都是在用户层执行。用户层和内核是两个不同的区域,各区域无法直接使用对方的资源,需要通过一些***调用才能进行。***调用会对调用者的权限和操作做检查,以保护内核程序的运行,所述内核程序的运行也可以称为内核线程的执行。例如,当要存取硬件时,会通过***调用(System Call)的方式从用户层跳到内核去执行,如通过驱动(Drivers)存取硬件信息。
现有技术中,在Linux***下,对于输入事件的处理方法通常包括两次派发的过程。具体的,请参考图1,其为现有的基于Linux***的输入事件处理方法的流程示意图。如图1所示,所述处理方法包括:
步骤S10:获取基本输入事件,具体的,打开Linux输入设备的设备文件,读取输入设备的事件,完成这一读取操作后,进行下一步操作;
步骤S11:将所述基本输入事件转换成图形库消息,具体的,在用户层进程中,将从设备文件读取来的基本输入事件转换成图形库消息,而完成这一处理操作后,又将结果派发至相应的目标进程以进行下一步操作;
步骤S12:响应所述图形库消息,具体的,在用户层的目标进程中,根据派发来的图形库消息,做出响应,例如,表现为显示屏上某个窗口的打开或者关闭等。
如上所述,在现有技术中,需要进行两次派发过程,从而需要相对较大的***开销及运行时间。
发明内容
本发明的目的在于提供一种基于Linux***的输入事件处理方法和***,以解决现有技术中对输入事件的处理需要进行两次派发过程,从而需要相对较大的***开销及运行时间的问题。
为解决上述技术问题,本发明提供一种基于Linux***的输入事件处理方法,包括:
步骤1:获取基本输入事件;
步骤2:将所述基本输入事件转换成图形库消息;
步骤3:响应所述图形库消息;
其中,所述步骤2与步骤1于同一进程进行,或者所述步骤2与步骤3于同一进程进行。
可选的,在所述的基于Linux***的输入事件处理方法中,在内核线程中进行步骤1及步骤2,在目标进程中进行步骤3。
可选的,在所述的基于Linux***的输入事件处理方法中,在内核线程中进行步骤1,在目标进行中进行步骤2及步骤3。
可选的,在所述的基于Linux***的输入事件处理方法中,所述基本输入事件为直接来自输入设备的操作事件。
可选的,在所述的基于Linux***的输入事件处理方法中,所述输入设备包括鼠标、键盘、触摸屏中的一种或多种。
可选的,在所述的基于Linux***的输入事件处理方法中,每个输入设备具有一个与之对应的事件处理器,用以向目标进程派发消息。
可选的,在所述的基于Linux***的输入事件处理方法中,所述图形库消息包括得到焦点、失去焦点、键盘按键按下、键盘按键抬起、鼠标按键按下、鼠标按键抬起中的一种或多种。
本发明还提供一种基于Linux***的输入事件处理***,包括:
读取模块,用以获取基本输入事件;
处理模块,用以将所述基本输入事件转换成图形库消息;
响应模块,用以响应所述图形库消息;
其中,所述处理模块与读取模块于同一进程中工作,或者所述处理模块与响应模块于同一进程中工作。
可选的,在所述的基于Linux***的输入事件处理***中,所述读取模块与处理模块于内核线程中工作,所述响应模块于目标进程中工作。
可选的,在所述的基于Linux***的输入事件处理***中,所述读取模块于内核线程中工作,所述处理模块与响应模块于目标进程中工作。
可选的,在所述的基于Linux***的输入事件处理***中,所述基本输入事件为直接来自输入设备的操作事件。
可选的,在所述的基于Linux***的输入事件处理***中,所述输入设备包括鼠标、键盘、触摸屏中的一种或多种。
可选的,在所述的基于Linux***的输入事件处理***中,每个输入设备具有一个与之对应的事件处理器,用以向目标进程派发消息。
可选的,在所述的基于Linux***的输入事件处理***中,所述图形库消息包括得到焦点、失去焦点、键盘按键按下、键盘按键抬起、鼠标按键按下、鼠标按键抬起中的一种或多种。
在本发明提供的基于Linux***的输入事件处理方法及***中,通过将基本输入事件转换成图形库消息与获取基本输入事件于同一进程进行,或者将基本输入事件转换成图形库消息与响应所述图形库消息于同一进程进行,使得对输入事件的处理只需要进行一次派发过程,从而降低了***开销及运行时间。
附图说明
图1是现有的基于Linux***的输入事件处理方法的流程示意图;
图2是本发明实施例一的基于Linux***的输入事件处理方法的流程示意图;
图3是本发明实施例一的基于Linux***的输入事件处理***的模块示意图;
图4是本发明实施例一的获取基本输入事件的模块示意图;
图5是本发明实施例二的基于Linux***的输入事件处理方法的流程示意图;
图6是本发明实施例二的基于Linux***的输入事件处理***的模块示意图。
具体实施方式
以下结合附图和具体实施例对本发明提供的基于Linux***的输入事件处理方法及***作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
实施例一
在本实施例中,提供一种基于Linux***的输入事件处理方法。请参考图2,其为本发明实施例一的基于Linux***的输入事件处理方法的流程示意图。如图2所示,所述处理方法包括:
步骤S20:获取基本输入事件;
步骤S21:将所述基本输入事件转换成图形库消息;
步骤S22:响应所述图形库消息;
其中,所述步骤S21与步骤S20于同一内核进程进行。
在本实施例中,相应的,还提供一种基于Linux***的输入事件处理***。请参考图3,其为本发明实施例一的基于Linux***的输入事件处理***的模块示意图。如图3所示,所述处理***包括:
读取模块30,用以获取基本输入事件;
处理模块31,用以将所述基本输入事件转换成图形库消息;
响应模块32,用以响应所述图形库消息;
其中,所述处理模块31与读取模块30于同一内核进程中工作。
由此,通过该处理方法或者处理***只需在将基本输入事件转换成图形库消息之后,进行一次派发,将图形库消息派发至相应进程即可,从而降低了***开销及运行时间。
具体的,通过读取模块30获取直接来自输入设备的操作事件,所述输入设备例如包括:鼠标、键盘、触摸屏、写字板等,所述操作事件即为对各类输入设备的操作,例如,移动、单击、双击鼠标,敲打键盘,点击触摸屏等。
在本实施例中,获取基本输入事件是在内核线程中进行。请参考图4,其为本发明实施例一的获取基本输入事件的模块示意图。在本实施例中,仅示意性的示出了两个输入设备41,在本发明的其他实施例中,可包括多个输入设备,例如:包括三个输入设备,均为鼠标;或者包括三个输入设备,分别为:鼠标、键盘及触摸屏。在此,每个输入设备41均有一个与之对应的事件处理器(Handlers)44。当对一个输入设备41进行操作(例如:移动鼠标),从外部看产生操作事件,而从Linux***内部看产生一基本输入事件时,通过驱动42将基本输入事件传送至核心层(Input Core)43,接着,与***作的输入设备41对应的事件处理器(Handlers)44从核心层43中截取该基本输入事件,由此,便完成了获取基本输入事件的操作。
接着,同样在该内核线程中,处理模块31将所述基本输入事件转换成图形库消息。更具体的,可通过GUI(Graphical User Interface)***完成将基本输入事件转换成图形库消息的操作。所述图形库消息包括:得到焦点、失去焦点、键盘按键按下、键盘按键抬起、鼠标按键按下、鼠标按键抬、鼠标滚动等Linux***内部消息,通过将基本输入事件转换成图形库消息可便于后续Linux***对外部操作的响应。
由于,获取基本输入事件及将所述基本输入事件转换成图形库消息,该两步操作均是在内核线程中进行,因此,无需派发步骤。而当内核线程完成了对输入事件转换成图形库消息的操作之后,需要一派发步骤,即将图形库消息派发至相应的目标进程。考虑到目标进程可能处于非激活状态或者忙碌状态,进一步的,所述内核线程可先缓存该图形库消息,及至目标进程空闲并处于激活状态时,将该图形库消息发送至目标进程。而这些获取、处理及派发的操作均可通过与每个输入设备对应的事件处理器(Handlers)予以完成。
最后,目标进程根据派发来的图形库消息,做出响应。具体的,例如,表现为显示屏上某个窗口的打开或者关闭等。
实施例二
请参考图5及图6,其中,图5为本发明实施例二的基于Linux***的输入事件处理方法的流程示意图;图6为本发明实施例二的基于Linux***的输入事件处理***的模块示意图。
本实施例与实施例一的差别在于,所述步骤S51与步骤S52于同一进程进行,在此为目标进程,而步骤S50于另一进程进行,在此为内核线程;同样的,所述处理模块61与响应模块62于同一进程中工作,在此为目标进程,而读取模块60于另一进程中工作,在此为内核线程。易知的,由此,被派发的消息将为基本输入事件。其他处理可相应参考实施例一,本发明对此不再赘述。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (14)
1.一种基于Linux***的输入事件处理方法,其特征在于,包括:
步骤1:获取基本输入事件;
步骤2:将所述基本输入事件转换成图形库消息;
步骤3:响应所述图形库消息;
其中,所述步骤2与步骤1于同一进程进行,或者所述步骤2与步骤3于同一进程进行。
2.如权利要求1所述的基于Linux***的输入事件处理方法,其特征在于,在内核线程中进行步骤1及步骤2,在目标进程中进行步骤3。
3.如权利要求1所述的基于Linux***的输入事件处理方法,其特征在于,在内核线程中进行步骤1,在目标进行中进行步骤2及步骤3。
4.如权利要求1至3中的任一项所述的基于Linux***的输入事件处理方法,其特征在于,所述基本输入事件为直接来自输入设备的操作事件。
5.如权利要求4所述的基于Linux***的输入事件处理方法,其特征在于,所述输入设备包括鼠标、键盘、触摸屏中的一种或多种。
6.如权利要求5所述的基于Linux***的输入事件处理方法,其特征在于,每个输入设备具有一个与之对应的事件处理器,用以向目标进程派发消息。
7.如权利要求1至3中的任一项所述的基于Linux***的输入事件处理方法,其特征在于,所述图形库消息包括得到焦点、失去焦点、键盘按键按下、键盘按键抬起、鼠标按键按下、鼠标按键抬起中的一种或多种。
8.一种基于Linux***的输入事件处理***,其特征在于,包括:
读取模块,用以获取基本输入事件;
处理模块,用以将所述基本输入事件转换成图形库消息;
响应模块,用以响应所述图形库消息;
其中,所述处理模块与读取模块于同一进程中工作,或者所述处理模块与响应模块于同一进程中工作。
9.如权利要求8所述的基于Linux***的输入事件处理***,其特征在于,所述读取模块与处理模块于内核线程中工作,所述响应模块于目标进程中工作。
10.如权利要求8所述的基于Linux***的输入事件处理***,其特征在于,所述读取模块于内核线程中工作,所述处理模块与响应模块于目标进程中工作。
11.如权利要求8至10中的任一项所述的基于Linux***的输入事件处理***,其特征在于,所述基本输入事件为直接来自输入设备的操作事件。
12.如权利要求11所述的基于Linux***的输入事件处理***,其特征在于,所述输入设备包括鼠标、键盘、触摸屏中的一种或多种。
13.如权利要求12所述的基于Linux***的输入事件处理***,其特征在于,每个输入设备具有一个与之对应的事件处理器,用以向目标进程派发消息。
14.如权利要求8至10中的任一项所述的基于Linux***的输入事件处理***,其特征在于,所述图形库消息包括得到焦点、失去焦点、键盘按键按下、键盘按键抬起、鼠标按键按下、鼠标按键抬起中的一种或多种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110426192 CN103164265A (zh) | 2011-12-16 | 2011-12-16 | 基于Linux***的输入事件处理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110426192 CN103164265A (zh) | 2011-12-16 | 2011-12-16 | 基于Linux***的输入事件处理方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103164265A true CN103164265A (zh) | 2013-06-19 |
Family
ID=48587382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110426192 Pending CN103164265A (zh) | 2011-12-16 | 2011-12-16 | 基于Linux***的输入事件处理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103164265A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105807967A (zh) * | 2014-12-30 | 2016-07-27 | 鸿合科技有限公司 | 一种电子白板的书写方法及装置 |
CN105807966A (zh) * | 2014-12-30 | 2016-07-27 | 鸿合科技有限公司 | 一种触摸屏事件的获取方法及装置 |
CN108008992A (zh) * | 2017-11-24 | 2018-05-08 | 南昌黑鲨科技有限公司 | 一种输入操作处理方法、处理装置及计算机可读存储介质 |
-
2011
- 2011-12-16 CN CN 201110426192 patent/CN103164265A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105807967A (zh) * | 2014-12-30 | 2016-07-27 | 鸿合科技有限公司 | 一种电子白板的书写方法及装置 |
CN105807966A (zh) * | 2014-12-30 | 2016-07-27 | 鸿合科技有限公司 | 一种触摸屏事件的获取方法及装置 |
CN105807966B (zh) * | 2014-12-30 | 2020-06-23 | 鸿合科技股份有限公司 | 一种触摸屏事件的获取方法及装置 |
CN105807967B (zh) * | 2014-12-30 | 2020-07-14 | 鸿合科技股份有限公司 | 一种电子白板的书写方法及装置 |
CN108008992A (zh) * | 2017-11-24 | 2018-05-08 | 南昌黑鲨科技有限公司 | 一种输入操作处理方法、处理装置及计算机可读存储介质 |
CN108008992B (zh) * | 2017-11-24 | 2020-08-18 | 南昌黑鲨科技有限公司 | 一种输入操作处理方法、处理装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6437579B2 (ja) | 仮想化環境におけるインテリジェントgpuスケジューリング | |
KR100700951B1 (ko) | 이동통신 시스템에서 다중 작업 관리를 위한 장치 및 방법 | |
CN103455376A (zh) | 对操作***中多个进程对现场可编程门阵列的使用的管理 | |
CN110147256B (zh) | 一种多屏交互方法及装置 | |
US20070294632A1 (en) | Mutli-User Multi-Input Desktop Workspaces and Applications | |
KR20130121692A (ko) | 동적 입력 장치의 맥락 제어 | |
JP6537600B2 (ja) | 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム | |
CN101694633A (zh) | 计算机作业调度设备、方法及*** | |
CN106557369A (zh) | 一种多线程的管理方法及*** | |
CN103064796A (zh) | 虚拟机内存的共享方法与计算机*** | |
CN103559087A (zh) | 一种虚拟处理器之间的中断的实现方法、相关装置和*** | |
CN108241527A (zh) | 一种任务调度方法及电子设备 | |
CN105183547A (zh) | 一种用户界面的任务调度方法和装置 | |
CN111767124A (zh) | 请求响应方法、装置、存储介质和电子设备 | |
CN103164265A (zh) | 基于Linux***的输入事件处理方法和*** | |
CN107918555A (zh) | 基于物理主机的用于处理数据的方法和装置 | |
CN104375745A (zh) | 一种任务界面处理方法、装置及终端 | |
JP2020053013A (ja) | 要求処理方法及び装置 | |
KR20130080663A (ko) | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 | |
CN111124519B (zh) | 基于输入响应优化安卓应用程序启动速度的方法及*** | |
CN101046754A (zh) | 在动态输出中减少由动态编译所引起的可察觉暂停的机制 | |
CN103440159A (zh) | 进程调度方法和*** | |
CN100432927C (zh) | 一种使视窗类操作***拥有多个激活窗口的方法 | |
US10162602B2 (en) | Method for handling user-level events for programming an application | |
CN103902268A (zh) | 一种etl流程执行***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130619 |