在 Wayland入门8:获取全局对象 中我们介绍了Wayland全局对象:
- wl_display:表示与服务器的连接。
- wl_registry:全局对象注册表,全局对象需要通过它获取。
- wl_compositor:窗口合成器,也是服务器。
- wl_shm:内存管理器,与窗口合成器共享内存用。
- wl_shell:支持窗口操作功能。
- wl_seat:输入设备管理器。
- wl_pointer:代表鼠标设备。
- wl_keyboard:代表键盘设备。
可以看出鼠标、键盘是输入的一种。
本文我们来获取开发平台所支持的设备。
方法和流程 Wayland入门8:获取全局对象 中一样。
关键在于wl_seat_listener的回调函数的写法。
static void
seat_handle_capabilities(void *data, struct wl_seat *seat,
enum wl_seat_capability caps)
{
if (caps & WL_SEAT_CAPABILITY_POINTER)
{
printf("Display has a pointer\n");
}
if (caps & WL_SEAT_CAPABILITY_KEYBOARD)
{
printf("Display has a keyboard\n");
}
if (caps & WL_SEAT_CAPABILITY_TOUCH)
{
printf("Display has a touch screen\n");
}
}
编译执行输出为:
hyper@ubuntu:~/Nutstore Files/Nutstore/Wayland_Freshman/10.seat$ ./seat
connected to display
Display has a pointer
Display has a keyboard
disconnected from display
完整代码在Wayland_Frashman的12.seat中。
本文首发于:Wayland入门12:输入设备管理器