在linux中,有缓存历史键盘事件吗?怎么样查看历史发生过的键盘事件?
时间: 2024-05-16 22:15:18 浏览: 170
在Linux中,可以使用`showkey`命令来查看实时键盘事件。但是,如果想要查看历史缓存的键盘事件,可以使用`sudo evtest`命令。
`evtest`是一个Linux命令行工具,用于显示输入设备的输入事件(包括键盘事件)。使用该命令需要使用root权限,因此需要使用`sudo`命令。
以下是使用`evtest`命令查看历史键盘事件的步骤:
1. 打开终端窗口并输入以下命令:
```
sudo evtest
```
2. 在列表中选择要查看的输入设备,并记下其ID号。
3. 输入设备ID号并按Enter键。
4. 在输入设备的事件列表中,查找键盘事件并选择要查看的键盘事件。
5. 在键盘事件的详细信息中,查找`value`字段的值。该值表示按下或释放的键的ASCII码。
通过这种方式,可以查看历史缓存的键盘事件。
相关问题
请用linux 中的c语言来编写程序设计。设计一个程序,要求用带缓存的流文件I/O操作,把键盘上输入的字符串写入文件“/tmp/5-14tmp”。如果该文件不存在,则创建此文件,多次运行程序多次输入字符串后,文件“/tmp/5-14tmp”中只保存最后一次输入的字符串。
好的,以下是用Linux中的C语言编写的程序设计。程序会检查文件是否存在,如果不存在则创建一个新文件。然后程序会读取键盘输入的字符串,并将其写入文件中。由于使用了带缓存的文件I/O操作,所以需要调用fflush()函数来确保缓存中的数据被写入文件中。请注意,为了方便起见,此程序假定输入的字符串不超过1024个字符。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1024
int main() {
FILE *fp;
char input_str[MAX_LEN];
// 检查文件是否存在,如不存在则创建
fp = fopen("/tmp/5-14tmp", "w+");
if (fp == NULL) {
printf("无法创建文件\n");
exit(1);
}
// 读取键盘输入的字符串
printf("请输入字符串:");
fgets(input_str, MAX_LEN, stdin);
// 将字符串写入文件
fputs(input_str, fp);
fflush(fp);
// 关闭文件
fclose(fp);
return 0;
}
```
如果你多次运行该程序并输入不同的字符串,文件中将只保存最后一次输入的字符串。
Linux程序设计。设计一个程序,要求用带缓存的流文件I/O操作,把键盘上输入的字符串写入文件“/tmp/5-14tmp”。如果该文件不存在,则创建此文件,多次运行程序多次输入字符串后,文件“/tmp/5-14tmp”中只保存最后一次输入的字符串。
下面是一个简单的实现,使用了标准C库的带缓存的流文件I/O操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define FILENAME "/tmp/5-14tmp"
int main() {
char buffer[1024];
FILE *fp = fopen(FILENAME, "w");
if (fp == NULL) {
perror("Failed to open file");
exit(EXIT_FAILURE);
}
// 读入字符串并写入文件
printf("Enter a string: ");
fgets(buffer, sizeof(buffer), stdin);
fprintf(fp, "%s", buffer);
// 关闭文件
fclose(fp);
return 0;
}
```
该程序会在/tmp目录下创建名为5-14tmp的文件,并向其中写入从键盘输入的字符串。如果该文件已经存在,则会被覆盖。如果要保留之前的内容,可以使用追加模式打开文件:
```c
FILE *fp = fopen(FILENAME, "a");
```
这样每次写入时就会把新的字符串追加到文件末尾。如果要只保存最后一次输入的字符串,可以使用截断模式打开文件:
```c
FILE *fp = fopen(FILENAME, "w");
```
这样每次写入时都会清空文件内容,只保留最后一次输入的字符串。
阅读全文