簡體   English   中英

在 Shell 中檢測向上/向下箭頭

[英]Detecting Arrow Up/Down in a Shell

我正在嘗試使用 Flex/Bison 和 C++ 為 uni 項目實施 shell。

為了加分,我們被邀請使用向上/向下箭頭鍵來實現歷史記錄。 我在檢測箭頭鍵時遇到了一些困難。

我認為在 flex 中執行此操作有點超出 scope of flex 但是使用我在其他帖子中發現的getch()方法也不起作用,因為如果用戶輸入的不是向上/向下箭頭鍵,我會丟失輸入的第一個字符。

我喜歡一些關於在哪里可以找到有關如何巧妙地執行此操作的信息的指示。 因為它是針對大學的,所以我不要求一個完整的答案。 :)

為了實現這一點,我們首先必須找出箭頭鍵的 ASCII 值,如下所示:

Up Arrow    - 72
Down Arrow  - 80
Left Arrow  - 75
Right Arrow - 77

現在我們可以輕松地檢查按鍵,如下所示:

if (character == char(72))
{
    std::cout << "Up arrow pressed!";
}
else if (character == char(80))
{
    std::cout << "Down arrow pressed!";
}

請注意,我在這里使用以下內容將 ASCII 值轉換為 char:

char(ascii_value)

示例代碼:

#include <iostream>
#include <string>
#include <conio.h>

int main() 
{
    while (true)
    {
        char character = _getch();
    
        if (character == char(72))
        {
            std::cout << "Up arrow pressed!"; break; // Up arrow pressed
        }
        else if (character == char(80))
        {
            std::cout << "Down arrow pressed!"; break; // Down arrow pressed
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM