kVK_ANSI_1
などのキーコードをsetKeyEquivalent
に渡すことができる文字列に変換するにはどうすればよいですか(kVK_ANSI_1
の場合、@"1"
を取得します)。とにかくキーを指定する2つの方法は何故ですか?ただ一つの表現を持つほうが意味があります。キーコードをキーと同等の文字列に変換する
5
A
答えて
5
後、私は次の関数を使用して終了さはhereを見つけました。
/* Returns string representation of key, if it is printable.
* Ownership follows the Create Rule; that is, it is the caller's
* responsibility to release the returned object. */
CFStringRef createStringForKey(CGKeyCode keyCode)
{
TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
CFDataRef layoutData =
TISGetInputSourceProperty(currentKeyboard,
kTISPropertyUnicodeKeyLayoutData);
const UCKeyboardLayout *keyboardLayout =
(const UCKeyboardLayout *)CFDataGetBytePtr(layoutData);
UInt32 keysDown = 0;
UniChar chars[4];
UniCharCount realLength;
UCKeyTranslate(keyboardLayout,
keyCode,
kUCKeyActionDisplay,
0,
LMGetKbdType(),
kUCKeyTranslateNoDeadKeysBit,
&keysDown,
sizeof(chars)/sizeof(chars[0]),
&realLength,
chars);
CFRelease(currentKeyboard);
return CFStringCreateWithCharacters(kCFAllocatorDefault, chars, 1);
}
+0
素晴らしいと便利です(これは遅くても)。ありがとう – Terminality
2
関連する問題
- 1. SWT:キーコードを文字列に変換する
- 2. 文字列をキーに変換する
- 3. ローマ数字を含む文字列は、同等の整数に変換し
- 4. 特殊文字を汎用同等物に変換する(PHP)
- 5. JSON文字列をクロスプラットフォームに変換するときの同じJSON文字列
- 6. 文字列を等価のEnum値に変換する
- 7. Cの文字列と文字列ポインタを比較すると同等です
- 8. Uriを文字列と文字列に変換する
- 9. ハッシュテーブルのキーを文字列のリストに変換します
- 10. 文字列をJavaの文字列配列に変換する
- 11. 文字列と等しいJavaScript暗黙変換
- 12. ヘブライ文字を等価な数字に変換する
- 13. 標準のC++文字列を文字列に変換する^
- 14. Pythonの文字列リストを文字列に変換する
- 15. Linqクエリ式をメソッド構文に変換する同等の
- 16. 文字列[]を文字列に変換するには?
- 17. (文字、文字列、文字と数字)に変換するHEX値に
- 18. 文字列に文字配列を変換する
- 19. ユニコード文字列をバイト文字列に変換する
- 20. C++文字列[4]を文字列に変換する
- 21. 狭い文字列をワイド文字列に変換する
- 22. 文字列を文字配列に変換する
- 23. 文字列を文字列に変換する
- 24. JavaScript文字列をハッシュ文字列に変換する
- 25. 変換キー/値の文字列連想配列
- 26. 暗号化キーとIVを文字列として保存/変換する
- 27. 文字列を1文字ずつの文字列に変換する方法
- 28. 文字列をCLLocationCoordinate2Dに変換する
- 29. 文字列をdatetimeに変換する
- 30. SVGSVGElementを文字列に変換する
'kVK_ANSI_1'は、キーボード上の位置を表すので、「1」(文字が入力を表すのに対し、キーを指定するには2つの方法が、(「1」キーはANSI標準のUSキーボードの上に置かれている場所)がありますあなたのキーボードレイアウトに応じて 'kVK_ANSI_1'から来るかもしれません)。 – jlstrecker