2012-02-13 1 views
4

je dois comprendre le code clé des clés du journal de Mac (Ctrl, Shift, etc.) ou besoin de savoir comment suivre ce journal événement appuyez sur la touche ...keycode des clés du journal de MacOS

fondamentalement, je suis convertir les codes clés mac en code clé Windows équivalent ... comment puis-je faire cela?

+ (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]; 

}

grâce

Répondre

3

Contrôle, Majuscule, Commande et touches d'options sur OS X ne génèrent pas NSKeyDown/kCGEventKeyDown événements. Au lieu de cela, vous pouvez recevoir un événement NSFlagsChanged/kCGEventFlagsChanged.

qui est, événement « généralement » si l'utilisateur a tapé Option-T et que vous numérisez keyDown événements, vous ne verrez un « T », qui comprend le fait que la touche option est « modifie » il.

Si vous souhaitez obtenir des événements flagsChanged, vous pouvez le recevoir avec un événement, ou dans un NSResponder quelque part. L'événement flagsChanged vous indique la nouvelle collection de modificateurs (shift/command/etc). Dans ce cas, il est utile de stocker une copie locale des modificateurs précédents afin que vous puissiez voir quelle touche particulière est descendue ou vers le haut.