Как отправить и получить клавишу Ctrl для консольного приложения .Net Core через Putty SSH? - PullRequest
1 голос
/ 05 октября 2019

У меня консольное приложение .Net Core 2, работающее на сервере Ubuntu.

Я ssh на сервер через Putty из Windows.

Когда я пытаюсь отправить что-либо с помощью "ctrl"перед этим я вижу, что приложение не получает сигнал клавиши ctrl.

Является ли это проблемой, связанной с Putty, которая вообще не позволяет отправлять клавишу ctrl? Или есть что-то конкретное в работе со специальными ключами в Linux или через SSH, которое мешает моему приложению распознавать нажатие клавиши?

Вот мой код (он работает при запуске непосредственно на моем компьютере с Windows):

var programCanceler = new CancellationTokenSource();

log?.Information("Press ctrl+q to shut down application");

while (!programCanceler.IsCancellationRequested)
{

    if (Console.KeyAvailable)
    {
        ConsoleKeyInfo key = Console.ReadKey(true);

        //The following line does not fire when I press ctrl
        //but it does fire when I press Q -- regardless of whether I'm holding ctrl
        log?.Information($"Key Pressed: {key.Key}");

        //Additionally, the following line never evaluates to true
        //so even a ctrl+key combination isn't being recognized
        if (key.Key == ConsoleKey.Q && key.Modifiers.HasFlag(ConsoleModifiers.Control))
        {
            programCanceler.Cancel();
            log?.Information("Shutdown request issued...");
        }
    }

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