Search This Blog

Wednesday, October 26, 2005

模拟鼠标点击

fvwmbuttons有一个很好的功能是可以把pager啊buttons啊之类的玩意儿收起来,或者再放出来。
以前照着王垠的说明弄过,但是用fvwm就应该发挥它的优势,老是拿鼠标biajibiaji地点岂不是很郁闷?但是那时候我又不知道怎么可以用键盘来控制被buttons作为panel的模块的收放,后来就去掉了,让它们一直放在桌面上好了。
不过今天又想把桌面变得再简洁点,于是想用键盘来实现上面说的功能。
google了几分钟,在fvwm faq上找到答案了:
FakeClick是用来实现键盘模拟鼠标点击事件的,为此可以定义一个函数
AddToFunc Press_FvwmButtons
+ I SetEnv pointer_x $[pointer.x]
+ I SetEnv pointer_y $[pointer.y]
+ I Next ($1, CirculateHit) WarpToWindow $2 $3
+ I FakeClick depth 1 press $0 release $0
+ I WindowId root WarpToWindow $[pointer_x]p $[pointer_y]p

这个函数先把当前鼠标指针的位置保存下来,然后移到指定的FvwmButtons,用FakeClick模拟点击事件后再把指针返回到原来的位置
现在举个例子,假如我有一个FvwmButtons叫MainPanel,它把一个FvwmPage作为一个panel,在MainPanel上点击鼠标 就可以把FvwmPage展开或者收起,然后我可以这样调用Press_FvwmButtons函数:Press_FvwmButtons 1 MainPanel 50 50
其中1表示鼠标的左键,MainPanel就是FvwmButtons的名字,50和50是鼠标指针移动到FvwmButtons的位置比例
这样就可以实现模拟鼠标点击,如果再把Press_FvwmButtons绑定到一个快捷键上,就可以实现用键盘来控制panel的展开或收起

No comments: