最近在研究Xlib,有一个问题:X.Org Server使用什么系统调用(API)来实现GUI环境。
在输出方面,系统调用使我们能够在屏幕上绘制窗口(即某些带有颜色的矩形)。而在输入方面,通过什么系统调用,我们能够获取键盘和鼠标的输入信息。
我们可以在没有 X.Org Server 帮助的情况下绘制窗口吗?当然,这是不实用的。但我很想知道是否可能。
答案1
X.Org Server 使用哪些系统调用(API)来实现 GUI 环境。
用于 X 服务器和 X 客户端之间通信的网络/域套接字。
无论硬件驱动程序需要什么来控制硬件:在早期的 Linux 中,这主要是内存映射的 I/O 和端口,现在主要是具有自己的 API 的内核驱动程序。
哪些系统调用使我们能够绘制窗口
没有为此的系统调用。
而在输入方面,通过什么系统调用,我们能够获取键盘和鼠标的输入信息。
X 仍然有低级驱动程序,但今天基本上所有东西都使用evdev
驱动程序,它挂接到内核输入层。
我们可以在没有 X.Org Server 帮助的情况下绘制窗口吗?
是的,随着帧缓冲驱动程序。基本上你有一个类似的设备/dev/fb0
,可以mmap
用来表示帧缓冲区,还有一些ioctl
可以选择视频模式等。
当然,这是不实用的。
它非常实用,很多嵌入式Linux系统都使用它。
答案2
只是德克特出色答案的附录:
我们可以在没有 X.Org Server 帮助的情况下绘制窗口吗?
Wayland 存在了大约 14 年,想提醒您,到目前为止,不使用 X 应该是常态,而不是例外。 (事实并非如此,因为缺乏支持。如果需要一场大流行才能意识到屏幕共享不是一个未来可有可无的功能,那么 Wayland 可能不会像最近想象的那么成熟。)