package Ġio . frame d . framework . view Ċ Ċ import Ġio . frame d . framework . util . Point Ċ import Ġio . frame d . framework . util . point Ċ import Ġorg . w 3 c . dom . HTMLElement Ċ import Ġkotlin . browser . document Ċ Ċ /** Ċ Ġ* Ġ@ author Ġl ars Ċ Ġ*/ Ċ object ĠRoot Ġ: ĠView Collection < View <* >, ĠHTMLElement >( document . body !! ) Ġ{ ĊĊĠĠĠ Ġvar Ġmouse Position : ĠPoint Ġ= ĠPoint . ZERO ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠonMouse Move Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmouse Position Ġ= Ġit . point () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon KeyDown Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( event . target Ġas ? ĠHTMLElement )?. tagName Ġ== Ġ" INPUT ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ on KeyDown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Ġ= Ġshortcut Map . filter Keys Ġ{ Ġit . match ( event ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . stopPropagation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . preventDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound . values . forEach Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġshortcut Map : ĠMap < Shortcut , Ġ() Ġ-> ĠUnit > Ġ= Ġempty Map () ĊĊĠĠĠ Ġval Ġshortcuts : ĠSet < Shortcut > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġshortcut Map . keys ĊĊĠĠĠ Ġfun Ġshortcut ( shortcut : ĠShort cut , Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( shortcut Ġ! in Ġshortcut Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Map Ġ+= Ġshortcut Ġto Ġaction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ