当前位置:  技术问答>linux和unix

LINUX下如何控制小键盘灯的亮和灭

    来源: 互联网  发布时间:2016-04-25

    本文导语:  我用QT做了一个软键盘,点击Num_Lock的时候键盘灯会亮或者灭,但点击Caps_Lock时键盘灯就没有反应,QT有没有方法让它也会亮和灭。 | 参考下面这段代码,把它改成一个函数即可 Usage: lockkeys k...

我用QT做了一个软键盘,点击Num_Lock的时候键盘灯会亮或者灭,但点击Caps_Lock时键盘灯就没有反应,QT有没有方法让它也会亮和灭。

|
参考下面这段代码,把它改成一个函数即可

Usage: lockkeys key on | off | toggle


/* 
 * Program to control the console lock keys states 
 * 
 * Build with "gcc -o lockkeys lockkeys.c" 
 * cp lockkeys numlock.init.string /etc/ 
 * in /etc/inittab 
 * "snum::sysinit:/etc/lockkeys numlock on ;/dev/console 2>;&1" 
 */ 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  

#define ERROR -1 

int main( int argc, char *argv[] )  

        char c; 
        int function, key; 
int fd; /* File descriptor for console (/dev/tty/) */ 

        if ( argc != 3 ) { 
                fprintf( stderr, "Usage: lockkeys key on | off | togglen" ); 
                exit( 1 ); 
        } 

        if ( !strcmp( argv[2], "off" )) 
                function=0; 
        else if ( !strcmp( argv[2], "on" )) 
                function=1; 
        else if ( !strcmp( argv[2], "toggle" )) 
                function=2; 
        else { 
                fprintf( stderr, 
                        "lockkeys: function must be on, off, or togglen" ); 
                exit( 1 ); 
        } 

        if ( !strcmp( argv[1], "numlock" )) 
                key= LED_NUM; 
        else if ( !strcmp( argv[1], "capslock" )) 
                key= LED_CAP; 
        else if ( !strcmp( argv[1], "scrolllock" )) 
                key= LED_SCR; 
        else { 
                fprintf( stderr, 
                        "lockkeys: key must be numlock, capslock, or scrolllockn" ); 
                exit( 1 ); 
        }

/* To be used as the fd in ioctl(). */ 
if ((fd = open("/dev/console", O_NOCTTY)) == ERROR) 

perror("open"); 
exit(ERROR); 
}  

        if ( ioctl( fd, KDGETLED, &c ) != 0 ) { 
                perror( "lockkeys: can't get current lock state" ); 
                exit( 2 ); 
        } 
        if ( function == 0 ) 
                c &= ~key; 
        else if ( function == 1 ) 
                c |=  key; 
        else 
                c ^=  key; 
        if ( ioctl( fd, KDSETLED, c ) != 0 ) { 
                perror( "lockkeys: error setting lock state" ); 
                exit( 2 ); 
        }

close(fd); 
 
        return 0;
}



|
http://blog.csdn.net/cceczjxy/archive/2008/06/25/2584796.aspx

这里有3种方法,你可以试一下.

|
取得 键盘的 键值 就可以了

|
不会吧,直接操作键值不久可以了

#define KDGETLED	0x4B31	/* return current led state */
#define KDSETLED 0x4B32 /* set led state [lights, not flags] */
#define  LED_SCR 0x01 /* scroll lock led */
#define  LED_NUM 0x02 /* num lock led */
#define  LED_CAP 0x04 /* caps lock led */


每次切换前,记录当前scroll 、num 和caps 状态,即是否打开,然后
ioctl(fd, KDSETLED, 0x0)) 关闭所有LED,

然后点亮当前需要的key,其它的key根据上次状态恢复即可

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • 1、linux下一个虚拟控制台北我弄死了怎么重启?2、如果所有的虚拟控制台都被我弄死了,是不是就完蛋了?
  • 请问如何用telnet远程控制redhat 9linux系统呀?因为我没有在服务器安装远程控制软件如:VNC、secureCRT.谢谢
  • linux下如何修改控制台字体?
  • Linux 流量控制系统 Pol-IP
  • 怎样能使linux在控制台中显示中文?
  • linux 控制台
  • 如何在linux环境下编程控制tc35i收发短信
  • 关于公网上的linux服务器安全策略控制
  • 我想知道linux内核关于流量控制(tc)方面的问题!
  • 在Linux控制台中,Ctrl+S代表什么?如何禁止它?
  • Linux控制台模拟钟 Clockywock
  • WMWare中的Linux怎样切换不同的控制台,
  • 手机上的linux 控制台怎么进去啊?
  • 请问在linux/unix下有没有象GetKeyboardState()一样对键盘状态进行控制的函数?
  • linux 找回控制台滚过的内容
  • linux内核控制GPIO的问题,
  • 红旗Linux如何将图形界面KDE切换成文本控制台界面,两个界面如何互为切换?
  • 如何在linux的控制台中找回已经滚过的内容
  • 关于linux密码安全控制
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3