4

OSX で問題が発生しているクロスプラットフォームの Qt アプリケーションがあります。OSX には、存在すら知らなかった機能があります。「ヘルプ」キーです。私の MBP にはそれがなく、1 年前に購入した Apple 有線キーボードもありません。これは主に古い Mac に備わっているもののようです。PC キーボードの Insert キーと同じスキャン コードを生成するようです。

いずれにせよ、ヘルプ キーが押されると、アプリケーション (またはヘルプ キー イベントを受け取る任意のアプリケーション) 上のカーソルが小さなクエスチョン マークに変わります。これは、 NSHelpManager の setContextHelpModeActive: メソッドおよびNSApplication の activateContextHelpMode: メソッドドキュメントに記載されているように、「状況依存ヘルプ モード」と呼ばれるものの一部のようです。ドキュメントから:

このモードでは、カーソルがクエスチョン マークになり、ユーザーがクリックしたユーザー インターフェイス項目のヘルプが表示されます。

ほとんどのアプリケーションは、この方法を使用しません。代わりに、ユーザーが [ヘルプ] キーを押すと、アプリケーションは状況依存モードに入ります。アプリケーションは、ヘルプ ウィンドウが表示された後、最初のイベントで状況依存ヘルプ モードを終了します。

これについて実際に知っている Cocoa 開発者はどれくらいいるでしょうか? このクエスチョン マーク カーソルでアプリケーション内の何かをクリックすると、ヘルプ メッセージが表示されるようになるはずですが、実際に何もしない Cocoa アプリケーションは 1 つも見つかりませんでした。Apple のアプリでさえ何もしません。 . 実際、多くのアプリケーションが、カーソル テキスト選択が有効になっている奇妙なモードになっているようです。

問題は、この help-question-cursor-mode のときに Qt でプログラムによってアプリケーション カーソルを変更すると、悪いことが起こることです。具体的には、アプリケーションが実際にクラッシュします。クラッシュは、NSApplication の NSHelpManager の Cocoa の奥深くで発生します。このクラッシュが発生した理由を知りたいのですが、実際には、この「ヘルプ」モードをどのように抑制できるかの方に関心があります。Qt や Cocoa には、まだ試していないイベントをインターセプトして押しつぶす以外に、それを止めるものは何もありません。

誰かこれについてもっと知っていますか?

4

0 に答える 0