Я использую собственный подкласс NSView и получаю события клавиатуры через методы keyDown/keyUp, все работает отлично, за исключением случаев, когда нажата клавиша Cmd pressed, события keyDown запускаются как обычно, но событие keyUp никогда не появляется.
В нашем случае мы используем клавиши со стрелками самостоятельно, чтобы перемещать изображение влево/вправо/вверх/вниз, и если пользователь удерживает "Cmd ⌘", одновременно нажимая влево/вправо, он будет поворачивать изображение вместо этого. Поскольку мы получаем событие keyDown, изображение начинает вращаться, но оно никогда не останавливается, поскольку keyUp никогда не появляется. Другие модификаторы не имеют этой проблемы (например, если сдвиг, ctrl или alt удерживаются при нажатии другой клавиши, мы получаем keyUp, как ожидалось). Один из вариантов - использовать другой модификатор, но было бы неплохо сохранить его в соответствии с версией ПК (Cmd используется в качестве замены, когда Ctrl используется в Windows, поддерживает его в соответствии со стандартными командами копирования/вставки и т.д.).
Кто-нибудь знает, почему он это делает? Это похоже на ошибку, но, вероятно, просто странное "правильное поведение", любые идеи о том, как обойти его (кроме использования альтернативного модификатора или использования подобных прямых HID-доступа).
Спасибо.