Можно ли проверить, нажата ли указанная c клавиша, используя Free Pascal? - PullRequest
0 голосов
/ 17 февраля 2020

Я хотел бы иметь возможность написать функцию Free Pascal, такую ​​как:

function KeyIsPressed(ch: char): boolean;

, которая возвращает true, если и только если клавиша, соответствующая символу ch, нажата в то время исполнения. Эта функция должна учитывать такие конструкции, как:

if KeyIsPressed('a') and KeyIsPressed('b') and not KeyIsPressed('c') then ...

, очевидно, возвращающие true, если и только если нажаты и 'a', и 'b', а 'c' не нажата.

К твоему сведению, я бегу:

Free Pascal Compiler version 3.0.4+dfsg-18ubuntu2 [2018/08/29] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others

PS1: Мне все равно, начнет ли буфер клавиатуры заполняться или нет, проблема, с которой можно было бы потом по отдельности разобраться.

PS2: I заметил подобные вопросы относительно других языков программирования, но, к сожалению, они бесполезны для Pascal.

1 Ответ

0 голосов
/ 20 февраля 2020

Достаточно взглянуть на реализацию блоков Crt и / или клавиатуры. Они делают эти вещи. Но они захватывают данные клавиатуры от стандартного ввода, который уже "приготовлен".

Трудно обойти это. Чтобы выяснить, какие комбинации клавиш сделать сложно, попробуйте функцию "обучающие клавиши" в текстовой среде IDE, которая в основном показывает функциональность блока "клавиатура"

...