(function(){
  'use strict'
  
  const u = this.u = Object.create(null)
  
  const keymap = ["","","","CANCEL","","","HELP","","BACK_SPACE","TAB","","","CLEAR","ENTER","RETURN","","SHIFT","CONTROL","ALT","PAUSE","CAPS_LOCK","KANA","EISU","JUNJA","FINAL","HANJA","","ESCAPE","CONVERT","NONCONVERT","ACCEPT","MODECHANGE","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","SELECT","PRINT","EXECUTE","PRINTSCREEN","INSERT","DELETE","","0","1","2","3","4","5","6","7","8","9","COLON","SEMICOLON","LESS_THAN","EQUALS","GREATER_THAN","QUESTION_MARK","AT","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","WIN","","CONTEXT_MENU","","SLEEP","NUMPAD0","NUMPAD1","NUMPAD2","NUMPAD3","NUMPAD4","NUMPAD5","NUMPAD6","NUMPAD7","NUMPAD8","NUMPAD9","MULTIPLY","ADD","SEPARATOR","SUBTRACT","DECIMAL","DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","","","","","","","","","NUM_LOCK","SCROLL_LOCK","WIN_OEM_FJ_JISHO","WIN_OEM_FJ_MASSHOU","WIN_OEM_FJ_TOUROKU","WIN_OEM_FJ_LOYA","WIN_OEM_FJ_ROYA","","","","","","","","","","CIRCUMFLEX","EXCLAMATION","DOUBLE_QUOTE","HASH","DOLLAR","PERCENT","AMPERSAND","UNDERSCORE","OPEN_PAREN","CLOSE_PAREN","ASTERISK","PLUS","PIPE","HYPHEN_MINUS","OPEN_CURLY_BRACKET","CLOSE_CURLY_BRACKET","TILDE","","","","","VOLUME_MUTE","VOLUME_DOWN","VOLUME_UP","","","SEMICOLON","EQUALS","COMMA","MINUS","PERIOD","SLASH","BACK_QUOTE","","","","","","","","","","","","","","","","","","","","","","","","","","","OPEN_BRACKET","BACK_SLASH","CLOSE_BRACKET","QUOTE","","META","ALTGR","","WIN_ICO_HELP","WIN_ICO_00","","WIN_ICO_CLEAR","","","WIN_OEM_RESET","WIN_OEM_JUMP","WIN_OEM_PA1","WIN_OEM_PA2","WIN_OEM_PA3","WIN_OEM_WSCTRL","WIN_OEM_CUSEL","WIN_OEM_ATTN","WIN_OEM_FINISH","WIN_OEM_COPY","WIN_OEM_AUTO","WIN_OEM_ENLW","WIN_OEM_BACKTAB","ATTN","CRSEL","EXSEL","EREOF","PLAY","ZOOM","","PA1","WIN_OEM_CLEAR",""]
  
  const lower = (str) => (str||'').toLowerCase()
  
  u.key = function key(event) {
    return lower(
      event.key || event.keyIdentifier || keymap[event.keyCode]
    )
  }
  
  u.uid = function uuid() {
    function s(n) { return h((Math.random() * (1<<(n<<2)))^Date.now()).slice(-n); }
    function h(n) { return (n|0).toString(16); }
    return  [
        s(4) + s(4), s(4),
        '4' + s(3),                    // UUID version 4
        h(8|(Math.random()*4)) + s(3), // {8|9|A|B}xxx
        // s(4) + s(4) + s(4),
        Date.now().toString(16).slice(-10) + s(2) // Use timestamp to avoid collisions
    ].join('-');
}
}.call(this))

@@ -2064,16 +2064,47 @@
 key(
-event) %7B
+%7B key, keyIdentifier, keyCode %7D) %7B%0A    
 %0A   
@@ -2121,34 +2121,16 @@
 wer(
-%0A      event.
+ 
 key %7C%7C 
-event.
 keyI
@@ -2153,22 +2153,16 @@
 map%5B
-event.
 keyCode%5D
 %0A   
@@ -2157,20 +2157,16 @@
 keyCode%5D
-%0A   
  )%0A  %7D%0A 
@@ -2173,455 +2173,346 @@
  %0A  
-u.uid = function uuid() %7B%0A    function s(n) %7B return h((Math.random() * (1%3C%3C(n%3C%3C2)))%5EDate.now())
+const $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ_-~@!+'
 .s
+p
 li
-ce(-n); %7D%0A    function h(n) %7B return (n%7C0).toString(16); %7D%0A    return  %5B%0A        s(4) + s(4), s(4),%0A        '4' + s(3),         
+t('')%0A  %0A  u.uid = function generateID() %7B%0A    %0A    const $length = 10%0A    let $res = ''%0A    %0A    const entropy = $chars.length%0A
     
+%0A
     
-   // UUID version 4%0A        h(8%7C(Math.random()*4)) + s(3), // %7B8%7C9%7CA%7CB%7Dxxx
+while ( $res.length %3C $length) %7B%0A      $res += $chars%5BMath.floor( Math.random() * entropy )%5D
 %0A    
+%7D%0A
     
-// s(4) + s(4) + s(4),%0A        Date.now().toString(16).slice(-10) + s(2) // Use timestamp to avoid collisions%0A    %5D.join('-');%0A
+%0A    return $res%0A  
 %7D%0A%7D.

change u.uid to generate random strings instead of uuids