-3

マイクのアイコンをアプリに追加して、ディクテーションを開始したいと考えています。Swiftでプログラムでディクテーションを開始する方法はありますか?? 編集メニューを解析して適切なメニュー項目を取得する以外は?

私はこの回避策を作成しましたが、動作しますが...:

@IBAction func startDictation(sender: AnyObject) {
    if wordInputField.acceptsFirstResponder {
        self.makeFirstResponder(wordInputField)
    }

    if let menuItem = dictationMenuItem("startDictation:") {
        NSTimer.scheduledTimerWithTimeInterval(0, target: menuItem.target!, selector: menuItem.action, userInfo: nil, repeats: false)
    }
}

func dictationMenuItem(selectorName : String) -> NSMenuItem? {
    var edit = NSApplication.sharedApplication().mainMenu?.itemWithTitle("Edit")
    if let count = edit?.submenu?.numberOfItems {
        let lastItem = edit?.submenu?.itemAtIndex(count - 2)
        if lastItem?.action == NSSelectorFromString(selectorName) {
            return edit?.submenu?.itemAtIndex(count - 2)
        }
    }
    return nil
}
4

1 に答える 1

2

更新しました

SpeechRecognitionServer を起動する必要があると思います...

osascript -e 'tell application "SpeechRecognitionServer"
   set theResponse to listen for {"yes", "no"} with prompt "Hello. Do you like me?"
   if theResponse is "yes" then
       say "I like you, too."
   else
       say "Am I bovvered?"
   end if
end tell'

元の回答

Applescript からディクテーションを開始することも、Swift から Applescript を開始することもできます。そのため、私より賢い誰かが「適切な」方法を解決するまで、そこにたどり着くための回り道があります :-)

#!/usr/bin/env xcrun swift

import Foundation

let task = NSTask()
task.launchPath = "/usr/bin/osascript"
task.arguments = ["-e","tell app \"System Events\" to key code {63,63}"]

task.launch()

キーボードでキーを 2 回押すのと同じですfn- キーコード 63。

于 2015-04-16T08:09:20.743 に答える