Skip to content

Commit

Permalink
Allow resolution of huion device names from alias. Fix KD100
Browse files Browse the repository at this point in the history
  • Loading branch information
kurikaesu committed Feb 12, 2022
1 parent b7c65dc commit dccc5fb
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
27 changes: 24 additions & 3 deletions src/huion_tablet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ std::string huion_tablet::getProductName(int productId) {
return "Huion tablet";
}

return "Unknown Huion device";
return getDeviceNameFromAliasedId(productId);
}

void huion_tablet::setConfig(nlohmann::json config) {
Expand Down Expand Up @@ -94,7 +94,7 @@ std::string huion_tablet::getDeviceNameFromFirmware(std::wstring firmwareName) {
return "Huion H1161";
} else if (firmwareName == L"HUION_T153_160524") {
return "Huion WH1409 (2048)";
} else if (firmwareName == L"HUION_T200_210309") {
} else if (firmwareName == L"HUION_T200_210309" || firmwareName == L"HUION_T200_210315") {
return "Huion KD100 mini Keydial";
} else if (firmwareName == L"HUION_M182_200605") {
return "Huion Kamvas Pro 13";
Expand All @@ -119,7 +119,7 @@ int huion_tablet::getAliasedDeviceIdFromFirmware(std::wstring firmwareName) {
return 0x0191;
} else if (firmwareName == L"HUION_T153_160524") {
return 0x0153;
} else if (firmwareName == L"HUION_T200_210309") {
} else if (firmwareName == L"HUION_T200_210309" || firmwareName == L"HUION_T200_210315") {
return 0x0200;
} else if (firmwareName == L"HUION_M182_200605") {
return 0x0182;
Expand All @@ -136,6 +136,27 @@ int huion_tablet::getAliasedDeviceIdFromFirmware(std::wstring firmwareName) {
return 0x0000;
}

std::string huion_tablet::getDeviceNameFromAliasedId(int aliasedId) {
switch (aliasedId) {
case 0x0188:
return "Huion WH1409 v2";
case 0x0191:
return "Huion H1161";
case 0x0153:
return "Huion WH1409 (2048)";
case 0x0200:
return "Huion KD100 mini Keydial";
case 0x0182:
return "Huion Kamvas Pro 13";
case 0x0311:
return "Gaomon M10K Pro";
case 0x0119:
return "Gaomon M10K 2018";
default:
return "Unknown Huion Device";
}
}

int huion_tablet::getAliasedProductId(libusb_device_handle *handle, int originalId) {
auto firmware = getDeviceFirmwareName(handle);
auto productId = getAliasedDeviceIdFromFirmware(firmware);
Expand Down
1 change: 1 addition & 0 deletions src/huion_tablet.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class huion_tablet : public transfer_handler {
std::wstring getDeviceFirmwareName(libusb_device_handle* device);
int getAliasedDeviceIdFromFirmware(std::wstring firmwareName);
int getAliasedProductId(libusb_device_handle* handle, int originalId);
std::string getDeviceNameFromAliasedId(int aliasedId);
std::string getInitKey() { return ""; }
private:
void handleDigitizerEventV1(libusb_device_handle* handle, unsigned char* data, size_t dataLen);
Expand Down

0 comments on commit dccc5fb

Please sign in to comment.