سؤال

أحاول إنشاء Keydown Keydown و KeyUP أحداثًا برمجيًا. أنا أستخدم حاليًا CGPostKeyboardEvent للقيام بذلك ، لكنني أبحث عن طريقة للقيام بذلك على مستوى أقل. لقد نظرت إلى ddhidlib لكنني لم أستطع معرفة طريقة لإنشاء حدث مزيف. هل أستطيع مساعدتك؟

تحديث: بفضل نصيحة Weichsel ، أقوم الآن بإنشاء حدث مفتاح مع ما يلي:

  CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
  CGEventPost(kCGSessionEventTap, e);
  CFRelease(e);

الذي وجدته هنا.

لكن, ، مشكلتي لا تزال قائمة ، لذا سأوضح قليلاً. التطبيق (الطرف الثالث) الذي أود إرسال keypresses إلى الأدوات ddhidlib's وظيفة التقاط المفتاح:

- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
             keyDown: (unsigned) usageId;

وهذا لا يسمى أبدًا باستخدام الطريقة الحالية. أظن أن المفتاح الذي يتم محاكاته باستخدام cgeventcreatekeyboardevent هو أعلى من مستوى لا يمكن التقاطه بواسطة ddhidkeyboard: keydown. لذا فإن ما أحاول القيام به هو إنشاء حدث KeyDown على مستوى منخفض بما فيه الكفاية بحيث يتم التعرف عليه بواسطة DDHIDKeyboard: KeyDown.

هل كانت مفيدة؟

المحلول

ما الخطأ في خدمات الأحداث الكوارتز؟
أعتقد أنك على المسار الصحيح ، ولكن يجب أن تستخدم CGEventCreateKeyboardEvent بدلاً من CGPostKeyboardEvent لأن هذا الأخير تم إهماله منذ Mac OS X 10.6.

نصائح أخرى

يمكن أن تضخ صنابير الأحداث على مستوى HID إذا قمت بتشغيل الجذر

http://developer.apple.com/mac/library/documentation/carbon/reference/quartzeventservicesref/reference/reference.html#//apple_ref/c/tdef/cgeventtaplocation

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top