1

私は、押されたときに Mac が特定の文字 (または修飾子) をキー入力するボタンを持つアプリを作成する方法を理解しようとしています。ボタンを希望どおりにレイアウトしたので、プロジェクトは完成まであと 2 ステップです。

  1. mac にメッセージを送信して、どのキーを押すかを知らせます。
  2. Mac に実際のキーを押してもらう 1 の場合、ipad で押されたキーに関連付けられた文字列を Mac に送信する bonjour サービスをセットアップすることを考えています。Mac はこれを受け取ります。私のキーボードのキーのいくつかは、シフト (@ など) を必要とする文字なので、コードは S120 のようなものになると考えています。メッセージを受信したものは何でも文字列を読み取り、120 に関連付けられたキーを押してシフトを刺激する必要があることを確認します。2 については、あまりわかりません。これはキーボードであるため、高速である必要があることに注意してください。文字列を受信して​​デコードし、正しいキーをシミュレートするiokitプロジェクトを作成することを考えています。これはやり過ぎかもしれませんが、カーネルを扱うときは本当に注意が必要だと聞きました。私の考えが間違っている場合は、より良い方法を提案し、詳細を記入してください。
4

2 に答える 2

0

キープレスのシミュレートに関しては、Applescript を使用してこれを行う簡単な方法があります。

tell application "System Events"
    keystroke "A"
end tell

(アクセシビリティ prefpane で「補助デバイスのアクセスを有効にする」必要がある場合があります)。

または、コマンド ラインで同じスクリプトを実行することもできます。

osascript -e 'tell app "System Events" to keystroke "a"' 

編集:速度が心配な場合は、スクリプト ブリッジが役に立ちます。

#import <Foundation/Foundation.h>
#import <ScriptingBridge/ScriptingBridge.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {  
        id sysEvents = [SBApplication applicationWithBundleIdentifier: @"com.apple.systemevents"];

        [sysEvents keystroke: @"h" using: 'Ksft'];
        [sysEvents keystroke: @"e" using: 0];
        [sysEvents keystroke: @"l" using: 0];
        [sysEvents keystroke: @"l" using: 0];
        [sysEvents keystroke: @"o" using: 0];

        // keyCode might be more suitable for your purposes

        for (int i = 32; i < 64; i++) 
        {
            [sysEvents keyCode: i using: 0];    
        }
    }
}

このアプリを使用してキーコードを見つけることができます。

http://manytricks.com/keycodes/

于 2013-02-23T15:18:49.590 に答える
0

おそらく、Quartz イベント サービスでCGEventCreateKeyboardEvent()関数または類似の機能が必要になるでしょう。

于 2013-02-25T17:05:14.810 に答える