//go:build !darwin || !appstore package textoutput func newPlatformRouter(paster Paster) *Router { return &Router{paster: paster} } func (r *Router) Output(text string, keepClipboard bool) Result { return r.OutputWithOptions(text, OutputOptions{KeepClipboard: keepClipboard}) } func (r *Router) OutputWithOptions(text string, options OutputOptions) Result { if text == "" { return r.remember(Result{OK: false, Method: "legacy_paste", Message: "text is empty"}) } if r.paster == nil { return r.remember(Result{OK: false, Text: text, Method: "legacy_paste", Message: "paster is unavailable"}) } if err := r.paster.Paste(text, options.KeepClipboard); err != nil { if typeErr := r.paster.TypeText(text); typeErr != nil { return r.remember(Result{ OK: false, Text: text, Method: "legacy_type_fallback", Message: "paste failed: " + err.Error() + "; type fallback failed: " + typeErr.Error(), }) } return r.remember(Result{ OK: true, Text: text, Method: "legacy_type_fallback", Message: "typed through legacy fallback after paste failed: " + err.Error(), }) } return r.remember(Result{ OK: true, Text: text, Method: "legacy_clipboard_paste", Message: "pasted through existing output path", }) }