Возникают проблемы с постоянным чтением позиции мыши из простой оболочки c # вокруг сборки ncurses Томаса Дики для Windows здесь , я могу вызвать большую часть API без каких-либо проблем.
Однако я не могу прочитать положение мыши, кроме случаев, когда происходит соответствующее событие щелчка. Мой код сильно зависит от реализации, но основной цикл моего быстрого и грязного тестового приложения выглядит следующим образом (очевидно, NC
- это моя оболочка со многими статическими методами):
var eventMask =
NCMouse.BUTTON1_CLICKED |
NCMouse.BUTTON2_CLICKED |
NCMouse.REPORT_MOUSE_POSITION;
NC.MouseMask(eventMask, out uint old);
while(true)
{
int c = NC.GetChar();
if(c == NCKey.MOUSE)
{
NC.GetMouse(out MouseEvent mouse);
NC.MoveAddString(3, 0, $"{mouse.x}. {mouse.y}");
}
else
if (c != -1)
{
break;
}
NC.Move(NC.Lines - 1, NC.Columns - 1);
NC.Refresh();
}
Прочитав о * nix решениях, я подозреваю, что мне может понадобиться какая-то переменная окружения, хотя я также видел комментарии разработчиков C, в которых говорилось, что им нужно printf("\0cc[?1003h\n")
, чтобы включить отчет о положении мыши, а затем отключить его перед выходом с помощью похожая последовательность. Я полагаю, мне нужно было бы подключиться к библиотеке DLL msvcrt, чтобы попробовать это (я не ожидал, что .NET Console.Write
сработает, и это не сработало).