
正文
Linux下键盘值 对应input_evnet的code值。
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
最近做了一个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
}







