Skip to content

Commit

Permalink
update vendor/Karabiner-VirtualHIDDevice
Browse files Browse the repository at this point in the history
  • Loading branch information
tekezo committed Nov 25, 2016
1 parent 0fc7d11 commit b01d0a9
Show file tree
Hide file tree
Showing 12 changed files with 126 additions and 27 deletions.
Expand Up @@ -106,11 +106,13 @@ class karabiner_virtualhiddevice {
initialize_virtual_hid_keyboard,
terminate_virtual_hid_keyboard,
post_keyboard_input_report,
reset_virtual_hid_keyboard,

// VirtualHIDPointing
initialize_virtual_hid_pointing,
terminate_virtual_hid_pointing,
post_pointing_input_report,
reset_virtual_hid_pointing,

// IOHIDSystem (since macOS 10.12)
post_keyboard_event,
Expand All @@ -121,7 +123,7 @@ class karabiner_virtualhiddevice {
};

static const char* get_virtual_hid_root_name(void) {
return "org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020400";
return "org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020500";
}
};
}
Expand Up @@ -9,23 +9,23 @@
<key>CFBundleExecutable</key>
<string>VirtualHIDDevice</string>
<key>CFBundleIdentifier</key>
<string>org.pqrs.driver.Karabiner.VirtualHIDDevice.v020400</string>
<string>org.pqrs.driver.Karabiner.VirtualHIDDevice.v020500</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>VirtualHIDDevice</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>2.4.0</string>
<string>2.5.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>2.4.0</string>
<string>2.5.0</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
Expand All @@ -45,19 +45,19 @@
<key>VirtualHIDRoot</key>
<dict>
<key>CFBundleIdentifier</key>
<string>org.pqrs.driver.Karabiner.VirtualHIDDevice.v020400</string>
<string>org.pqrs.driver.Karabiner.VirtualHIDDevice.v020500</string>
<key>IOClass</key>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020400</string>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020500</string>
<key>IOKitDebug</key>
<integer>0</integer>
<key>IOMatchCategory</key>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020400</string>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_v020500</string>
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
<key>IOUserClientClass</key>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_UserClient_v020400</string>
<string>org_pqrs_driver_Karabiner_VirtualHIDDevice_VirtualHIDRoot_UserClient_v020500</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
Expand Down
Binary file not shown.
2 changes: 1 addition & 1 deletion src/vendor/Karabiner-VirtualHIDDevice/dist/update.sh
Expand Up @@ -5,7 +5,7 @@ PATH='/bin:/sbin:/usr/bin:/usr/sbin'; export PATH
basedir=`dirname "$0"`
cd "$basedir"

bundle_identifier='org.pqrs.driver.Karabiner.VirtualHIDDevice.v020400'
bundle_identifier='org.pqrs.driver.Karabiner.VirtualHIDDevice.v020500'

# Skip if already installed
if kextstat | grep -q "$bundle_identifier"; then
Expand Down
Expand Up @@ -74,6 +74,14 @@ int main(int argc, const char* argv[]) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

kr = IOConnectCallStructMethod(connect,
static_cast<uint32_t>(pqrs::karabiner_virtualhiddevice::user_client_method::reset_virtual_hid_keyboard),
nullptr, 0,
nullptr, 0);
if (kr != KERN_SUCCESS) {
std::cerr << "reset_virtual_hid_keyboard error" << std::endl;
}

finish:
if (connect) {
IOServiceClose(connect);
Expand Down
Expand Up @@ -55,6 +55,14 @@ int main(int argc, const char* argv[]) {
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}

kr = IOConnectCallStructMethod(connect,
static_cast<uint32_t>(pqrs::karabiner_virtualhiddevice::user_client_method::reset_virtual_hid_pointing),
nullptr, 0,
nullptr, 0);
if (kr != KERN_SUCCESS) {
std::cerr << "reset_virtual_hid_pointing error" << std::endl;
}

finish:
if (connect) {
IOServiceClose(connect);
Expand Down
Expand Up @@ -227,9 +227,9 @@
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1.0.0d1;
INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
MODULE_NAME = org.pqrs.driver.Karabiner.VirtualHIDDevice.v020400;
MODULE_NAME = org.pqrs.driver.Karabiner.VirtualHIDDevice.v020500;
MODULE_VERSION = 1.0.0d1;
PRODUCT_BUNDLE_IDENTIFIER = org.pqrs.driver.Karabiner.VirtualHIDDevice.v020400;
PRODUCT_BUNDLE_IDENTIFIER = org.pqrs.driver.Karabiner.VirtualHIDDevice.v020500;
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = kext;
};
Expand Down
Expand Up @@ -59,6 +59,9 @@ OSDefineMetaClassAndStructors(VIRTUAL_HID_ROOT_USERCLIENT_CLASS, super);
}

IOExternalMethodDispatch VIRTUAL_HID_ROOT_USERCLIENT_CLASS::methods_[static_cast<size_t>(pqrs::karabiner_virtualhiddevice::user_client_method::end_)] = {
// ----------------------------------------
// VirtualHIDKeyboard

{
// initialize_virtual_hid_keyboard
reinterpret_cast<IOExternalMethodAction>(&staticInitializeVirtualHIDKeyboardCallback), // Method pointer.
Expand All @@ -83,6 +86,18 @@ IOExternalMethodDispatch VIRTUAL_HID_ROOT_USERCLIENT_CLASS::methods_[static_cast
0, // No scalar output value.
0 // No struct output value.
},
{
// reset_virtual_hid_keyboard
reinterpret_cast<IOExternalMethodAction>(&staticResetVirtualHIDKeyboardCallback), // Method pointer.
0, // No scalar input value.
0, // No struct input value.
0, // No scalar output value.
0 // No struct output value.
},

// ----------------------------------------
// VirtualHIDPointing

{
// initialize_virtual_hid_pointing
reinterpret_cast<IOExternalMethodAction>(&staticInitializeVirtualHIDPointingCallback), // Method pointer.
Expand All @@ -107,6 +122,18 @@ IOExternalMethodDispatch VIRTUAL_HID_ROOT_USERCLIENT_CLASS::methods_[static_cast
0, // No scalar output value.
0 // No struct output value.
},
{
// reset_virtual_hid_pointing
reinterpret_cast<IOExternalMethodAction>(&staticResetVirtualHIDPointingCallback), // Method pointer.
0, // No scalar input value.
0, // No struct input value.
0, // No scalar output value.
0 // No struct output value.
},

// ----------------------------------------
// IOHIDSystem

{
// post_keyboard_event
reinterpret_cast<IOExternalMethodAction>(&staticPostKeyboardEventCallback), // Method pointer.
Expand Down Expand Up @@ -264,7 +291,7 @@ IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::terminateVirtualHIDPointingCallback(
return kIOReturnSuccess;
}

#pragma mark - keyboard_input_report
#pragma mark - post_keyboard_input_report

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticPostKeyboardInputReportCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
Expand All @@ -284,19 +311,19 @@ IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticPostKeyboardInputReportCallbac
}

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::postKeyboardInputReportCallback(const pqrs::karabiner_virtualhiddevice::hid_report::keyboard_input& input) {
if (auto report = IOBufferMemoryDescriptor::withBytes(&input, sizeof(input), kIODirectionNone)) {
IOReturn result = kIOReturnError;
if (virtualHIDKeyboard_) {
IOReturn result = kIOReturnError;

if (virtualHIDKeyboard_) {
if (auto report = IOBufferMemoryDescriptor::withBytes(&input, sizeof(input), kIODirectionNone)) {
result = virtualHIDKeyboard_->handleReport(report, kIOHIDReportTypeInput, kIOHIDOptionsTypeNone);
report->release();
}
report->release();
return result;
}

return kIOReturnError;
return result;
}

#pragma mark - pointing_input_report
#pragma mark - post_pointing_input_report

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticPostPointingInputReportCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
Expand All @@ -316,16 +343,58 @@ IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticPostPointingInputReportCallbac
}

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::postPointingInputReportCallback(const pqrs::karabiner_virtualhiddevice::hid_report::pointing_input& input) {
if (auto report = IOBufferMemoryDescriptor::withBytes(&input, sizeof(input), kIODirectionNone)) {
IOReturn result = kIOReturnError;
if (virtualHIDPointing_) {
IOReturn result = kIOReturnError;

if (virtualHIDPointing_) {
if (auto report = IOBufferMemoryDescriptor::withBytes(&input, sizeof(input), kIODirectionNone)) {
result = virtualHIDPointing_->handleReport(report, kIOHIDReportTypeInput, kIOHIDOptionsTypeNone);
report->release();
}
report->release();
return result;
}

return kIOReturnError;
return result;
}

#pragma mark - reset_virtual_hid_keyboard

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticResetVirtualHIDKeyboardCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
IOExternalMethodArguments* arguments) {
if (!target) {
return kIOReturnBadArgument;
}

return target->resetVirtualHIDKeyboardCallback();
}

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::resetVirtualHIDKeyboardCallback(void) {
if (!virtualHIDKeyboard_) {
return kIOReturnSuccess;
}

pqrs::karabiner_virtualhiddevice::hid_report::keyboard_input report;
return postKeyboardInputReportCallback(report);
}

#pragma mark - reset_virtual_hid_pointing

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::staticResetVirtualHIDPointingCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
IOExternalMethodArguments* arguments) {
if (!target) {
return kIOReturnBadArgument;
}

return target->resetVirtualHIDPointingCallback();
}

IOReturn VIRTUAL_HID_ROOT_USERCLIENT_CLASS::resetVirtualHIDPointingCallback(void) {
if (!virtualHIDPointing_) {
return kIOReturnSuccess;
}

pqrs::karabiner_virtualhiddevice::hid_report::pointing_input report;
return postPointingInputReportCallback(report);
}

#pragma mark - post_keyboard_event
Expand Down
Expand Up @@ -43,6 +43,11 @@ class VIRTUAL_HID_ROOT_USERCLIENT_CLASS final : public IOUserClient {
IOExternalMethodArguments* arguments);
IOReturn postKeyboardInputReportCallback(const pqrs::karabiner_virtualhiddevice::hid_report::keyboard_input& input);

static IOReturn staticResetVirtualHIDKeyboardCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
IOExternalMethodArguments* arguments);
IOReturn resetVirtualHIDKeyboardCallback(void);

// ----------------------------------------
// VirtualHIDPointing
static IOReturn staticInitializeVirtualHIDPointingCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
Expand All @@ -60,6 +65,11 @@ class VIRTUAL_HID_ROOT_USERCLIENT_CLASS final : public IOUserClient {
IOExternalMethodArguments* arguments);
IOReturn postPointingInputReportCallback(const pqrs::karabiner_virtualhiddevice::hid_report::pointing_input& input);

static IOReturn staticResetVirtualHIDPointingCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
void* reference,
IOExternalMethodArguments* arguments);
IOReturn resetVirtualHIDPointingCallback(void);

// ----------------------------------------
// IOHIDSystem
static IOReturn staticPostKeyboardEventCallback(VIRTUAL_HID_ROOT_USERCLIENT_CLASS* target,
Expand Down
Expand Up @@ -106,11 +106,13 @@ public:
initialize_virtual_hid_keyboard,
terminate_virtual_hid_keyboard,
post_keyboard_input_report,
reset_virtual_hid_keyboard,

// VirtualHIDPointing
initialize_virtual_hid_pointing,
terminate_virtual_hid_pointing,
post_pointing_input_report,
reset_virtual_hid_pointing,

// IOHIDSystem (since macOS 10.12)
post_keyboard_event,
Expand Down
2 changes: 1 addition & 1 deletion src/vendor/Karabiner-VirtualHIDDevice/version
@@ -1 +1 @@
2.4.0
2.5.0
2 changes: 1 addition & 1 deletion src/vendor/README.md
@@ -1,7 +1,7 @@
# Files

* Karabiner-VirtualHIDDevice:
* version: v2.4.0
* version: v2.5.0
* url: https://github.com/tekezo/Karabiner-VirtualHIDDevice
* spdlog:
* version: v0.11.0
Expand Down

0 comments on commit b01d0a9

Please sign in to comment.