Fare & klavye girişini geçici olarak bir makroda (Objective C/C/Unix kullanarak) & programlanmadan devre dışı bırakmak ve yeniden etkinleştirmek istiyorum.Programsal Olarak Devre Dışı Bırak Fare ve klavye
5
A
cevap
4
OS X'den CGEventTap
işleviyle klavyeleri seçici olarak devre dışı bırakmanızı sağlayan küçük bir açık kaynak uygulaması oluşturdum. Bu, Karbon Çerçevenin içinde, ancak CoreFoundation'ı temel alarak, aynı zamanda Lion üzerinde de çalışıyor. Örnek olarak açık SourceApp MultiLayout, available here on GitHub'u deneyebilirsiniz.
Temelde kendiniz yapmak istiyorsanız yapmanız gereken şudur:
#import <Carbon/Carbon.h>
Sonra böyle bir olay musluğu oluşturmak: Eğer Karbon Framework eklemem gerekiyor
kullanmak için:
: gerekirse, bu pasajını kullandığınızdavoid tap_keyboard(void) {
CFRunLoopSourceRef runLoopSource;
CGEventMask mask = kCGEventMaskForAllEvents;
//CGEventMask mask = CGEventMaskBit(kCGEventKeyUp) | CGEventMaskBit(kCGEventKeyDown);
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, mask, myCGEventCallback, NULL);
if (!eventTap) {
NSLog(@"Couldn't create event tap!");
exit(1);
}
runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
CFRelease(eventTap);
CFRelease(runLoopSource);
}
olayları kesmek için
Boolean dontForwardTap
öğesini true olarak ayarlayın ve olaylar durdurulacaktır.
Olası kopya: http://stackoverflow.com/questions/4518559/consuming-osx-mouse-trackpad-events-with-an-event-tap –
Başka bir çözüm de burada: http://stackoverflow.com/questions/5785630/değiştirme-nsevent-to-send-a-farklı anahtar-daha-tek-o-preslenmiş edildi/5785895 # 5785895 – FeeJai