Я разрабатываю приложение для определения типа клавиатуры для macOS.Я видел несколько функций, которые при чтении документации должны возвращать идентификатор клавиатуры.
Однако, когда я тестирую их на своем ноутбуке, он всегда печатает 59.
Может кто-нибудь сказать мне, откуда берется это значение 59 и его значение ??
Пока что япопробовал с экранной клавиатурой и встроенной клавиатурой.Я также пробовал с разными макетами, но получаю 59
Это мой код:
- (CGEventRef)processEvent:(CGEventRef)cgEvent
{
uint32_t kbdType = LMGetKbdType();
NSLog(@"Testing LMGetKbdType ----------> %d", kbdType);
NSEvent* event = [NSEvent eventWithCGEvent:cgEvent];
NSEventType type = [event type];
if(type==NSKeyDown || type==NSKeyUp) {
int64_t val = CGEventGetIntegerValueField(cgEvent, kCGKeyboardEventKeyboardType);
NSLog(@"CGEventGetIntegerValueField: %lld",val);
EventRef ce = (EventRef)[event eventRef];
if(ce) {
unsigned kbt;
GetEventParameter(
ce,
kEventParamKeyboardType,
typeUInt32, NULL,
sizeof kbt, NULL,
& kbt
);
NSLog(@"CARBON Keyboard type: %d",kbt);
}
CGEventSourceRef evSrc = CGEventCreateSourceFromEvent( cgEvent );
if(evSrc) {
unsigned kbt = (NSUInteger) CGEventSourceGetKeyboardType( evSrc );
CFRelease(evSrc);
NSLog(@"COCOA: %d",kbt);
}
}
}