一种wayland环境下远程桌面获取硬件光标的实现方法转让专利

申请号 : CN202310823579.0

文献号 : CN116560532B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王勇军张铎周磊陈霖翔刘意虎

申请人 : 麒麟软件有限公司

摘要 :

本发明提供一种wayland环境下远程桌面获取硬件光标的实现方法,包括以下步骤:步骤S1、获取屏幕显示数据的wayland协议,在其中增加cursor‑type和cursor‑info两个事件;步骤S2、wayland合成器获取系统光标类型,并将cursor‑type事件发送至远程桌面服务端;步骤S3、wayland合成器判断光标类型,若是硬件光标,则向远程桌面服务端发送cursor‑info事件;步骤S4、远程桌面服务端基于收到的cursor‑info事件,获取光标的样式和位置数据,销毁之前的光标,绘制新光标。

权利要求 :

1.一种wayland环境下远程桌面获取硬件光标的实现方法,其特征在于,包括以下步骤:步骤S1、获取屏幕显示数据的wayland协议,在其中增加cursor‑type和cursor‑info两个事件;

步骤S2、wayland合成器获取系统光标类型,并将cursor‑type事件发送至远程桌面服务端;

步骤S3、wayland合成器判断光标类型,若是硬件光标,则向远程桌面服务端发送cursor‑info事件;

步骤S4、远程桌面服务端基于收到的cursor‑info事件,获取光标的样式和位置数据,销毁之前的光标,绘制新光标。

2.基于权利要求1所述的一种wayland环境下远程桌面获取硬件光标的实现方法,其特征在于,所述cursor‑type事件包含当前光标类型,所述光标类型包括隐藏、软件光标和硬件光标。

3.基于权利要求1所述的一种wayland环境下远程桌面获取硬件光标的实现方法,其特征在于,所述cursor‑info事件包含光标样式的描述数据和位置数据。

4.基于权利要求1所述的一种wayland环境下远程桌面获取硬件光标的实现方法,其特征在于,还包括:A、如果是硬件光标则等待合成器发送的cursor‑info事件;

B、当前如果由硬件光标切换为软件光标或者隐藏光标,则需销毁创建的硬件光标以避免远程桌面客户端多出一个光标。

说明书 :

一种wayland环境下远程桌面获取硬件光标的实现方法

技术领域

[0001] 本发明涉及一种硬件光标的获取方法,尤其涉及一种wayland环境下远程桌面获取硬件光标的实现方法。

背景技术

[0002] Wayland是一个协议(Protocol),它定义了Wayland客户端如何与Wayland合成器通信。鉴于wayland相对X11的优势,特别是在高分辨率高刷新率方面提供的更好支持,开源社区已经全面转向wayland进行开发,各大系统发行版本也开始使用wayland作为默认的图形显示协议。但与X11原生支持网络显示不同,wayland本身不支持远程显示,需要通过各种远程桌面协议来实现远程显示功能。目前广泛使用的远程桌面协议为VNC和RDP。
[0003] 实现一个远程桌面最基本的工作包括:从合成器获取屏幕显示数据、向合成器发送远程客户端鼠标键盘事件等。在wayland环境下,远程桌面服务端是wayland合成器的客户端,不能直接获取屏幕数据,屏幕数据的传递通过dmabuf实现,大致有两种方案可以获取到屏幕数据dmabuf:一个是基于pipewire的数据分享方案。另一个是通过特定的wayland协议获取,比如kwin的remote‑access协议、wlroots的wlr‑screencopy协议等。向合成器发送输入事件,可通过特定的wayland协议支持,远程桌面服务端通过相关协议向合成器发送输入事件,合成器将这些事件放到输入处理。
[0004] 系统光标可以分为软件光标和硬件光标:
[0005] 1.当合成器使用软件光标时,光标是融合在屏幕显示数据中的。不论是pipewire的数据分享方案还是通过特定的wayland协议(remote‑access/ wlr‑screencopy)获取到的显示数据中是包含光标图像的,这个时候远程桌面服务端不需要设置光标。
[0006] 2.当合成器使用硬件光标时,光标由显卡硬件单独的plane输出,跟屏幕显示数据不在同一plane。此时获取到的屏幕显示数据不包含光标数据,这个时候在远程桌面客户端就看不到光标,影响使用体验。
[0007] 合成器使用硬件光标时,通过各种方案(pipewire的数据分享方案或者特定的wayland协议)获取到的显示数据不包含光标,现有的解决方案一般是合成器发现当有使用远程协议获取显示数据时,控制wayland合成器切换到软件光标模式,但该方案会导致卡顿,影响用户体验。

发明内容

[0008] 针对上述问题,本发明提供一种wayland环境下远程桌面获取硬件光标的实现方法,通过在特定wayland协议中增加(remote‑access/wlr‑screencopy)cursor‑type和cursor‑info两个事件,解决了wayland环境下启用远程桌面时系统不能使用硬件光标的问题。
[0009] 为实现上述目的,本发明公开了一种wayland环境下远程桌面获取硬件光标的实现方法,包括以下步骤:
[0010] 步骤S1、获取屏幕显示数据的wayland协议,在其中增加cursor‑type和cursor‑info两个事件;
[0011] 步骤S2、wayland合成器获取系统光标类型,并将cursor‑type事件发送至远程桌面服务端;
[0012] 步骤S3、wayland合成器判断光标类型,若是硬件光标,则向远程桌面服务端发送cursor‑info事件;
[0013] 步骤S4、远程桌面服务端基于收到的cursor‑info事件,获取光标的样式和位置数据,销毁之前的光标,绘制新光标。
[0014] 进一步的,所述cursor‑type事件包含当前光标类型,所述光标类型包括隐藏、软件光标和硬件光标。
[0015] 进一步的,所述cursor‑info事件包含光标样式的描述数据和位置数据。
[0016] 进一步的,所述步骤S3还包括:
[0017] wayland合成器判断光标类型,若由硬件光标切换为软件光标或者隐藏光标,则销毁绘制的硬件光标。
[0018] 本发明的一种wayland环境下远程桌面获取硬件光标的实现方法的有益效果为:通过在特定wayland协议中增加(remote‑access/wlr‑screencopy)cursor‑type和cursor‑info两个事件,解决了wayland环境下启用远程桌面时系统不能使用硬件光标的问题。

附图说明

[0019] 下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0020] 图1是本发明实施例提供的wayland合成器远程桌面硬件光标处理流程示意图。

具体实施方式

[0021] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0022] 本发明公开了wayland环境下远程桌面获取硬件光标的实现方法,包括以下步骤:
[0023] 步骤S1、获取屏幕显示数据的wayland协议,在其中增加cursor‑type和cursor‑info两个事件;
[0024] 步骤S2、wayland合成器获取系统光标类型,并将cursor‑type事件发送至远程桌面服务端;
[0025] 步骤S3、wayland合成器判断光标类型,若是硬件光标,则向远程桌面服务端发送cursor‑info事件;
[0026] 步骤S4、远程桌面服务端基于收到的cursor‑info事件,获取光标的样式和位置数据,销毁之前的光标,绘制新光标。
[0027] 为进一步优化上述技术方案,cursor‑type事件包含当前光标类型,光标类型包括隐藏、软件光标和硬件光标。
[0028] 为进一步优化上述技术方案,cursor‑info事件包含光标样式的描述数据和位置数据。
[0029] 为进一步优化上述技术方案,步骤S3还包括:
[0030] wayland合成器判断光标类型,若由硬件光标切换为软件光标或者隐藏光标,则销毁绘制的硬件光标。
[0031] 如图1所示,为本发明wayland合成器远程桌面硬件光标处理流程,具体的:
[0032] 1)在获取显示数据特定wayland协议中增加(remote‑access/ wlr‑screencopy) cursor‑type和cursor‑info两个事件:cursor‑type事件包含当前光标类型(隐藏、软件光标、硬件光标)。cursor‑info事件包含光标样式的描述数据、位置等信息;
[0033] 2)合成器获取系统光标类型;
[0034] 3)合成器给远程桌面服务端发送cursor‑type事件;
[0035] 4)远程桌面服务端接收cursor‑type事件,远程桌面服务端根据收到的cursor‑type事件判断当前光标类型及切换动作:
[0036] A、如果是硬件光标则等待合成器发送的cursor‑info事件;
[0037] B、当前如果由硬件光标切换为软件光标或者隐藏光标,则需销毁创建的硬件光标以避免远程桌面客户端多出一个光标;
[0038] 5)合成器判断光标类型,如果是硬件光标则发送cursor‑info事件,cursor‑info事件包含光标样式的描述数据、位置等信息;
[0039] 6)远程桌面服务端接收cursor‑info事件;
[0040] 7)远程桌面服务端根据获取的cursor‑info事件中关于光标的样式、位置等数据,销毁之前的光标并重绘光标。
[0041] 本发明通过在特定wayland协议中增加(remote‑access/ wlr‑screencopy) cursor‑type和cursor‑info两个事件,解决了wayland环境下启用远程桌面时系统不能使用硬件光标的问题。
[0042] 显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。