I found these commands to simulate cut/copy/paste using Foundation:
func pastematchstyle () { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: true); // opt-shft-cmd-v down event1?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskShift, CGEventFlags.maskAlternate] event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: false); // opt-shf-cmd-v up // event2?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskShift, CGEventFlags.maskAlternate] event2?.post(tap: CGEventTapLocation.cghidEventTap); } func paste () { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: true); // cmd-v down event1?.flags = CGEventFlags.maskCommand; event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: false) // cmd-v up // event2?.flags = CGEventFlags.maskCommand event2?.post(tap: CGEventTapLocation.cghidEventTap) } func pasteresults () { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: true); // shft-cmd-v down event1?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskShift] event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x09, keyDown: false); // shf-cmd-v up // event2?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskShift]; event2?.post(tap: CGEventTapLocation.cghidEventTap); } func cut() { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x07, keyDown: true); // cmd-x down event1?.flags = CGEventFlags.maskCommand; event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x07, keyDown: false); // cmd-x up // event2?.flags = CGEventFlags.maskCommand; event2?.post(tap: CGEventTapLocation.cghidEventTap); } func copy() { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x08, keyDown: true); // cmd-c down event1?.flags = CGEventFlags.maskCommand; event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x08, keyDown: false); // cmd-c up // event2?.flags = CGEventFlags.maskCommand; event2?.post(tap: CGEventTapLocation.cghidEventTap); } func copystyle() { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x08, keyDown: true); // opt-cmd-c down event1?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskAlternate]; event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x08, keyDown: false); // opt-cmd-c up // event2?.flags = CGEventFlags.maskCommand; event2?.post(tap: CGEventTapLocation.cghidEventTap); } func pastestyle() { let event1 = CGEvent(keyboardEventSource: nil, virtualKey: 0x07, keyDown: true); // opt-cmd-v down event1?.flags = [CGEventFlags.maskCommand, CGEventFlags.maskAlternate]; event1?.post(tap: CGEventTapLocation.cghidEventTap); let event2 = CGEvent(keyboardEventSource: nil, virtualKey: 0x07, keyDown: false); // opt-cmd-v up // event2?.flags = CGEventFlags.maskCommand; event2?.post(tap: CGEventTapLocation.cghidEventTap); }