最近做了一个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. Mybatis学习(三)————— 映射文件详解

    前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...

  2. shell中$后加引号有什么用($"string"和$'string')

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 有些时候在某些服务管理脚本中看到$"$string& ...

  3. Go基础系列:import导包和初始化阶段

    import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据 ...

  4. Oracle 如何开启归档模式

    Oracle开启归档 场景:某所的数据库没有开启归档,如何开启归档模式的文档. 1.查看oracle归档状态 SQL> archive log list; 数据库日志模式 非存档模式 //目前不 ...

  5. 配置 FATFS 支持长文件名

    FATFS 版本:Nov 09 14 R0.10c 在 FATFS 已经移植好的基础上,首先打开 ffconf.h 配置文件,找到如下图配置项: 可以将此值从 0 改为 1 使用 static wor ...

  6. IE的浏览器模式、文本模式

    最近在部署网页的时候,发现IE下的布局完成混乱. 在改变IE的文本模式后,显示就正常了. IE的浏览器模式,用于切换IE针对该网页的默认文本模式.对不同版本浏览器的条件注释解析.决定请求头里userA ...

  7. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  8. NLP入门(五)用深度学习实现命名实体识别(NER)

    前言   在文章:NLP入门(四)命名实体识别(NER)中,笔者介绍了两个实现命名实体识别的工具--NLTK和Stanford NLP.在本文中,我们将会学习到如何使用深度学习工具来自己一步步地实现N ...

  9. RNN入门(三)利用LSTM生成旅游点评

    介绍   前几天,某个公众号发文质疑马蜂窝网站,认为它搬运其它网站的旅游点评,对此,马蜂窝网站迅速地做出了回应.相信大多数关注时事的群众已经了解了整个事情的经过,在这里,我们且不论这件事的是是非非,也 ...

  10. [nodejs] nodejs开发个人博客(五)分配数据

    使用回掉大坑进行取数据 能看明白的就看,看不明白的手动滑稽 /** * 首页控制器 */ var router=express.Router(); /*每页条数*/ var pageSize=5; r ...