我正在做一个窗口管理器,主要是作为练习,我遇到了问题。我希望能够将单击的窗口提升到堆栈顶部。目前,我在Button1和ControlMask上使用XGrabButton来允许移动窗口,当我按住Ctrl键并单击窗口时,可以实现所需的效果。但是,如果我在Button1上使用带有AnyModifier的XGrabButton,虽然我正在寻找效果,但我无法再通过鼠标按钮与客户端窗口(突出显示文本等)进行交互。我已经尝试抓住EnterNotify上的按钮,然后在窗口抬起后立即取消按钮,但这似乎没有效果,窗口管理器就好像我从来没有抓过按钮一样。
我的程序仍然相对较小,所以这里是代码:
d={
"Date": 2017,
"count": 88,
"demographics": [
{
"key": "age",
"value": "20-30"
},
{
"key": "education",
"value": 'bachelor'
},
{
"key": "income",
"value": "70-80"
},
{
"key": "location",
"value": "USA"
}
]
}
df=pd.DataFrame(d)
A=(df.demographics.apply(pd.Series).T.loc['value'].to_frame().\
set_index(df.demographics.apply(pd.Series).T.loc['key']).T).\
rename_axis(None,1).reset_index(drop=True)
pd.concat([df.drop('demographics',1).loc[0].to_frame().T,A],1)
Out[273]:
Date count age education income location
0 2017 88 20-30 bachelor 70-80 USA
我也试过使用XSendEvent,但根据我从中得到的结果,我不认为我理解它应该做得很好。我是Xlib编程的新手,所以非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
我有完全一样的问题。原始问题中的评论有所帮助,但还没有完全解决,它们缺少重要的细节(前面的要点1)。最终I found the hint here解决了它。
GrabModeSync
的名称为pointer_mode
)XGrabButton(dis, FOCUS_BUTTON, AnyModifier, root, False, BUTTONMASK, GrabModeSync, GrabModeAsync, None, None);
XAllowEvents
和Xsync
来传递效果XAllowEvents(display, ReplayPointer, ev->xbutton.time);
XSync(display, 0);