Raspberry Pi | Linux |检测释放键| WASD C中的键盘控件
我想在我的PI中实现WASD控件。到目前为止,这也很有效Raspberry Pi | Linux |检测释放键| WASD C中的键盘控件,c,linux,keyboard,raspberry-pi,release,C,Linux,Keyboard,Raspberry Pi,Release,我想在我的PI中实现WASD控件。到目前为止,这也很有效 #include "bcm2835.h" #define SLEEPTIME 500 #define GPIO17 RPI_GPIO_P1_11 ... while(running) { // get key printf("wait for key:"); system("/bin/stty raw"); key = getchar(); system("/bin/stty cooked");
#include "bcm2835.h"
#define SLEEPTIME 500
#define GPIO17 RPI_GPIO_P1_11
...
while(running) {
// get key
printf("wait for key:");
system("/bin/stty raw");
key = getchar();
system("/bin/stty cooked");
printf(" key %i pressed!\n", key);
// key-logic
switch(key) {
case 'w':
printf("set GPIO 17 HIGH");
bcm2835_gpio_write(GPIO17, HIGH);
bcm2835_delay(SLEEPTIME); // <-- wanna remove this!
break;
}
// reset GPIO
bcm2835_gpio_write(GPIO17, LOW);
printf("\n");
}
...
#包括“bcm2835.h”
#定义睡眠时间500
#定义GPIO17 RPI\U GPIO\U P1\U 11
...
当(运行时){
//拿到钥匙
printf(“等待键:”);
系统(“/bin/stty raw”);
key=getchar();
系统(“/bin/stty”);
printf(“键%i按下!\n”,键);
//关键逻辑
开关(钥匙){
案例“w”:
printf(“设置GPIO 17高”);
bcm2835_gpio_写入(GPIO17,高);
bcm2835_延迟(睡眠时间);//你必须记住你在这里检查的是什么,你不是在检查键盘上是否按了实际的按钮,你是在检查输入流中是否有字符。你问的行为可能涉及到与键盘本身的接口。看看驱动程序开发和硬件接口。编辑:它也是值得注意的是,一些本机库存在于允许您检查键盘状态的系统中,我不确定pi系统是否有。感谢您的快速响应。我将在此方向上寻找结果。我认为我有一个很好的发现。我将进行测试并给出反馈。不幸的是,我没有成功的书面解决方案。我已经用一个主函数和一个连续循环扩展了代码。不幸的是,一切都像以前一样工作。没有意识到密钥已经被释放。我做错了什么吗?