Skip to content

Commit 7c43f64

Browse files
committed
Add support for Madlions MAD68HE
1 parent cfd0d20 commit 7c43f64

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

AnalogSense.js

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -706,17 +706,34 @@ class AsProviderMadlions extends AsProvider
706706
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x1055 });
707707
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x1056 });
708708
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x105D });
709+
// MAD68HE
710+
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x1059 });
711+
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x105A });
712+
filters.push({ vendorId: 0x373b, usagePage: 0xFF60, usage: 0x61, productId: 0x105C });
709713
}
710714

711715
startListening(handler)
712716
{
713-
const layout = [
714-
/* 0 */ KEY_ESCAPE, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUALS, KEY_BACKSPACE,
715-
/* 14 */ KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_BRACKET_LEFT, KEY_BRACKET_RIGHT, KEY_BACKSLASH,
716-
/* 28 */ KEY_CAPS_LOCK, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_QUOTE, KEY_NONE, KEY_ENTER,
717-
/* 42 */ KEY_LSHIFT, KEY_NONE, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, KEY_SLASH, KEY_NONE, KEY_RSHIFT,
718-
/* 56 */ KEY_LCTRL, KEY_LMETA, KEY_LALT, KEY_NONE, KEY_NONE, KEY_NONE, KEY_SPACE, KEY_NONE, KEY_NONE, KEY_RMETA, KEY_RALT, KEY_CTX, KEY_RCTRL, KEY_FN,
719-
];
717+
if (this.dev.productId == 0x1055 || this.dev.productId == 0x1056 || this.dev.productId == 0x105D)
718+
{
719+
this.layout = [
720+
KEY_ESCAPE, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUALS, KEY_BACKSPACE,
721+
KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_BRACKET_LEFT, KEY_BRACKET_RIGHT, KEY_BACKSLASH,
722+
KEY_CAPS_LOCK, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_QUOTE, KEY_NONE, KEY_ENTER,
723+
KEY_LSHIFT, KEY_NONE, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, KEY_SLASH, KEY_NONE, KEY_RSHIFT,
724+
KEY_LCTRL, KEY_LMETA, KEY_LALT, KEY_NONE, KEY_NONE, KEY_NONE, KEY_SPACE, KEY_NONE, KEY_NONE, KEY_RMETA, KEY_RALT, KEY_CTX, KEY_RCTRL, KEY_FN,
725+
];
726+
}
727+
else
728+
{
729+
this.layout = [
730+
KEY_ESCAPE, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUALS, KEY_BACKSPACE, KEY_INSERT,
731+
KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_BRACKET_LEFT, KEY_BRACKET_RIGHT, KEY_BACKSLASH, KEY_DEL,
732+
KEY_CAPS_LOCK, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_QUOTE, KEY_NONE, KEY_ENTER, KEY_PAGE_UP,
733+
KEY_LSHIFT, KEY_NONE, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, KEY_SLASH, KEY_RSHIFT, KEY_ARROW_UP, KEY_PAGE_DOWN,
734+
KEY_LCTRL, KEY_LMETA, KEY_LALT, KEY_NONE, KEY_NONE, KEY_NONE, KEY_SPACE, KEY_NONE, KEY_NONE, KEY_RALT, KEY_FN, KEY_RCTRL, KEY_ARROW_LEFT, KEY_ARROW_DOWN, KEY_ARROW_RIGHT,
735+
];
736+
}
720737

721738
this.offset = 0;
722739
this.buffer = {};
@@ -735,9 +752,9 @@ class AsProviderMadlions extends AsProvider
735752
{
736753
for (let i = 0; i != 4; ++i)
737754
{
738-
if (_this.offset + i < layout.length)
755+
if (_this.offset + i < this.layout.length)
739756
{
740-
const key = layout[_this.offset + i];
757+
const key = this.layout[_this.offset + i];
741758
const travel = event.data.getUint16(7 + (i * 5) + 3);
742759
if (travel == 0)
743760
{
@@ -752,7 +769,7 @@ class AsProviderMadlions extends AsProvider
752769
handler(_this._bufferToActiveKeys());
753770

754771
_this.offset += 4;
755-
if (_this.offset >= layout.length)
772+
if (_this.offset >= this.layout.length)
756773
{
757774
_this.offset = 0;
758775
}

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ JavaScript API for analog keyboard input.
1717
- Keychron Q5 HE<sup>P, F</sup>
1818
- Keychron K2 HE<sup>P, F</sup>
1919
- Madlions MAD60HE<sup>P</sup>
20+
- Madlions MAD68HE<sup>P</sup>
2021

2122
<sup>R</sup> Razer Synapse needs to be installed and running for analogue inputs to be received from this keyboard.
2223

0 commit comments

Comments
 (0)