我需要以编程方式获取屏幕旋转。我正在使用 Qt 和 X 扩展 XRandr。我正在尝试以下操作:
Display *dpy;
Window root;
XRRScreenConfiguration *conf;
Rotation rotation;
int screen;
dpy = QX11Info::display();
root = QX11Info::appRootWindow();
conf = XRRGetScreenInfo(dpy, root);
screen = DefaultScreen(dpy);
XRRRotations(dpy, screen, &rotation);
qDebug() << "CURRENT ROTATION:" << rotation;
问题在于,无论当前屏幕方向如何(通过 Ubuntu 的显示设置应用程序设置),CURRENT ROTATION 输出始终为 1。
有人知道为什么吗?
谢谢
答案1
我终于找到了答案。我正在使用 Qt。一些调用来自 Qt,用于获取 X11 的窗口和屏幕。
Display *dpy;
Window root = this->winId();
dpy = QX11Info::display();
XRRScreenResources *scrres = XRRGetScreenResources(dpy, root);
XRRCrtcInfo *crtcInfo = XRRGetCrtcInfo(dpy, scrres, *scrres->crtcs);
crtcInfo->rotation can be 1, 2, 4, or 8
希望这对将来的某人有所帮助。