最近做了一个linux下面的模拟鼠标和键盘的app,但不是很清楚字符对应的键值;查找内核源码,在kernel/include/uapi/linux/input.h文件中找到;

下面给出普通键盘上面对应的键值:

   键名                              值(十进制)
ESC 1
F1 59
F2 60
F3 61
F4 62
F5 63
F6 64
F7 65
F8 66
F9 67
F10 68
F11 87
F12 88
` ~ 41
1 ! 2
2 @ 3
3 # 4
4 $ 5
5 % 6
6 ^ 7
7 & 8
8 * 9
9 ( 10
0 ) 11
- _  12
+ = 13
Backspace(退格键) 14
Tab 15
q Q 16
w W 17
e E 18
r R 19
t T 20
Y y 21
u U 22
i I 23
o O 24
p P 25
[ { 26
] } 27
Enter(回车键) 28
CapsLock 58
a A 30
s S 31
d D 32
f F 33
g G 34
h H 35
j J 36
k K 37
l L 38
; : 39
' " 40
\ | 43
Left_shift(左上档键) 42
z Z 44
x X 45
c C 46
v V 47
b B 48
n N 49
m M 50
, < 51
. > 52
/ ? 53
Right_shift(右上档键) 54
Left_ctrl(左Ctrl键) 29
左Super键(windows键) 125
Left_alt(左alt键) 56
space(空格键) 57
Right_alt(右alt键) 100
右Super键(windows键) 126
菜单键 127
Right_ctrl(右Ctrl键) 97
Print Screen键 99
ScrollLock键 70
PauseBreak键 119
Insert 110
Home 102
PageUp 104
Delete 111
End 107
PageDown 109
方向键上 103
方向键下 108
方向键左 105
方向键右 106
NumLock 69
/ (小键盘) 98
* (小键盘) 55
- (小键盘) 74
+ (小键盘) 78
Enter(小键盘) 96
. (小键盘) 83
0 (小键盘) 82
1 (小键盘) 79
2 (小键盘) 80
3 (小键盘) 81
4 (小键盘) 75

5 (小键盘)

76                              
6 (小键盘) 77
7 (小键盘) 71
8(小键盘)   72            
9(小键盘) 73

那么用这些可以做什么呢?

1:键盘记录器(linux下)

  记录器代码:

  https://paste.ubuntu.com/p/ksfPqyBtq3/

  翻译器代码:

  https://paste.ubuntu.com/p/ybS3kgWbmb/  

  测试:

  首先打开记录器:

  打开翻译器翻译:

  

2: 模拟键盘组合键

//文件名sim_ctrl.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<linux/input.h>
#include<fcntl.h>
#include<sys/time.h> char * kbd_dev="/dev/input/event7";//可能不是event7,要使用cat /proc/bus/input/devices| grep kbd 查看
int Ctrl(int kval)
{
int fd = -;
fd = open(kbd_dev, O_RDWR);
if(fd <= )
{
printf("Can not open mouse input file\n");
return -;
}
struct input_event event; //control down
gettimeofday(&event.time, );
event.type = EV_KEY;
event.value = ;
event.code = ;
write(fd, &event, sizeof(event)); //key down
gettimeofday(&event.time, );
event.type = EV_KEY;
event.value = ;
event.code = kval;
write(fd, &event, sizeof(event)); //key up
gettimeofday(&event.time, );
event.type = EV_KEY;
event.value = ;
event.code = kval;
write(fd, &event, sizeof(event)); //control up
gettimeofday(&event.time, );
event.type = EV_KEY;
event.value = ;
event.code = ;
write(fd, &event, sizeof(event));
//syn
gettimeofday(&event.time, );
event.type = EV_SYN;
event.value = ;
event.code = SYN_REPORT;
write(fd, &event, sizeof(event)); close(fd);
return ;
} int main()
{
sleep();
//模拟Ctrl+C
Ctrl();//c的键值为44
}

Linux下键盘值 对应input_evnet的code值。的更多相关文章

  1. Fedora Linux 下安装配置C开发环境Code::Blocks

    一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...

  2. linux系统下键盘按键的重新映射——xmodmap工具和xev工具

    大家会不会有时候,感觉键盘上的某几个键用起来不是很方便,打字打久了很容易手指头疼呢? 例如大家使用vim编辑器时, 经常需要使用到esc键,而该键在左上角,很不方便的.再比如写程序的时候,经常会使用到 ...

  3. Linux下统计出现次数最多的指定字段值

    假设桌面上有一个叫“data.txt”的文本,内容如下: {id='xxx' info='xxx' kk='xxx' target='111111' dd='xxx'}{id='xxx' info=' ...

  4. 在Ubuntu Linux下安装Code::Blocks和Eclipse CDT

           最近小白由于有工作学习的需要,要尝试在Linux下进行C++编程.所以特地花了一点时间研究一下Linux下的C++的IDE.最后我尝试了使用Code::Blocks和Eclipse两个著 ...

  5. linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”

    计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为 ...

  6. MTU介绍以及在windows和linux下怎么设置MTU值

    最大传输单元MTU(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个参数通常与通信接口有关(网络接口卡 ...

  7. Arch Linux下Visual Stdio Code在格式化C代码时报错

    libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...

  8. 在Linux下锁住键盘和鼠标而不锁屏

    假如在你正看着屏幕上的某些重要的事情时,你不想让你的小猫或者小狗在你的键盘上行走,或者让你的孩子在键盘上瞎搞一气,那我建议你试试 xtrlock 这个工具. 假如在你正看着屏幕上的某些重要的事情时,你 ...

  9. 实现Linux下dc的功能,计算后缀表达式的值

    提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 -将运算符写在两个操作数之后的表达式称为"后缀表达式",如上面的中缀表达式可转换为后缀表达式1 2 ...

随机推荐

  1. 【Go】获取用户真实的ip地址

    原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...

  2. Spark提高篇——RDD/DataSet/DataFrame(一)

    该部分分为两篇,分别介绍RDD与Dataset/DataFrame: 一.RDD 二.DataSet/DataFrame 先来看下官网对RDD.DataSet.DataFrame的解释: 1.RDD ...

  3. 网络扫描工具nmap

    nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器).开放了哪些端口.其他的功能用的比较少,做渗透的人可能要了解的多些. 1.1 选项说明 nmap需要自行安装. shell> y ...

  4. Perl构建和打包自己的模块

    当写好一个或多个模块后,可以将它构建.打包成"tar.gz",以便让别人安装或者上传到CPAN(如果愿意的话).对于模块的使用者来说,也不用再使用use lib 'LIB_PATH ...

  5. js绑定下拉框

    ---恢复内容开始--- 方法一 js-ajax部分 function GetDListOfCt() { $.ajax({ url: "../../Ajax/Boss_Show.ashx?t ...

  6. [转]docker基础详解

    本文转自:https://blog.csdn.net/xsj_blog/article/details/71700032 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  7. 【转载】在Centos系统上采用二进制文件部署Node.js环境

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  8. mysql中general_log查询日志

    作为mysql的通用查询日志,记录增删改查操作的,都有日志文件记录的. 经上网查资料,得知,通用查询日志--可以关闭 show global variables like '%general%'; 同 ...

  9. HDU6187(对偶图生成树)

    Destroy Walls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)T ...

  10. Python 字符串拼接 sql ,造成 sql 注入例子

    简单的 userinfo 表 字符串拼接 sql import pymysql # 测试环境的数据库连接 conn = pymysql.connect(host='192.168.0.214', po ...