注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

GNOME 平台的锁屏(禁用键盘)的办法实现考虑  

2009-02-25 22:31:29|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. linux input system 的接口,通过给/dev/input/event1 等键盘发送EVIOCGRAB 的ioctl命令,请求独占式访问。 这个办法对键盘好像不行,应该是xorg里面的驱动事先把 键盘给grab了,不允许别人在调用EVIOCGRAB了,所以我们自己再想grab的时候,都是返回设备忙等待的错误。这个可以去看 内核模块的/driver/input 下面的evdev的源代码,和前面几篇转贴的文章。

2. 直接在驱动用outp 写0x60 0x64两个键盘端口,ps2的键盘是有个 禁用和启用的指令的。不过这个不知道xorg的驱动会不会检测到键盘被禁用了,然后自己解锁,个人觉得应该不会,不过这个方法不能用于usb键盘,驱动写起来简单是简单,但容易引起内核不稳定。或者替换中断表中的 键盘中断应该也是可以实现的。

3. 通过Xlib库提供的接口XGrabKeyboard,XGrabPointer 两个函数接口。这个可以独占式访问键盘和鼠标。不过GDK 库里面也对这个有封装了,是gdk_keyboard_grab    和gdk_keyboard_ungrab   gdk_pointer_grab   gdk_pointer_ungrab   等几个函数。 这个通过制定第二个参数,可以做到只有自己的程序窗口才会接收到键盘消息。不过有几个问题,如果我们这个窗体隐藏了的话,就会自动解锁了。还有就是xserver中定义的ctrl+ alt+ backspace     , ctrl +alt +f1 等快捷键,不能禁止 ,所以即使我们已经调用gdk_keyboard_grab成功,但按ctrl+ alt+ backspace    还是会使xserver重启的。不过这个可以通过修改 /etc/X11/xorg.conf 配置文件来禁止ctrl+ alt+ backspace     等按键。这个再键盘全屏窗口和置顶,半透明窗口等功能就可以实现一个简单的锁屏程序了。下次把我那个Linux上面提醒休息的程序代码贴出来,里面有这个功能的实现代码。

  评论这张
 
阅读(786)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017