You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

32 lines
1.7 KiB

function filterKeymap( contentFilename ){
// if (!file) return
// special filter, done via URL, no local file (for now at least)
if ( contentFilename.endsWith(".keymap") ) { // not very reliable
console.log('it is a .keymap file', contentFilename)
fetch( contentFilename )
.then( r => r.text() ).then( r => {
// console.log('Keymap', r)
let parsedMap = r.split("_layer").filter( l => l.includes('-----') ).map( l => l.split('\n').filter( l => (l.startsWith('//') && !l.includes('------'))).map(l => l.replace("// ",'').split('| ') ) )
// WARNING : this is NOT a normal keymap, rather this is about the comments (!) with a visual representation of a keymap
// see for example https://github.com/Utopiah/zmk-config-zen-2/blob/main/config/corneish_zen.keymap
r.split("_layer").filter( l => l.includes('-----') ).map( l => l.split('\n').filter( l => (l.startsWith('//') && !l.includes('------'))).map(l => l.replace("// ",'') ) ).map( (layer, l) => {
let el = addNewNote( layer.join('\n') )
el.id = 'keymap_layer'+l
el.classList.add( 'keymap_layer' )
el.highlightLetter = ( letter ) => { keymap_layer0.setAttribute("value", keymap_layer0.getAttribute("value").replace(' '+letter+' ','_'+letter+'_') ) }
el.unhighlightLetter = ( letter ) => { keymap_layer0.setAttribute("value", keymap_layer0.getAttribute("value").replace('_'+letter+'_',' '+letter+' ') ) }
// then available e.g. keymap_layer0.unhighlightLetter("J")
})
AFRAME.scenes[0].emit('keymaploaded', contentFilename)
// to use the event consider :
//AFRAME.scenes[0].addEventListener("keymaploaded", e => console.log(e))
})
}
applyNextFilter( contentFilename )
}
sequentialFilters.push( filterKeymap )