【问题标题】:keycode of log keys of MacOSMacOS日志键keycode
【发布时间】:2012-02-13 03:45:23
【问题描述】:

我需要弄清楚 Mac 的日志键的键码(ctrl、shift 等)或者需要知道如何跟踪这个日志按键事件...

基本上我正在将 mac 键码转换为等效的 windows 键码...我该怎么做?

+ (unsigned int) winKeyValueForKey:(unsigned int) macKeyValue{
unsigned int mapTable[128];
mapTable[0] = 0;
mapTable[1] = 0;
mapTable[2] = 0;
mapTable[3] = 0;
mapTable[4] = 0;
mapTable[5] = 0;
mapTable[6] = 0;
mapTable[7] = 0;
mapTable[8] = 0;
mapTable[9] = 0;
mapTable[10] = 0;
mapTable[11] = 0;
mapTable[12] = 0;
mapTable[13] = 0;
mapTable[14] = 0;
mapTable[15] = 0;
mapTable[16] = 0;
mapTable[17] = 0;
mapTable[18] = 0;
mapTable[19] = 0;
mapTable[20] = 0;
mapTable[21] = 0;
mapTable[22] = 0;
mapTable[23] = 0;
mapTable[24] = 0;
mapTable[25] = 0;
mapTable[26] = 0;
mapTable[27] = 0;
mapTable[28] = 0;
mapTable[29] = 0;
mapTable[30] = 0;
mapTable[31] = 0;
mapTable[32] = 0;
mapTable[33] = 0;
mapTable[34] = 0;
mapTable[35] = 0;
mapTable[36] = 13; //SHOEB
mapTable[37] = 0;
mapTable[38] = 0;
mapTable[39] = 0;
mapTable[40] = 0;
mapTable[41] = 0;
mapTable[42] = 0;
mapTable[43] = 0;
mapTable[44] = 0;
mapTable[45] = 0;
mapTable[46] = 0;
mapTable[47] = 0;
mapTable[48] = 0;
mapTable[49] = 0;
mapTable[50] = 0;
mapTable[51] = 0;
mapTable[52] = 0;
mapTable[53] = 0;
mapTable[54] = 0;
mapTable[55] = 0;
mapTable[56] = 0;
mapTable[57] = 0;
mapTable[58] = 0;
mapTable[59] = 0;
mapTable[60] = 0;
mapTable[61] = 0;
mapTable[62] = 0;
mapTable[63] = 0;
mapTable[64] = 0;
mapTable[65] = 0;
mapTable[66] = 0;
mapTable[67] = 0;
mapTable[68] = 0;
mapTable[69] = 0;
mapTable[70] = 0;
mapTable[71] = 0;
mapTable[72] = 0;
mapTable[73] = 0;
mapTable[74] = 0;
mapTable[75] = 0;
mapTable[76] = 0;
mapTable[77] = 0;
mapTable[78] = 0;
mapTable[79] = 0;
mapTable[80] = 0;
mapTable[81] = 0;
mapTable[82] = 0;
mapTable[83] = 0;
mapTable[84] = 0;
mapTable[85] = 0;
mapTable[86] = 0;
mapTable[87] = 0;
mapTable[88] = 0;
mapTable[89] = 0;
mapTable[90] = 0;
mapTable[91] = 0;
mapTable[92] = 0;
mapTable[93] = 0;
mapTable[94] = 0;
mapTable[95] = 0;
mapTable[96] = 0;
mapTable[97] = 0;
mapTable[98] = 0;
mapTable[99] = 0;
mapTable[100] = 0;
mapTable[101] = 0;
mapTable[102] = 0;
mapTable[103] = 0;
mapTable[104] = 0;
mapTable[105] = 0;
mapTable[106] = 0;
mapTable[107] = 0;
mapTable[108] = 0;
mapTable[109] = 0;
mapTable[110] = 0;
mapTable[111] = 0;
mapTable[112] = 0;
mapTable[113] = 0;
mapTable[114] = 0;
mapTable[115] = 0;
mapTable[116] = 0;
mapTable[117] = 0;
mapTable[118] = 0;
mapTable[119] = 0;
mapTable[120] = 0;
mapTable[121] = 0;
mapTable[122] = 0;  
mapTable[123] = 37;
mapTable[124] = 39;
mapTable[125] = 40;
mapTable[126] = 38;
mapTable[127] = 0;  
return mapTable[macKeyValue];

}

谢谢

【问题讨论】:

    标签: macos keyboard keycode


    【解决方案1】:

    OS X 上的 Control、Shift、Command 和 Option 键不会生成 NSKeyDown/kCGEventKeyDown 事件。相反,您可以收到NSFlagsChanged/kCGEventFlagsChanged 事件。

    也就是说,“通常”如果用户键入 Option-T 并且您正在扫描 keyDown 事件,您将只会看到“T”事件,其中包括选项键正在“修改”它。

    如果您想获得flagsChanged 事件,您可以通过点击事件来接收它,或者在某处的NSResponder 中接收。 flagsChanged 事件告诉您新的修饰符集合(shift/command/etc)。在这种情况下,存储先前修饰符的本地副本会很有帮助,这样您就可以看到哪个特定的键按下或按下了。

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 1970-01-01
      • 2011-02-03
      • 2011-08-30
      • 1970-01-01
      • 2012-10-23
      • 2011-08-03
      相关资源
      最近更新 更多