首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

X 随笔

另一方面,由于X窗口系统是基于事件驱动的,因此X Server会将诸如鼠标移动等驱动事件传送给客户机。...X server X Server 是一个跟踪所有输入信息的程序,这些输入信息来自键盘和鼠标器等输入设备及任何正在运行的其他客户程序。...一旦用户引发了事件,而且网络允许,服务器就把事件送往xlib,xlib为每个服务器管理一个事件队列,每当来自服务器的事件到达,就被排队,等待客户程序读取。 7....最后,当事件产生后,应用程序提供一个事件循环(Event Loop)来从事件队列中一一读取事件并处理之。...窗口管理器将窗口缓冲区合成为代表屏幕的图像,并将结果写入显示内存。Wayland协议允许合成器将输入事件直接发送到客户端,并让客户端将事件直接发送到合成器。

1.1K10

从 X11 到 Wayland,迈出这一步为何如此艰难?

处理用户输入(如鼠标、键盘事件)。 X 系统的核心设计理念是客户端-服务器架构,即图形应用程序(客户端)和显示服务器分离,使其能够支持远程显示和多用户操作。...X11 的技术特性: 客户端-服务器架构: 服务器(X Server)负责处理显示硬件、键盘和鼠标输入。 客户端(应用程序)通过 X 协议与服务器通信。...它的优势包括: 简化架构:Wayland 将窗口管理、合成和显示功能整合到一个更高效的架构中,消除了中间层,降低延迟。...现代化设计:Wayland 为 GPU 优化,支持直接合成和现代显示技术,能够更好地适应当代需求。 安全性提升:通过更严格的权限管理和隔离方式,Wayland 提高了系统的安全性。...模块化与灵活性 deepin Treeland 将图形显示功能拆分为独立的子模块,包括输入管理、窗口合成、渲染优化等。模块化的设计不仅便于维护,还允许用户根据需求对不同功能进行定制和优化。

21110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    非常详尽,多图慎入:Wayland与Weston简介

    • 输入处理:一方面通过udev monitor监听设备的添加删除事件。另一方面如有新设备添加时会将该设备打开并监听该fd来得到输入事件。...• x11:Wayland compositor作为X server的client。它可以让Wayland client运行在X11上。...输入管理 为了提高输入管理部分的重用性和模块性。Weston将对输入设备(键盘,鼠标,触摸屏等)的处理分离到一个单独的库,也就是libinput中。...Weston中的输入管理模块与libinput对接,它实现了两大部分的功能:一是对输入设备的维护,二是对输入事件的处理。对于输入事件既会在Weston中做处理,也会传给相应的client。...这些事件通过libinput中的事件缓冲队列存储,而Weston会作为消费者从中拿事件并根据事件类型进行处理。 ? Weston中支持三种输入设备,分别是键盘,触摸和鼠标。

    17.6K80

    非常详尽,多图慎入:Wayland与Weston简介

    • 输入处理:一方面通过udev monitor监听设备的添加删除事件。另一方面如有新设备添加时会将该设备打开并监听该fd来得到输入事件。...• x11:Wayland compositor作为X server的client。它可以让Wayland client运行在X11上。...输入管理 为了提高输入管理部分的重用性和模块性。Weston将对输入设备(键盘,鼠标,触摸屏等)的处理分离到一个单独的库,也就是libinput中。...Weston中的输入管理模块与libinput对接,它实现了两大部分的功能:一是对输入设备的维护,二是对输入事件的处理。对于输入事件既会在Weston中做处理,也会传给相应的client。...这些事件通过libinput中的事件缓冲队列存储,而Weston会作为消费者从中拿事件并根据事件类型进行处理。 ? Weston中支持三种输入设备,分别是键盘,触摸和鼠标。

    16.2K72

    教程 | 如何使用Docker、TensorFlow目标检测API和OpenCV实现实时目标检测和视频处理

    困难在于如何将网络摄像头视频流传送到 Docker 容器 中,并使用 X11 服务器恢复输出流,使视频得以显示出来。...就视频处理而言,使用线程是不可能的,因为必须先读取所有视频帧,worker 才能对输入队列中的第一帧视频应用目标检测。当输入队列满了时,后面读取的视频帧会丢失。...否则输入队列中没有视频帧是不会进行任何处理的。 为了解决视频帧顺序的问题,我使用优先级队列作为第二输出队列: 1....读取视频帧,并将视频帧及其对应的编号一并放到输入队列中(实际上是将 Python 列表对象放到队列中)。 2....然后,worker 从输入队列中取出视频帧,对其进行处理后再将其放入第一个输出队列(仍带有相关的视频帧编号)。

    2.9K60

    Android源码分析之鼠标事件监听(二)

    Zero 前言 前边儿已经说过,要想了解鼠标就要研究三个东西 鼠标的挂载/卸载 鼠标事件处理,也就是鼠标操作 鼠标绘制 不论是鼠标挂载/卸载还是鼠标操作,基本上算是对输入事件的一个监听了,属于一类东西...在InputReaderThread监听到输入事件时,就要把原始事件rawEvent插入到队列中,相当于一层透传,也就相当于迎宾人员将顾客带到座位 至此,InputReaderThread的任务就完成了...分两个线程处理可以实现快速响应输入事件. reader线程监听到事件后直接插入到队列中,就可以继续监听,来保证缩短用户输入开始到接收到输入事件的时间 dispatcher线程会一直取出新的输入事件,重点是异步分发给对应应用处理...好了,为了方便理解和记忆,以上都是口语化的解释,接下来该官方描述一下了 Three 源码 InputReaderThread:用于读取和预处理原始输入事件,并且把事件插入到由dispatcherThread...管理的队列中.在输入事件来临前一直阻塞 InputDispatcherThread:等待队列中有新的输入事件(来临前阻塞),并且异步分发给对应的应用 理论结束,接下来大致看一下代码: InputManager

    1.7K20

    macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示

    X 协议由 X server 和 X client 组成: X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知...X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。...举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是...X client 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server 说:“请在鼠标点击的位置,画一个圆”。...最后,X server 就响应 X client 的请求,在鼠标点击的位置,绘制并显示出一个圆。 X11 Forwarding ? 这么绕,有啥意义呢?当然有!

    6.3K21

    dotnet X11 设置窗口鼠标触摸命中穿透

    本文记录如何在 X11 应用里面,使用 XShapeCombineRegion 方法配置一个 X11 窗口支持和 Win32 窗口一样的命中测试穿透功能,即对应 Win32 的 WS_EX_TRANSPARENT...的鼠标、触摸等的点击等动作的穿透功能,可以实现在窗口中挖空一块范围直接穿透到后面的窗口 在 X11 窗口中,想要实现让窗口不可命中,即所有的鼠标、触摸等的事件穿透到后面的窗口上,可以采用 libXext.so...窗口不响应鼠标或触摸的点击输入,让其输入到窗口后面的窗口。...libXfixes.so 也足够旧了,基本上系统都会带的 所有代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码...请在命令行继续输入以下代码,将 gitee 源换成 github 源进行拉取代码 git remote remove origin git remote add origin https://github.com

    18210

    好技能 | Chromium 是如何解决队头阻塞问题的

    1、第一次迭代:引入一个高优先级队列首先在最理想的情况下,我们希望能够快速跟踪高优先级任务,比如在交互阶段,下面几种任务都应该视为高优先级的任务:通过鼠标触发的点击任务、滚动页面任务;通过手势触发的页面缩放任务...2、 第二次迭代:根据消息类型来实现消息队列要解决上述问题,我们可以为不同类型的任务创建不同优先级的消息队列,比如:可以创建输入事件的消息队列,用来存放输入事件。...可以创建合成任务的消息队列,用来存放合成事件。可以创建默认消息队列,用来保存如资源加载的事件和定时器回调等事件。还可以创建一个空闲消息队列,用来存放 V8 的垃圾自动垃圾回收这一类实时性不高的事件。...接下来,处理完成 DOM,计算好布局和绘制,就需要将信息提交给合成线程来合成最终图片了,然后合成线程进入工作状态。...现在的场景是合成线程在工作了,那么我们就可以把下个合成任务的优先级调整为最低,并将页面解析、定时器等任务优先级提升。

    11820

    揭开Wayland的面纱(一):X Window的前生今世

    X Window在推出之后快速演化,在1987年时候,其核心协议已经是第11版本了,简称:x11。...于是乎,你看到了,现在是2010年,整整23年了,X Window依然是X11。 你可能会诧异,23年了,X Window的核心都没有特别大的变化,它能适应现代桌面的快速发展吗?...的"刷新"按钮,这时内核收到了鼠标发来的事件,并将其通过evdev输入驱动发送至了X Server。...这时内核实际上做了很多事情,包括将不同品牌的鼠标发出的不同信号转换成了标准的"evdev"输入信息。...因为当前的Linux桌面早已经不是10年前的那样了,现在是"Composite"即合成桌面的时代,合成桌面的一个特点便是:Compositor(如Compiz)管理窗口的一切,X Server只能知道屏幕的某个点收到了鼠标消息

    4.8K80

    Visual Basic GUI:一款在SSH客户端上注入击键的工具

    今天给大家介绍的是一款注入工具,该工具名叫Visual Basic GUI,它可以通过X11转发会话来向SSH客户端注入击键数据。...也就是说,这款工具可以利用X11转发SSH会话并在目标客户端中实现远程命令执行。...受信任的X11转发(-Y选项)会暴露大量的X11扩展功能,而攻击者就可以利用这些功能来实施攻击,比如说枚举已打开的窗口、记录/注入键盘和鼠标事件等等。...项目结构 write_cmd.c负责通过发送键盘事件来实现数据输入。...安装脚本将会下载相关的依赖组件,然后创建一个新用户,并自动配置SSH守护进程来模拟键盘事件。 工具使用 注:登录工具之后,用户也可以手动运行所有脚本。 自动化WM检测以及Payload选取: ?

    2.2K30

    浏览器原理学习笔记04—浏览器中的页面事件循环系统

    [821lhz26ux.png] 1.2 消息队列中的任务类型 Chromium 的官方源码 中包含了很多内部消息类型,如输入事件(鼠标滚动、点击、移动)、微任务、文件读写、WebSocket、JavaScript...宏任务和微任务 3.1 宏任务(粗时间粒度) 页面中的大部分任务都是在主线程上执行的,如: 渲染事件(如解析 DOM、计算布局、绘制等) 用户交互事件(如鼠标点击、滚动页面、放大缩小等) JavaScript...但宏任务难以胜任对时间精度要求高的事件,例如两个连续 setTimeout 延迟时间为 0 的任务,中间却插入了其他系统级任务: [cdv4u4jfmg.png] 3.2 微任务 微任务是一个异步执行的函数...[lu3841g723.jpeg] 6.2 第一次迭代:引入高优先级队列 引入不同优先级的队列,渲染进程根据任务紧急程度添加到不同队列,例如在交互阶段,下面的任务应视为高优先级任务: 鼠标触发的点击任务...[2e0vbkjvlm.jpeg] 6.3 第二次迭代:根据消息类型实现消息队列 为不同类型的任务创建不同优先级的消息队列,如创建用户交互队列存放输入事件、创建合成队列存放合成任务、创建默认队列存放资源加载和定时器回调等事件

    1.6K168

    解决一个触摸屏兼容性问题

    Main.qml */ Item { MouseArea { anchors.fill: parent onClicked: console.log(">>>>") } } 问题分析   通过拦截Qt的事件队列...信息中它们都触发了触摸事件,由于Qt默认将触摸事件定向到鼠标事件,但win7最后却没有触发QEvent::MouseButtonPress导致显示触摸没反应的问题。...想要它们合成事件可以设置QCoreApplication的setAttribute的应用标记Qt::AA_SynthesizeTouchForUnhandledMouseEvents和Qt::AA_SynthesizeMouseForUnhandledTouchEvents...用于启用或禁用触摸事件到鼠标事件或鼠标事件到触摸事件的自动合成。...其中,Qt::AA_SynthesizeMouseForUnhandledTouchEvents是不接受的所有触摸事件都将转换为鼠标左键事件。默认情况下启用此属性。

    1.3K10

    javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景「建议收藏」

    所以一次鼠标点击,或是计时器到达时间点,或是Ajax请求完毕触发了回调函数。这些事件处理程序或回调函数都不会马上运行,而是马上排队。一旦线程有空暇就运行。...假如当前 JavaScript线程正在运行一段非常耗时的代码,此时发生了一次鼠标点击。那么事件处理程序就被堵塞。用户也无法马上看到反馈。事件处理程序会被放入任务队列。...将代码插入任务队列。假设这个时间设为 0,就代表马上插入队列,但不是马上运行。仍然要等待前面代码运行完成。 所以 setTimeout 并不能保证运行的时间。...也就是说setTimeout仅仅能保证在指定的时间过后将任务(须要运行的函数)插入队列等候,并不保证这个任务在什么时候运行。...,意图是当用户在文本框里输入字符时。

    67110

    Windows Xming + Xshell 实现远程 linux gui 界面本地展示

    基本环境 本地电脑系统:window10 远程服务器系统:Ubuntu16.04 实现思路 服务器没有图形界面,但是相应显示的信息事实上是可以生成的,需要使用X11将该显示转发到其他可以显示的计算机...,以及将输入设置(如键盘、鼠标)的动作告知 X client。...X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。...举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是...Xshell 6 配置 设置用户身份认证,账号密码、ssh key都可以的 再SSH --> 隧道选项卡里设置转发X11连接到:X DISPLAY: localhost:0.0 此处的 0.0 可以设置为其他

    4.7K30

    重学前端(三)-聊聊我们的浏览器的那些事

    队列(Queue) 特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。...进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。...因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out) 宏任务和微任务 所谓宏任务:setTimeout...在上面的输入设备,我们拿鼠标点击事件为例,当鼠标点击时,其实,是操作系统将我们点击这个操作,对应成一个坐标,返回给浏览器,浏览器收到坐标就要将他对应到具体我点击在哪个元素上,这个过程我们发现其实就是由外向内的...事件 理解了冒泡和捕获,我们就知道了原来所谓的浏览器事件,就是在我们的输入设备在触发一些动作的时候,在冒泡过程中去做的监听, 具体有多少就不在列举 如有兴趣请移步 浏览器事件汇总 除了我们浏览器提供的事件

    1.2K11
    领券