linux键值
‘壹’ linux下系统键值和windows下系统键值的区别
//可以直接将这个数组复制使用
//基本上标准的键盘按键都在上面,这个是自己写程序测出来的,有什么错误缺源之处请留言
// KBD_KEY[n][0] 是windows下的键值
// KBD_KEY[n][1] 是linux下扮扮高定义的键厅尺值
‘贰’ linux 共享内存 键值
这个 key 对应的毕弯燃是 IPC_PRIVATE,即创建 shared memory 时,可以用 IPC_PRIVATE 来创建,而不用指手虚定具体的 key 值, 你看到的就是这闹缺类 shared memory。 具体细节,你可以 man shmget。
‘叁’ 如何读取linux键值,输入子系统,key,dev/input/event,dev/event,c语言键盘
/*
*Copyright2002RedHatInc.,Durham,NorthCarolina.
*
*AllRightsReserved.
*
*Permissionisherebygranted,freeofcharge,toanypersonobtaining
*(the
*"Software"),,including
*without扮差limitationontherightstouse,,modify,merge,
*publish,distribute,sublicense,and/orsellcopiesoftheSoftware,
*,
*:
*
*(includingthe
*nextparagraph)
*portionsoftheSoftware.
*
*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,
*EXPRESSORIMPLIED,
*MERCHANTABILITY,
*NON-INFRINGEMENT.INNOEVENTSHALLREDHATAND/ORTHEIRSUPPLIERS
*BELIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINAN
*ACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORIN
*
*SOFTWARE.
*
*/dev/input/event*,
*.
*/
/*
*Authors:返芦
*RickardE.(Rik)Faith<[email protected]>
*
*/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
#include<time.h>
#include<linux/input.h>
structinput_eventevent;
intmain(intargc,char**argv)
{
厅世皮charname[64];/*RATS:Useok,butcouldbebetter*/
charbuf[256]={0,};/*RATS:Useok*/
unsignedcharmask[EV_MAX/8+1];/*RATS:Useok*/
intversion;
intfd=0;
intrc;
inti,j;
char*tmp;
#definetest_bit(bit)(mask[(bit)/8]&(1<<((bit)%8)))
for(i=0;i<32;i++){
sprintf(name,"/dev/input/event%d",i);
if((fd=open(name,O_RDONLY,0))>=0){
ioctl(fd,EVIOCGVERSION,&version);
ioctl(fd,EVIOCGNAME(sizeof(buf)),buf);
ioctl(fd,EVIOCGBIT(0,sizeof(mask)),mask);
printf("%s ",name);
printf("evdevversion:%d.%d.%d ",
version>>16,(version>>8)&0xff,version&0xff);
printf("name:%s ",buf);
printf("features:");
for(j=0;j<EV_MAX;j++){
if(test_bit(j)){
constchar*type="unknown";
switch(j){
caseEV_KEY:type="keys/buttons";break;
caseEV_REL:type="relative";break;
caseEV_ABS:type="absolute";break;
caseEV_MSC:type="reserved";break;
caseEV_LED:type="leds";break;
caseEV_SND:type="sound";break;
caseEV_REP:type="repeat";break;
caseEV_FF:type="feedback";break;
}
printf("%s",type);
}
}
printf(" ");
close(fd);
}
}
if(argc>1){
sprintf(name,"/dev/input/event%d",atoi(argv[1]));
if((fd=open(name,O_RDWR,0))>=0){
printf("%s:open,fd=%d ",name,fd);
for(i=0;i<LED_MAX;i++){
event.time.tv_sec=time(0);
event.time.tv_usec=0;
event.type=EV_LED;
event.code=i;
event.value=0;
write(fd,&event,sizeof(event));
}
while((rc=read(fd,&event,sizeof(event)))>0){
printf("%-24.24s.%06lutype0x%04x;code0x%04x;"
"value0x%08x;",
ctime(&event.time.tv_sec),
event.time.tv_usec,
event.type,event.code,event.value);
switch(event.type){
caseEV_KEY:
if(event.code>BTN_MISC){
printf("Button%d%s",
event.code&0xff,
event.value?"press":"release");
}else{
printf("Key%d(0x%x)%s",
event.code&0xff,
event.code&0xff,
event.value?"press":"release");
}
break;
caseEV_REL:
switch(event.code){
caseREL_X:tmp="X";break;
caseREL_Y:tmp="Y";break;
caseREL_HWHEEL:tmp="HWHEEL";break;
caseREL_DIAL:tmp="DIAL";break;
caseREL_WHEEL:tmp="WHEEL";break;
caseREL_MISC:tmp="MISC";break;
default:tmp="UNKNOWN";break;
}
printf("Relative%s%d",tmp,event.value);
break;
caseEV_ABS:
switch(event.code){
caseABS_X:tmp="X";break;
caseABS_Y:tmp="Y";break;
caseABS_Z:tmp="Z";break;
caseABS_RX:tmp="RX";break;
caseABS_RY:tmp="RY";break;
caseABS_RZ:tmp="RZ";break;
caseABS_THROTTLE:tmp="THROTTLE";break;
caseABS_RUDDER:tmp="RUDDER";break;
caseABS_WHEEL:tmp="WHEEL";break;
caseABS_GAS:tmp="GAS";break;
caseABS_BRAKE:tmp="BRAKE";break;
caseABS_HAT0X:tmp="HAT0X";break;
caseABS_HAT0Y:tmp="HAT0Y";break;
caseABS_HAT1X:tmp="HAT1X";break;
caseABS_HAT1Y:tmp="HAT1Y";break;
caseABS_HAT2X:tmp="HAT2X";break;
caseABS_HAT2Y:tmp="HAT2Y";break;
caseABS_HAT3X:tmp="HAT3X";break;
caseABS_HAT3Y:tmp="HAT3Y";break;
caseABS_PRESSURE:tmp="PRESSURE";break;
caseABS_DISTANCE:tmp="DISTANCE";break;
caseABS_TILT_X:tmp="TILT_X";break;
caseABS_TILT_Y:tmp="TILT_Y";break;
caseABS_MISC:tmp="MISC";break;
default:tmp="UNKNOWN";break;
}
printf("Absolute%s%d",tmp,event.value);
break;
caseEV_MSC:printf("Misc");break;
caseEV_LED:printf("Led");break;
caseEV_SND:printf("Snd");break;
caseEV_REP:printf("Rep");break;
caseEV_FF:printf("FF");break;
break;
}
printf(" ");
}
printf("rc=%d,(%s) ",rc,strerror(errno));
close(fd);
}
}
return0;
}
注意:
#include<linux/input.h>
为内核源码的头文件,注意路径,一般为kernel/include/linux/input.h
‘肆’ linux消息队列为什么要键值
消息早数队列是随内核持续存在的,里面的陆散首消息是被掘神读取时就被删掉了。消息队列和消息是不一样的。我是这样理解的。
‘伍’ linux C语言编程中键值是什么啊,给一个好理解一点的概念
键盘的键值?
你想想,你们老师上课的时候,让你们拿出哪本教材,是不是喊xx必须1神马桐册的,键盘上的键也是这样的,每个键都有一个名称,所以你才能在电脑上打出相应的字来,但电脑只认机器语言,它可搞不懂a是神马,b是神马,所以为了让电脑知道我们摁下的是哪个键,我们就给键盘上的每个键一个唯一的编码,这个族纳编局穗宏码是二进制的,电脑就能识别了。这个编码,就是键值
‘陆’ linux如何遍历键值对
通过【Map.keyset()】使用【foreach】遍历key和value。唯闭linux通过【Map.keyset()】逗山源使用【foreach】遍历key和value遍历键值对,Linux是一种自由和开山态放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。
‘柒’ linux awk命令--如何引入外部变量
用shell命令删除目录下文件,但是排除某些特殊文件,第一时间无脑从谷歌获取。
丢到脚本执行发现,并没有删除,原来rm后面命令返回结果有问题,必须事当前目录才行,脚本脱离当前目录就懵逼。那想办法改吧。
既然【 ls *.txt | grep -v test.txt 】返回的的是文件名称,那拼上目录就完事了。
使用awk拼接目录和文件:
由于【ls -l 】返回的第一行【total 272】需过滤:
过滤第一行统计信息:
awk内置了一些变量可以拼接,还有常量也可以拼接,此处不表,重点提及awk作用域外的变量引用,有一下三种方式:
格式如:awk ‘{action}’ 变量名=变量值 ,这样传入变量,可以在action中获得值。 注意:变量名与值放到’{action}’后面。
这种变量在:BEGIN的action不能获得。
格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’ 注意:用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在 action前面。
只需要调用:awk内置变量 ENVIRON,就可以直接获得环境变量。它是一个字典数组。环境变量名 就是它的键值。