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
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 )
|
|
|