In der usb.id steht die Tastatur so gar nicht drin. Meine Funktion holt die Informationen aus Sysfs.
Die aktuelle Version von linux-usb.org ändert daran nichts.
Mal sehen, was ich daraus mache.
Hier mal eine Version der Funktion, falls es jemanden interessiert (Schade das es kein F# Highlighting gibt)
open System.IO
open System
type DeviceInfo =
{ Manufacturer: string
Description: string
VendorID: string
DeviceID: string }
let getDeviceInfoFromSysfs (devicePath: string) =
let vendorIDPath = Path.Combine(devicePath, "idVendor")
let deviceIDPath = Path.Combine(devicePath, "idProduct")
let manufacturerPath = Path.Combine(devicePath, "manufacturer")
let descriptionPath = Path.Combine(devicePath, "product")
let readSysfsFile (path: string) =
if File.Exists(path) then
File.ReadAllText(path).Trim()
else
""
let vendorID = readSysfsFile vendorIDPath
let deviceID = readSysfsFile deviceIDPath
let manufacturer = readSysfsFile manufacturerPath
let description = readSysfsFile descriptionPath
if String.IsNullOrWhiteSpace(vendorID) then
None
else
Some
{ Manufacturer = manufacturer
Description = description
VendorID = vendorID
DeviceID = deviceID }
let getConnectedDevices () =
let devicesPath = "/sys/bus/usb/devices/"
let deviceDirectories = Directory.GetDirectories(devicesPath)
let devices =
deviceDirectories
|> Seq.choose getDeviceInfoFromSysfs
devices
let connectedDevices = getConnectedDevices ()
for device in connectedDevices do
printfn
"Manufacturer: %s, Description: %s, VendorID: %s, DeviceID: %s"
device.Manufacturer
device.Description
device.VendorID
device.DeviceID