Терминал Mac OS: кликабельный текст в окне терминала (c исполняемый файл) - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь запросить ввод от пользователя в терминале Mac OS. Моя программа написана на языке c, и я хотел бы, чтобы у меня был кликабельный текст, позволяющий пользователю нажимать «да» или «нет», чтобы моя программа на c выполняла или не выполняла определенное действие / функцию.

Я хотел бы, например, увидеть что-то вроде:

Хотите подтвердить свою электронную почту? [Да] [Нет]

Тогда я смогу либо нажать «да», либо «нет» (поэтому в основном «да / нет» - это текст, действующий как кнопки).

Я не нашел ничего, что ответило бы на мой вопрос, возможно ли это в c. Может быть, есть какая-то особенная функция для Mac OS, которую я мог бы вызвать из моей программы на c.

Большое спасибо за вашу помощь!

1 Ответ

1 голос
/ 26 апреля 2019

Частичный ответ

Чтобы получать щелчки мышью в терминале, необходимо включить «Отчеты мыши» в Terminal.app от Cmd-R. (Если вы не хотите полагаться на это, вы можете запустить xterm из Terminal.app.)

Затем вы можете использовать эту последовательность для преобразования щелчков мыши в нажатия клавиш:

echo -e "\033[?1000h"

Просто введите его и нажмите в окне терминала.Чтобы отключить его снова, используйте это:

echo -e "\033[?1000l"

Эта последовательность CSI имеет следующий формат: ESC [?число л / ч

Более подробную информацию можно найти здесь: Последовательности управления XTerm

Имейте в виду, что Terminal.app не поддерживает все функции xterm.

Quick'n'dirty C-код для включения:

#include <unistd.h>
#define MR "\033[?1000h"
int main() { write(1,MR,sizeof(MR)-1);return 0;}

"Нажатия клавиш мыши" можно читать как другие нажатия клавиш из STDIN.

Альтернативный подход к решению

В дополнение к C вы можете использовать AppleScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...