70 lines
No EOL
1.5 KiB
C#
70 lines
No EOL
1.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Domain.Input;
|
|
|
|
namespace Domain {
|
|
public enum VKeyCode {
|
|
A = 0x41,
|
|
B = 0x42,
|
|
C = 0x43,
|
|
D = 0x44,
|
|
E = 0x45,
|
|
F = 0x46,
|
|
G = 0x47,
|
|
H = 0x48,
|
|
I = 0x49,
|
|
J = 0x4A,
|
|
K = 0x4B,
|
|
L = 0x4C,
|
|
M = 0x4D,
|
|
N = 0x4E,
|
|
O = 0x4F,
|
|
P = 0x50,
|
|
Q = 0x51,
|
|
R = 0x52,
|
|
S = 0x53,
|
|
T = 0x54,
|
|
U = 0x55,
|
|
V = 0x56,
|
|
W = 0x57,
|
|
X = 0x58,
|
|
Y = 0x59,
|
|
Z = 0x5A,
|
|
Interpunct = 0x33,
|
|
Cedilla = 0xBF,
|
|
AccentOpen = 0xBA,
|
|
AccentClosed = 0xDE,
|
|
Shift = 0x10
|
|
}
|
|
|
|
public class CustomInput {
|
|
private readonly List<InputReader> _readers = new();
|
|
private readonly KeyHistory _history;
|
|
|
|
public CustomInput() {
|
|
_history = new KeyHistory();
|
|
|
|
_readers.Add(new CedillaReader(_history));
|
|
_readers.Add(new GeminadaReader(_history));
|
|
_readers.Add(new TxReader(_history));
|
|
_readers.Add(new IxReader(_history));
|
|
_readers.Add(new NyReader(_history));
|
|
_readers.Add(new TgReader(_history));
|
|
_readers.Add(new TjReader(_history));
|
|
_readers.Add(new LlReader(_history));
|
|
_readers.Add(new SsReader(_history));
|
|
_readers.Add(new AObertaReader(_history));
|
|
_readers.Add(new EObertaReader(_history));
|
|
_readers.Add(new OObertaReader(_history));
|
|
_readers.Add(new IDieresiReader(_history));
|
|
}
|
|
|
|
public void UpdateInput() {
|
|
_history.CheckPresses();
|
|
foreach (InputReader reader in _readers)
|
|
reader.UpdateInput();
|
|
}
|
|
|
|
public bool AnyKeyDown() => _readers.Any(reader => reader.KeyDown());
|
|
}
|
|
} |