Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - chn-maich/hid4java: A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux. · GitHub
Skip to content

Repository files navigation

Project status

Maven CentralJavadoc

🌟 Summary

The hid4java project supports USB HID devices through a common API which is provided here under the MIT license. The API is very simple but provides great flexibility such as support for feature reports and blocking reads with timeouts. Attach/detach events are provided to allow applications to respond instantly to device availability.

Telegram group

If you want to discuss hid4java in general please use the Telegram chat. I can't guarantee an instant response but I'm usually active on Telegram during office hours in the GMT timezone.

👀 Remember to check the Wiki first before asking questions to avoid causing frustration!

Technologies

  • hidapi - Native USB HID library for multiple platforms
  • JNA - Removes the need for Java Native Interface (JNI) and greatly simplify the project
  • dockcross - Cross-compilation environments for multiple platforms to create hidapi libraries
  • Maven - Build environment for Java projects if you need to customise the library
  • Java 8+ - to remove dependencies on JVMs that have reached end of life

Maven dependency

<dependencies>
<!-- hid4java for cross-platform HID USB -->
<dependency>
<groupId>org.hid4java</groupId>
<artifactId>hid4java</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>

If you are developing and want the latest code, you'll need to reference release candidate artifacts deployed to the Maven Central snapshot repository. These are updated more frequently as part of wider user acceptance testing, but they are not considered stable enough for production use.

Add the following repositories section to your project's pom.xml if you're using Maven for your build process.

<!-- Enable Maven Central snapshots repository -->
<repositories>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

Gradle dependency

repositories {
mavenCentral()
}
dependencies {
implementation('org.hid4java:hid4java')
}

🚀 Code example

Taken from UsbHidEnumerationExample which provides more details.

// Configure to use custom specificationHidServicesSpecificationhidServicesSpecification = newHidServicesSpecification();
// Use the v0.7.0 manual start feature to get immediate attach eventshidServicesSpecification.setAutoStart(false);
// Get HID services using custom specificationHidServiceshidServices = HidManager.getHidServices(hidServicesSpecification);
hidServices.addHidServicesListener(this);
// Manually start the services to get attachment eventhidServices.start();
// Provide a list of attached devicesfor (HidDevicehidDevice : hidServices.getAttachedHidDevices()) {
System.out.println(hidDevice);
}

⚙ Local build

If you're unfamiliar with Maven and git the wiki provides an easy guide to creating a development environment.

The project uses the standard Maven build process and can be used without having external hardware attached. Just do the usual

cd<workspace>
git clone https://github.com/gary-rowe/hid4java.git
cd hid4java
# Maven build
mvn clean install

and you're good to go.

Maven will place the built JAR into the target directory. The Maven install process will also place copies of the built JARs into ~/.m2/repository/org/hid4java/hid4java/<version>/ so that other local projects can find and share them.

🤔 More information

Much of the information previously in this README has been migrated to the project Wiki as it was getting rather long. Here are some useful jumping off points that should help:

  • Home - The wiki Home page with lots of useful launch points
  • FAQ - Frequently asked questions
  • Examples - Using the examples to kickstart your own project
  • Troubleshooting - A comprehensive troubleshooting guide

📕 Closing notes

All trademarks and copyrights are acknowledged.

Many thanks to victorix who provided the basis for this library. Please see the inspiration on the mbed site.

Thanks also go to everyone who has contributed their knowledge and advice during the creation and subsequent improvement of this library.

About

A cross-platform Java Native Access (JNA) wrapper for the libusb/hidapi library. Works out of the box on Windows/Mac/Linux.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages