如何在 conio.h 中标记不同的 f 按键?

Posted

技术标签:

【中文标题】如何在 conio.h 中标记不同的 f 按键?【英文标题】:How to label different f key pressings in conio.h? 【发布时间】:2021-12-14 11:18:08 【问题描述】:
#include <stdio.h>
#include <conio.h>


int main() 
    int ch = getch();
   // printf ("%d" , ch);
    switch (ch)
        case 13:
            printf("ENTER");
           break;
        case 224:
            printf("LEFT ARROW");
            break;
        case  45 :
            printf("LOWERCASE LETTER");
            break;
        case  27 :
            printf("ESC");
             break;
        case  48 :
            printf ("digit");
            break;
        case 49   :
            printf("digit");
             break;
        case 50  :
            printf("digit");
             break; 
        case  51  :
            printf("digit");
             break;
        case   52 :
            printf("digit");
             break; 
        case  53  :
            printf("digit");
             break;
        case  54  :
            printf("digit");
             break;     
        case   55 :
            printf("digit");
             break;
        case 56  :
            printf("digit");
             break; 
        case 57 :
            printf("digit");
             break;
        
        
    
    

我正在尝试标记不同的键盘输入,但我无法标记不同的 f 键按下以及箭头键,因为它返回相同的 int 值。如何标记不同的 F 键按下

这是绕过***s不必要过滤器的填充线

【问题讨论】:

根据我对恐龙时代的记忆,箭头键返回 2 个字节,而不是 1。你会得到代码后跟一个零字节的 iirc。有什么特别的原因让你接受培训成为一名 MS DOS 程序员吗? 在macos上甚至可能是4个字节... 我没有太多编程经验,请您详细说明我该如何解决这个问题? 这是绕过***s不必要过滤器的填充行”是什么意思? 【参考方案1】:

我想你可以通过“getch and arrow codes”获得很多信息。

就像@Lundin 说的,方向键返回值不是1,所以你应该知道哪个键对应多少字节,然后你可以设计你的判断。

我建议你可以先了解你的代码原理,然后在GOOGLE上通过关键字搜索答案(例如:conio.hgetch()...等)。

如果还有问题,你在这里发帖,我想每个人都会为你解答。

【讨论】:

以上是关于如何在 conio.h 中标记不同的 f 按键?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键

有序链表和顺序表

linux系统中,编写的C程序调用conio.h,但不行。出现下图提示,这要如何解决呢,怎么才可以调用到conio.h

如何在cygwin中包含conio.h?

C语言(按键获取与函数)

按键精灵如何执行完一个脚本后等待一段时间后再次执行这个脚本