Created
February 5, 2025 17:01
-
-
Save derekmc/cf8e305ee811f8c12fc5c824e3be5f8a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<h1> BiChord Demo </h1> | |
<p id='statusx'></p> | |
<button onclick='remap()'>Remap</button> | |
<style> | |
body{ | |
font-family: sans-serif; | |
} | |
</style> | |
<script> | |
init() | |
function init(){ | |
window.addEventListener('keydown', keydown) | |
window.addEventListener('keyup', keyup) | |
status('init') | |
} | |
// contained release (always a chord) | |
// rolled release (release delay must be less than threshhold) | |
let keymap = {} | |
let keyindex = 1 | |
let pressed = {} | |
let lastDown = -1 | |
let lastRelease = -1 | |
let lastCode = -1 | |
let lastOverlap = -1 | |
let MaxDelay = 50 // | |
let MinOverlap = 100 // always triggers key | |
function keydown(e){ | |
let now = Date.now() | |
let code = e.keyCode | |
pressed[code] = now | |
if(keyindex < 11){ | |
keymap[code] = keyindex++ | |
} | |
lastDown = now | |
} | |
function keyup(e){ | |
let now = Date.now() | |
let code = e.keyCode | |
pressed[code] = -1 | |
lastCode = code | |
lastRelease = now | |
} | |
function id(x){ | |
return document.getElementById(x) | |
} | |
function status(text){ | |
let t = document.createTextNode(text) | |
let div = id('statusx') | |
div.innerHTML = '' | |
div.appendChild(t) | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment