MacOS日志键的键码

时间:2012-02-13 03:45:24

标签: macos keyboard keycode

我需要弄清楚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];

}

感谢

1 个答案:

答案 0 :(得分:3)

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

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

如果您想获得flagsChanged个活动,可以通过事件点按或在某个地方NSResponder收到。 flagsChanged事件告诉您新的修饰符集合(shift / command / etc)。在这种情况下,存储以前修改器的本地副本是有帮助的,这样您就可以看到哪个特定键发生了故障。