'2d');
    ctx.drawImage(img, 0, 0);
    accept(ctx);
  };
  img.onerror = err => {
    reject(err);
  };
})
  .then(ctx => {
    keyboardHighlightCanvasCtx = ctx;
  })
  .catch(err => {
    console.warn(err.stack);
  });

const iconMeshes = [];

const _requestSpriteMesh = url => new Promise((accept, reject) => {
  const img = new Image();
  img.crossOrigin = 'Anonymous';
  img.src = url;
  img.onload = () => {
    const spriteMesh = sprite3d.makeSpriteMesh(img);
    accept(spriteMesh);
  };
  img.onerror =