Files
ktouchV2/opt/ktouch/docs/demo.md
T
2026-06-12 16:54:32 +08:00

1.9 KiB

demo.c - 多屏幕信息窗口演示程序

概述

一个基于GTK+和Xrandr的多屏幕信息演示程序。在所有连接的显示器上依次创建信息窗口,显示屏幕分辨率、位置等信息,支持多轮测试和窗口位置校验。

程序结构

全局变量

变量 类型 说明
info_windows GtkWidget** 各屏幕信息窗口指针数组
total_screens int 连接的显示器总数
screen_widths/heights int* 各屏幕宽高
screen_x_offsets/y_offsets int* 各屏幕坐标偏移
screen_names char** 屏幕接口名(如HDMI-1)
current_test_round int 当前测试轮次
total_test_rounds int 总测试轮次
win_time_delay int 窗口创建间隔(ms),默认50

工作原理

  1. 屏幕信息获取: 使用Xrandr扩展查询所有已连接的输出设备及其CRTC信息
  2. 窗口创建: 每个屏幕创建一个比屏幕尺寸小20像素的窗口,偏移(10,10)
  3. 定时创建: 窗口按win_time_delay毫秒间隔依次创建
  4. 空格键控制: 用户按空格键关闭所有窗口,进入下一轮测试
  5. 窗口校验: 每轮结束后校验窗口位置和大小(允许±5像素误差)
  6. 日志记录: 所有操作记录到screen_demo.log文件

关键函数

函数 功能
get_screen_info() 通过Xrandr获取所有屏幕信息
create_info_window() 创建单个屏幕的信息窗口
create_next_window() 定时回调,依次创建窗口
verify_windows() 校验窗口位置和大小
start_next_test_round() 开始新一轮测试
on_key_press() 空格键事件处理

窗口布局

窗口位置: (screen_x + 10, screen_y + 10)
窗口大小: (screen_width - 20) x (screen_height - 20)

调用方式

./demo

依赖

  • GTK+ 3.x
  • X11 + Xrandr扩展