【问题标题】:UCKeyTranslate returns junk for non-ascii keys on keyboardUCKeyTranslate 为键盘上的非 ascii 键返回垃圾
【发布时间】:2014-03-05 04:24:18
【问题描述】:

我正在尝试将键盘扫描码映射到 OSX 上的可显示字符串。

我在这里找到了适用于所有普通 ascii 字母和数字的技术 (Convert key code into key equivalent string),但对于所有其他键,即方向箭头、返回等,我只会得到不可打印的字符。令我感到奇怪的是,所使用的 UCKeyTranslate 函数采用 UniChar 数组,但只返回一个字符。

我正在寻找类似于 Windows 上的 DirectInput DIPROP_KEYNAME 功能的东西。

我很难接受在当今的现代操作系统中,我将不得不对每个“不受支持的”键使用硬编码字符串值。

我有什么遗漏吗?

【问题讨论】:

标签: macos cocoa keyboard


【解决方案1】:

我无法保证您不必在代码中硬编码这些值,但是这个项目:

https://github.com/shpakovski/MASShortcut

就是这样:

// These glyphs are missed in Carbon.h
enum {
    kMASShortcutGlyphEject = 0x23CF,
    kMASShortcutGlyphClear = 0x2715,
    kMASShortcutGlyphDeleteLeft = 0x232B,
    kMASShortcutGlyphDeleteRight = 0x2326,
    kMASShortcutGlyphLeftArrow = 0x2190,
    kMASShortcutGlyphRightArrow = 0x2192,
    kMASShortcutGlyphUpArrow = 0x2191,
    kMASShortcutGlyphDownArrow = 0x2193,
    kMASShortcutGlyphEscape = 0x238B,
    kMASShortcutGlyphHelp = 0x003F,
    kMASShortcutGlyphPageDown = 0x21DF,
    kMASShortcutGlyphPageUp = 0x21DE,
    kMASShortcutGlyphTabRight = 0x21E5,
    kMASShortcutGlyphReturn = 0x2305,
    kMASShortcutGlyphReturnR2L = 0x21A9,    
    kMASShortcutGlyphPadClear = 0x2327,
    kMASShortcutGlyphNorthwestArrow = 0x2196,
    kMASShortcutGlyphSoutheastArrow = 0x2198,
} MASShortcutGlyph;

希望这会有所帮助。

【讨论】:

  • 它并没有真正回答我的问题,但因为你是唯一回答的人,所以我会给你赏金。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2011-07-07
  • 2013-03-08
  • 2013-09-17
相关资源
最近更新 更多