Przenośne buforowane wejście klawiatury dla XNA / MonoGame?

11

Jako wstępne rozwiązanie, obecnie używam frameworka Nuclex w projekcie gry C # / XNA do buforowania klawiatury. Niestety, nuclex opiera się na SlimDX.Directinput.dll i dlatego o ile wiem, można go używać tylko w systemach operacyjnych Windows. Jednak używam MonoGame do atakowania innych platform (Linux, OSX itp.) I dlatego szukam przenośnego sposobu na zintegrowanie buforowanego wejścia klawiatury na wszystkich platformach. Czy jest jakiś?

ares_games
źródło
Nie istnieje jeszcze jako biblioteka. Ludzie zrobili to na Maca i Linuksa, przenosząc moją bibliotekę GUI do monogame, a ja próbuję zachęcić ludzi do dodania kodu.
ClassicThunder,

Odpowiedzi:

4

SharpInputSystem został stworzony właśnie w tym celu. Zapewnia przenośny sposób dostępu do klawiatury i myszy na większości platform oraz GamePad / Joystick na kilku innych. W pełnym ujawnieniu jestem autorem, ale potrzebowałem podobnej biblioteki dla próbek, które dostarczam z Axiomem.

Może zajść potrzeba modyfikacji, aby poprawnie załadować zestawy MonoGame. Aktualnie ładuję biblioteki Xna dynamicznie, aby uniknąć zależności od silnej nazwy. Mogę albo wprowadzić zmiany, jeśli chcesz, albo jeśli masz na to ochotę, prześlij łatę, gdy zaczniesz działać.

borrillis
źródło
1
Dobry wysiłek, ale nie prawdziwa odpowiedź, ponieważ nie można go w tym momencie wykorzystać bez znacznej pracy.
ashes999
0

Chociaż nie jest odpowiednio przenośny (dotyczy tylko systemu Windows i Linux). MonoGame ma zdarzenie do wprowadzania tekstu, które używa odpowiednio buforowanej klawiatury.

MonoGame.Framework / GameWindow.cs

    /// Use this event to retrieve text for objects like textbox's.
    /// This event is not raised by noncharacter keys.
    /// This event also supports key repeat.
    /// For more information this event is based off:
    /// http://msdn.microsoft.com/en-AU/library/system.windows.forms.control.keypress.aspx
    /// </summary>
    /// <remarks>
    /// This event is only supported on the Windows DirectX, Windows OpenGL and Linux platforms.
    /// </remarks>
    public event EventHandler<TextInputEventArgs> TextInput;
ClassicThunder
źródło