在阿达的keydown

时间:2013-10-23 11:36:23

标签: ada

当用户按下我的Ada程序中的“escape”键时,我需要执行一些功能。我知道我们可以通过get_line检索他输入的内容,但这并不是我需要做的。 实际上,我不想在他进入“逃跑”之前停止该计划。

首先,有可能吗?

1 个答案:

答案 0 :(得分:5)

可以使用以下方式获取字符而不需要输入:

Ada.Text_IO.Get_Immediate (Answer)

AnswerCharacter

并且转义键是ASCII 27,因此您可以检查Character'Pos(Answer)是否等于27。另外,根据评论中的建议,您还可以将AnswerAda.Characters.Latin_1.ESC进行比较。

这是一个显示"是啊!!! 1 !! 1!"在循环中直到按下ESC键。

with Ada.Characters.Latin_1;
with Ada.Text_IO;

procedure Test is
    Finished : Boolean := False;

    task Escape_Task;

    task body Escape_Task is
        Answer : Character;
    begin
        loop
            Ada.Text_IO.Get_Immediate(Answer);
            if Answer = Ada.Characters.Latin_1.ESC then
                Finished := True;
                exit;
            end if;
        end loop;
    end Escape_Task;

begin
    while not finished loop
        Ada.Text_IO.Put_Line("Yeahh!!!1!!1!");
    end loop;
end Test;