поймать Control + ключ в моно C # Readline - PullRequest
3 голосов
/ 07 августа 2011

Есть ли способ поймать Ctrl + с помощью Readline () в консоли Mono?Я использую Mono 2.10.2, и когда я нажимаю, например, Ctrl-D, ничего не происходит.Я не знаю, какой сигнал получает ReadLine (), когда я его нажимаю.

1 Ответ

2 голосов
/ 07 августа 2011

ReadLine() читает строку текста , введенную в консоль .

Управляющая клавиша не имеет никакого текстового представления, поэтому она, безусловно, не «перехватывается».Чтобы поймать управляющую клавишу, вы можете использовать функцию Console.ReadKey().

Вот пример со страницы документации для Console.ReadKey().

  ConsoleKeyInfo cki;
  // Prevent example from ending if CTL+C is pressed.
  Console.TreatControlCAsInput = true;

  Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
  Console.WriteLine("Press the Escape (Esc) key to quit: \n");
  do 
  {
     cki = Console.ReadKey();
     Console.Write(" --- You pressed ");

     if((cki.Modifiers & ConsoleModifiers.Alt) != 0)
         Console.Write("ALT+");
     if((cki.Modifiers & ConsoleModifiers.Shift) != 0)
         Console.Write("SHIFT+");
     if((cki.Modifiers & ConsoleModifiers.Control) != 0)
         Console.Write("CTL+");

     Console.WriteLine(cki.Key.ToString());
   } while (cki.Key != ConsoleKey.Escape);
...