У меня есть рабочий код (here), который перехватывает коды ключей для событий, не связанных с модификатором, и событий с измененным изменением.Ловушка каждый ключ SHIFT независимо от OS X
Но если вы делаете:
LSHIFT down -> RSHIFT down -> RSHIFT up -> LSHIFT up
... 2 внутренних действия не будут вызывать либо из этих крюков, потому что состояние модификатора не меняется!
(EDIT: Woops я испытал, что из прежде чем писать, потому что на самом деле новый модификатор изменен производится каждым реальным изменением.)
Моя единственная мысль, может быть дополнительно смотреть на еще нижний уровень (here) - но это не выглядит красиво, независимо от того, с какого угла я его смотрю.
Нет, у них есть отдельные коды ключей. Я подтвердил это, выполнив код во второй ссылке. –
Предполагая, что вы создаете приложение Cocoa с Obj-C (учитывая тег OSX), вы можете использовать код [здесь] (http://stackoverflow.com/questions/10715910/is-there-a-way-to-differentiate -between-влево и вправо-Shift-ключи благополучие нажима). Внедрите '- (void) flagsChanged: (NSEvent *)' и проверьте '[theEvent modifiers]'. LShift - 131330, а RShift - 131332 – Arc676
@ Arc676, вы молодец! Я только что проверил, и он действительно правильно изолирует события L & R Shift. Даже такие композиты, как + L + R-L-R и + L + R-R-L. Если вы ответите, я с радостью приму это. –