我正在开发一个控制台应用程序,它应该在两个num lock状态下从一个numpad键盘监听数字 - 打开和关闭。该应用程序在带有Arch Linux和Mono的Raspberry Pi上运行。由于我没有找到一种方法,即在Mono下编译,永久打开numlock,我使用以下方法将num pad命令转换为数字:
private string ReadNumPadSymbol(ConsoleKeyInfo keyInfo)
{
char editedSymbol;
switch (keyInfo.Key)
{
case ConsoleKey.Insert:
editedSymbol = '0';
break;
case ConsoleKey.End:
editedSymbol = '1';
break;
case ConsoleKey.DownArrow:
editedSymbol = '2';
break;
case ConsoleKey.PageDown:
editedSymbol = '3';
break;
case ConsoleKey.LeftArrow:
editedSymbol = '4';
break;
case ConsoleKey.Clear:
editedSymbol = '5';
break;
case ConsoleKey.RightArrow:
editedSymbol = '6';
break;
case ConsoleKey.Home:
editedSymbol = '7';
break;
case ConsoleKey.UpArrow:
editedSymbol = '8';
break;
case ConsoleKey.PageUp:
editedSymbol = '9';
break;
default:
return String.Empty;
}
return editedSymbol.ToString();
}
它在Windows下按预期工作,但在Linux下,当按下“5”按钮时,该方法返回空字符串。由于某种原因,它不会进入ConsoleKey.Clear案例。有没有解决这个问题?
谢谢!