Skip to content

Instantly share code, notes, and snippets.

@derekmc
Created February 5, 2025 17:01
Show Gist options
  • Save derekmc/cf8e305ee811f8c12fc5c824e3be5f8a to your computer and use it in GitHub Desktop.
Save derekmc/cf8e305ee811f8c12fc5c824e3be5f8a to your computer and use it in GitHub Desktop.
<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