diff --git a/README.md b/README.md
index b07881b..9d2846a 100644
--- a/README.md
+++ b/README.md
@@ -98,6 +98,10 @@ Creates a simple function to listen to barcode scanners
Refer [Key Values | MDN](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)
_default: `/^\w$/`_
+
+ - `devicePrefix` **string** Barcode prefix string for device event filtering
+
+ _default: `null`_
Returns **Scanner**
diff --git a/demo/index.html b/demo/index.html
new file mode 100644
index 0000000..e76e502
--- /dev/null
+++ b/demo/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/index.js b/demo/index.js
new file mode 100644
index 0000000..4b86687
--- /dev/null
+++ b/demo/index.js
@@ -0,0 +1,7 @@
+const scanner = simpleBarcodeScanner({
+ devicePrefix: 'QW'
+});
+
+scanner.on((data, e) => {
+ console.log(data)
+})
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index a60e38b..e2b55ee 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -27,6 +27,11 @@ export declare namespace BarcodeScanner {
* Refer {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values Key Values | MDN}
*/
validKey?: RegExp;
+ /**
+ * Barcode prefix string for device event filtering
+ * @default null
+ */
+ devicePrefix?: string | null;
}
interface HandlerFunction {
@@ -65,7 +70,8 @@ export default function BarcodeScanner(
minLength: 3,
element: document,
endKeys: ["Enter"],
- validKey: /^\w$/
+ validKey: /^\w$/,
+ devicePrefix: null
},
options
);
@@ -93,8 +99,11 @@ export default function BarcodeScanner(
} else {
if (isEndKey) {
// End of barcode
- if (code.length >= options.minLength) {
+ if (code.length >= options.minLength && !options.devicePrefix) {
fun(code, e);
+ } else if (code.length >= options.minLength && options.devicePrefix) {
+ // Check for device prefix
+ if (code.includes(options.devicePrefix)) fun(code.slice(options.devicePrefix.length), e)
}
}
// Invalid character, reset