diff --git a/AnalogSense.js b/AnalogSense.js index f236400..ec21530 100644 --- a/AnalogSense.js +++ b/AnalogSense.js @@ -106,6 +106,7 @@ const keys = [ { "name": "Numpad 0", "wooting": 0x62, "razer": 0x63 }, { "name": "Numpad .", "wooting": 0x63, "razer": 0x68 } ]; + const wooting_to_name = {}; Object.values(keys).forEach(key => wooting_to_name[key.wooting] = key.name); const razer_to_wooting = {}; Object.values(keys).forEach(key => razer_to_wooting[key.razer] = key.wooting); const nuphy_to_wooting = {}; Object.values(keys).forEach(key => nuphy_to_wooting[key.nuphy ?? key.wooting] = key.wooting); @@ -258,6 +259,13 @@ const KEY_OEM_2 = 0x404; const KEY_OEM_3 = 0x405; const KEY_FN = 0x409; +const tartarusProDefaultMap = [ + KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, + KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, + KEY_CAPS_LOCK, KEY_A, KEY_S, KEY_D, KEY_F, + KEY_LSHIFT, KEY_Z, KEY_X, KEY_C, KEY_SPACE + ]; + const layout_keychron_q1_he = [ 6, 15, KEY_ESCAPE, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_DEL, KEY_NONE /* mute */, KEY_BACKQUOTE, 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_PAGE_UP, @@ -453,6 +461,41 @@ class AsProviderRazerHuntsmanV3 extends AsProvider } } +class AsProviderRazerTartarusPro extends AsProvider +{ + static populateFilters(filters) + { + filters.push({ vendorId: 0x1532, productId: 0x0244, reportId: 6}); + } + + startListening(handler) + { + this.dev.oninputreport = function(event) + { + if (event.reportId == 6) + { + const active_keys = []; + for (let i = 0; i < event.data.byteLength-3; i++ ) + { + const value = event.data.getUint8(i); + if (value>0){ + active_keys.push({ + scancode: tartarusProDefaultMap[i], + value: value / 255 + }); + } + } + handler(active_keys); + } + }; + } + + stopListening() + { + this.dev.oninputreport = undefined; + } +} + class AsProviderNuphy extends AsProvider { static populateFilters(filters) @@ -807,6 +850,7 @@ window.analogsense = { AsProviderWooting, AsProviderRazerHuntsman, AsProviderRazerHuntsmanV3, + AsProviderRazerTartarusPro, AsProviderNuphy, AsProviderDrunkdeer, AsProviderKeychron, diff --git a/README.md b/README.md index ee18c28..bceb7f1 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ JavaScript API for analog keyboard input. - Razer Huntsman V3 ProR - Razer Huntsman V3 Pro MiniR - Razer Huntsman V3 Pro TenkeylessR +- Razer Tartarus ProR - Keychron Q1 HEP, F - Keychron Q3 HEP, F - Keychron Q5 HEP, F @@ -68,3 +69,4 @@ OEM-specific keys are mapped in the `0x4__` range: - `0x405` = Profile 3 - `0x408` = Profile Switch - `0x409` = Function Key (Fn) +