user356126 Asked: 2022-03-05 17:44:41 +0800 CST2022-03-05 17:44:41 +0800 CST 2022-03-05 17:44:41 +0800 CST X11:X.Org Server用什么系统调用来实现GUI环境? 772 最近在研究Xlib,遇到一个问题:X.Org Server用什么系统调用(API's)来实现GUI环境。 在输出方面,系统调用使我们能够在屏幕上绘制窗口(即某些带有颜色的矩形)。而在输入方面,系统调用什么让我们能够获取键盘和鼠标的输入信息。 我们可以在没有 X.Org Server 的帮助下绘制窗口吗?当然,这并不实用。但我很想知道是否可能。 xorg x11 2 个回答 Voted Best Answer dirkt 2022-03-05T23:15:42+08:002022-03-05T23:15:42+08:00 X.Org Server 使用什么系统调用(API)来实现 GUI 环境。 用于 X 服务器和 X 客户端之间通信的网络/域套接字。 无论硬件驱动程序需要什么来控制硬件:在早期的 Linux 中,这主要是内存映射 I/O 和端口,现在主要是具有自己 API 的内核驱动程序。 什么系统调用使我们能够绘制窗口 对此没有系统调用。 而在输入方面,系统调用什么让我们能够获取键盘和鼠标的输入信息。 X 仍然为此提供低级驱动程序,但今天基本上一切都使用驱动程序,该驱动程序与内核输入层evdev挂钩。 我们可以在没有 X.Org Server 的帮助下绘制窗口吗? 是的,使用帧缓冲驱动程序。基本上你有一个/dev/fb0可以mmap用来表示帧缓冲区的设备,还有一些ioctl可以选择视频模式等。 当然,这并不实用。 非常实用,很多嵌入式Linux系统都使用它。 Marcus Müller 2022-03-06T05:17:14+08:002022-03-06T05:17:14+08:00 只是对 dirkt 出色答案的补充: 我们可以在没有 X.Org Server 的帮助下绘制窗口吗? Wayland 存在 14 年之久,想提醒您,到现在为止,不使用 X 应该是常态,而不是例外。(事实并非如此,因为缺乏支持。如果需要一场大流行来实现屏幕共享不是一个很好的未来功能,那么 Wayland 可能不像最近想象的那么成熟。)
用于 X 服务器和 X 客户端之间通信的网络/域套接字。
无论硬件驱动程序需要什么来控制硬件:在早期的 Linux 中,这主要是内存映射 I/O 和端口,现在主要是具有自己 API 的内核驱动程序。
对此没有系统调用。
X 仍然为此提供低级驱动程序,但今天基本上一切都使用驱动程序,该驱动程序与内核输入层
evdev
挂钩。是的,使用帧缓冲驱动程序。基本上你有一个
/dev/fb0
可以mmap
用来表示帧缓冲区的设备,还有一些ioctl
可以选择视频模式等。非常实用,很多嵌入式Linux系统都使用它。
只是对 dirkt 出色答案的补充:
Wayland 存在 14 年之久,想提醒您,到现在为止,不使用 X 应该是常态,而不是例外。(事实并非如此,因为缺乏支持。如果需要一场大流行来实现屏幕共享不是一个很好的未来功能,那么 Wayland 可能不像最近想象的那么成熟。)