QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2374|回复: 14

LINUX下的多显示器的识别

[复制链接]
发表于 2006-4-13 13:15:53 | 显示全部楼层 |阅读模式
请问高手,LINUX可以用多口VGA显示卡连接多个显示器,但是怎么获得鼠标当前的显示器呢?或者说在C语言里面用什么函数获得当前鼠标在哪个显示器上?
谢谢!
 楼主| 发表于 2006-4-13 22:02:15 | 显示全部楼层
或者说:显示器的X windows的display号码怎样取得?
        鼠标移动的时候知道是哪一个DISPLAY?

谢谢!
回复

使用道具 举报

发表于 2006-4-13 22:17:09 | 显示全部楼层
多年前小小研究过

提个思路

我记得X程序上来就是连接服务器,查查函数列表应该用类似Enum Display这样的函数吧

鼠标在那个显示器里,应该是从Event里获得吧

瞎猜,纯粹瞎猜......

http://xorg-annarchy.freedesktop.org/releases/X11R6.8.0/doc/manindex3.html
回复

使用道具 举报

 楼主| 发表于 2006-4-13 23:15:54 | 显示全部楼层
关于DISPLAY和鼠标之间联系怎样用?也就说当前鼠标在哪个DISPLAY里面?
谢谢!
回复

使用道具 举报

发表于 2006-4-14 09:06:01 | 显示全部楼层
[code:1]
typedef struct {
    int type;
    unsigned long serial;    /* # of last request processed by server */
    Bool send_event;    /* true if this came from a SendEvent request */
    [b]Display *display;    /* Display the event was read from */[/b]
    Window window;
} XAnyEvent;
[/code:1]
事件里不是有事件是从哪个display过来的
回复

使用道具 举报

 楼主| 发表于 2006-4-14 10:53:01 | 显示全部楼层
大哥,我在GDK里面好像没有发现这个说明,只有
struct _GdkEvenAny {
   GdkEventType type
   GdkWindow *window;
   Gint8 send_event;
   ......
}

调用函数为:gdk_event_get()等等

和你给出的完全不一样,所以才求救.你给出的好像和我的要求很近了,但是不会使用,用man找不到相应的函数(如获得Event和初始化等等),希望大哥帮人帮到底.

谢谢!
回复

使用道具 举报

 楼主| 发表于 2006-4-14 11:39:25 | 显示全部楼层
大哥,我奉命在LINUX上开发图形软件,资料太少,只买了一本<UNIX/LINUX图形开发集粹>,实验一些小程序已经有些感觉了.除了上面提到的问题外(事件和DISPLAY的关系及调用函数问题).实际上鄙人对screen、display、windows的概念和关系有些模糊,虽然我已经可以进行widget和界面开发,但是要深入理解下去遇到了这些概念的阻挡,请大哥帮助。(书店没有资料)
回复

使用道具 举报

发表于 2006-4-14 11:48:38 | 显示全部楼层
GDK不懂......

召唤mozilla
回复

使用道具 举报

发表于 2006-4-14 11:55:42 | 显示全部楼层
GDK不懂,但查了一下文档,还是提思路,因为我不懂GDK

GDK可以获得Event吧

用Event可以获得那个Window吧

用下面的API群应该可以获得在那个Display里

http://developer.gnome.org/doc/API/2.0/gdk/gdk-X-Window-System-Interaction.html
回复

使用道具 举报

 楼主| 发表于 2006-4-14 12:27:24 | 显示全部楼层
GDK好象是教高层,也就是不设计DISPLAY和SCREEN,而你给的Event好象是较为低级的Event.对吗?
回复

使用道具 举报

发表于 2006-4-14 12:33:08 | 显示全部楼层
struct _GdkEvenAny {
GdkEventType type
GdkWindow *window;
Gint8 send_event;
......
}

里有window的信息,从window信息应该可以查到root window的信息,估计
display这样的信息应该用底层X的函数了。

自己google,自己查文档吧
回复

使用道具 举报

发表于 2006-4-14 23:59:34 | 显示全部楼层
http://gentoo-wiki.com/HOWTO_Dual_Monitors
gdk_display_get_pointer好像可以得到鼠标位置
回复

使用道具 举报

 楼主| 发表于 2006-4-15 08:47:06 | 显示全部楼层
大哥,gdk方面已经清楚了,比如gdk_display_get_pointer(),我已经应用得很熟练.但是我发现这些(GDK)解决不了我的问题: 判断当前鼠标在哪个DISPLAY或者SCREEN里面?
前一位大哥提出的XAnyEvent好像有一些曙光,但是获得事件的相应函数都要求参数里面提供DISPLAY号码,也就是说:"你从确定的DISPLAY取得这个DISPLAY发生的事件",而我的问题正好相反:"事件发生的DISPLAY是哪个?"

谢谢!
回复

使用道具 举报

发表于 2006-4-15 10:20:51 | 显示全部楼层
看看gdkscreen.h
回复

使用道具 举报

 楼主| 发表于 2006-4-15 10:57:19 | 显示全部楼层
好像没有什么联系.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 18:19 , Processed in 0.094764 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表