#ifndef org_pqrs_Karabiner_DriverKit_VirtualHIDDeviceUserClient_h
#define org_pqrs_Karabiner_DriverKit_VirtualHIDDeviceUserClient_h

#include <Availability.h>
#include <DriverKit/IOUserClient.iig>

class org_pqrs_Karabiner_DriverKit_VirtualHIDDeviceUserClient: public IOUserClient
{
public:
    virtual bool init() override;
    virtual void free() override;

    virtual kern_return_t Start(IOService* provider) override;
    virtual kern_return_t Stop(IOService* provider) override;

    virtual kern_return_t ExternalMethod(uint64_t selector,
                                         IOUserClientMethodArguments* arguments,
                                         const IOUserClientMethodDispatch* dispatch,
                                         OSObject* target,
                                         void* reference) override;

    virtual uint32_t getKeyboardCountryCode(void);
};

#endif
