private void HandleKeyboard(KeyboardDevice device, KeyboardEvent e) { if (device != null) { device.State.SetIsConnected(true); Debug.Print("[Input] Added keyboard {0}", device.Id); Key key = Key.Unknown; uint raw = e.Key; if (raw >= 0 && raw < KeyMap.Length) { key = KeyMap[raw]; } if (key == Key.Unknown) { Debug.Print("[Linux] Unknown key with code '{0}'", raw); } device.State.SetKeyState(key, e.KeyState == KeyState.Pressed); } }
private void HandleDeviceAdded(IntPtr context, IntPtr device) { if (LibInput.DeviceHasCapability(device, DeviceCapability.Keyboard)) { KeyboardDevice keyboard = new KeyboardDevice(device, Keyboards.Count); KeyboardCandidates.Add(keyboard.Id, keyboard); Debug.Print("[Input] Added keyboard device {0} '{1}' on '{2}' ('{3}')", keyboard.Id, keyboard.Name, keyboard.LogicalSeatName, keyboard.PhysicalSeatName); } if (LibInput.DeviceHasCapability(device, DeviceCapability.Mouse)) { MouseDevice mouse = new MouseDevice(device, Mice.Count); MouseCandidates.Add(mouse.Id, mouse); Debug.Print("[Input] Added mouse device {0} '{1}' on '{2}' ('{3}')", mouse.Id, mouse.Name, mouse.LogicalSeatName, mouse.PhysicalSeatName); } if (LibInput.DeviceHasCapability(device, DeviceCapability.Touch)) { Debug.Print("[Input] Todo: touch device."); } }