[Linux] Print libinput seat for each detected device

This commit is contained in:
thefiddler 2014-07-18 09:02:01 +02:00
parent 20747664f4
commit 21bcc5eae1
2 changed files with 55 additions and 2 deletions

View file

@ -82,6 +82,9 @@ namespace OpenTK.Platform.Linux
} }
} }
[DllImport(lib, EntryPoint = "libinput_device_get_seat", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr DeviceGetSeat(IntPtr device);
[DllImport(lib, EntryPoint = "libinput_device_has_capability", CallingConvention = CallingConvention.Cdecl)] [DllImport(lib, EntryPoint = "libinput_device_has_capability", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.Bool)] [return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeviceHasCapability(IntPtr device, DeviceCapability capability); public static extern bool DeviceHasCapability(IntPtr device, DeviceCapability capability);
@ -115,6 +118,26 @@ namespace OpenTK.Platform.Linux
[DllImport(lib, EntryPoint = "libinput_suspend", CallingConvention = CallingConvention.Cdecl)] [DllImport(lib, EntryPoint = "libinput_suspend", CallingConvention = CallingConvention.Cdecl)]
public static extern void Suspend(IntPtr libinput); public static extern void Suspend(IntPtr libinput);
[DllImport(lib, EntryPoint = "libinput_seat_get_logical_name", CallingConvention = CallingConvention.Cdecl)]
static extern public IntPtr SeatGetLogicalNameInternal(IntPtr seat);
public static string SeatGetLogicalName(IntPtr seat)
{
unsafe
{
return new string((sbyte*)SeatGetLogicalNameInternal(seat));
}
}
[DllImport(lib, EntryPoint = "libinput_seat_get_physical_name", CallingConvention = CallingConvention.Cdecl)]
static extern public IntPtr SeatGetPhysicalNameInternal(IntPtr seat);
public static string SeatGetPhysicalName(IntPtr seat)
{
unsafe
{
return new string((sbyte*)SeatGetPhysicalName(seat));
}
}
} }
enum DeviceCapability enum DeviceCapability

View file

@ -44,6 +44,8 @@ namespace OpenTK.Platform.Linux
readonly IntPtr Device; readonly IntPtr Device;
string name; string name;
string output; string output;
string logical_seat;
string physical_seat;
public DeviceBase(IntPtr device, int id) public DeviceBase(IntPtr device, int id)
{ {
@ -72,6 +74,32 @@ namespace OpenTK.Platform.Linux
} }
} }
public IntPtr Seat
{
get
{
return LibInput.DeviceGetSeat(Device);
}
}
public string LogicalSeatName
{
get
{
logical_seat = logical_seat ?? LibInput.SeatGetLogicalName(Seat);
return logical_seat;
}
}
public string PhysicalSeatName
{
get
{
physical_seat = physical_seat ?? LibInput.SeatGetPhysicalName(Seat);
return physical_seat;
}
}
public string Output public string Output
{ {
get get
@ -372,14 +400,16 @@ namespace OpenTK.Platform.Linux
{ {
KeyboardDevice keyboard = new KeyboardDevice(device, Keyboards.Count); KeyboardDevice keyboard = new KeyboardDevice(device, Keyboards.Count);
Keyboards.Add(keyboard.Id, keyboard); Keyboards.Add(keyboard.Id, keyboard);
Debug.Print("[Input] Added keyboard device {0} '{1}'", keyboard.Id, keyboard.Name); 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)) if (LibInput.DeviceHasCapability(device, DeviceCapability.Mouse))
{ {
MouseDevice mouse = new MouseDevice(device, Mice.Count); MouseDevice mouse = new MouseDevice(device, Mice.Count);
Mice.Add(mouse.Id, mouse); Mice.Add(mouse.Id, mouse);
Debug.Print("[Input] Added mouse device {0} '{1}'", mouse.Id, mouse.Name); 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)) if (LibInput.DeviceHasCapability(device, DeviceCapability.Touch))