code: func attachMouseBindCallback(xu *xgbutil.XUtil, evtype int, win xproto.Window,
  	mods uint16, button xproto.Button, fun xgbutil.CallbackMouse) {
  
  	xu.MousebindsLck.Lock()
  	defer xu.MousebindsLck.Unlock()
  
  	// Create key
  	key := xgbutil.MouseKey{evtype, win, mods, button}
  
  	// Do we need to allocate?
  	if _, ok := xu.Mousebinds[key]; !ok {
  		xu.Mousebinds[key] = make([]xgbutil.CallbackMouse, 0)
  	}
  
  	xu.Mousebinds[key] = append(xu.Mousebinds[key], fun)
  	xu.Mousegrabs[key] += 1
  }
docs: // attachMouseBindCallback associates an (event, window, mods, button)
  // with a callback.