@@ -1727,73 +1727,51 @@ - (BOOL)acceptsFirstResponder
17271727// so we need to handle both cases here
17281728- (void )flagsChanged : (NSEvent *)event
17291729{
1730- bool keypress = false ;
1731- bool keyrelease = false ;
1732- if ( ([event modifierFlags ] & NSEventModifierFlagCommand) && ! lastCommand) {
1733- // Command pressed
1734- lastCommand = true ;
1730+ bool isPress = false ; // true if key is pressed, false is released
1731+ if ((([event modifierFlags ] & NSEventModifierFlagCommand) && !lastCommand) ||
1732+ (! ([event modifierFlags ] & NSEventModifierFlagCommand) && lastCommand) ) {
1733+ // Command pressed/released
1734+ lastCommand = !lastCommand ;
17351735 keyChangeCommand = true ;
1736- keypress = true ;
1736+ isPress = lastCommand ;
17371737 }
1738- else if (!([event modifierFlags ] & NSEventModifierFlagCommand) && lastCommand) {
1739- // Command released
1740- lastCommand = false ;
1741- keyChangeCommand = true ;
1742- keyrelease = true ;
1743- }
1744- else if (([event modifierFlags ] & NSEventModifierFlagControl) && !lastControl) {
1745- // Control pressed
1746- lastControl = true ;
1738+ else if ((([event modifierFlags ] & NSEventModifierFlagControl) && !lastControl) ||
1739+ (!([event modifierFlags ] & NSEventModifierFlagControl) && lastControl)) {
1740+ // Control pressed/released
1741+ lastControl = !lastControl;
17471742 keyChangeControl = true ;
1748- keypress = true ;
1749- }
1750- else if (!([event modifierFlags ] & NSEventModifierFlagControl) && lastControl) {
1751- // Control released
1752- lastControl = false ;
1753- keyChangeControl = true ;
1754- keyrelease = true ;
1755- }
1756- else if (([event modifierFlags ] & NSEventModifierFlagShift) && !lastShift) {
1757- // Shift pressed
1758- lastShift = true ;
1759- keyChangeShift = true ;
1760- keypress = true ;
1743+ isPress = lastControl;
17611744 }
1762- else if (!([event modifierFlags ] & NSEventModifierFlagShift) && lastShift) {
1763- // Shift released
1764- lastShift = false ;
1745+ else if ((([event modifierFlags ] & NSEventModifierFlagShift) && !lastShift) ||
1746+ (!([event modifierFlags ] & NSEventModifierFlagShift) && lastShift)) {
1747+ // Shift pressed/released
1748+ lastShift = !lastShift;
17651749 keyChangeShift = true ;
1766- keyrelease = true ;
1767- }
1768- else if (([event modifierFlags ] & NSEventModifierFlagOption) && !lastOption) {
1769- // Option pressed
1770- lastOption = true ;
1771- keyChangeOption = true ;
1772- keypress = true ;
1750+ isPress = lastShift;
17731751 }
1774- else if (!([event modifierFlags ] & NSEventModifierFlagOption) && lastOption) {
1775- // Option released
1776- lastOption = false ;
1752+ else if ((([event modifierFlags ] & NSEventModifierFlagOption) && !lastOption) ||
1753+ (!([event modifierFlags ] & NSEventModifierFlagOption) && lastOption)) {
1754+ // Option pressed/released
1755+ lastOption = !lastOption;
17771756 keyChangeOption = true ;
1778- keyrelease = true ;
1757+ isPress = lastOption ;
17791758 }
1780- else if (([event modifierFlags ] & NSEventModifierFlagCapsLock) && !lastCapsLock) {
1781- // Capslock pressed
1782- lastCapsLock = true ;
1759+ else if ((([event modifierFlags ] & NSEventModifierFlagCapsLock) && !lastCapsLock) ||
1760+ (!([event modifierFlags ] & NSEventModifierFlagCapsLock) && lastCapsLock)) {
1761+ // Capslock pressed/released
1762+ lastCapsLock = !lastCapsLock;
17831763 keyChangeCapsLock = true ;
1784- keypress = true ;
1764+ isPress = lastCapsLock ;
17851765 }
1786- else if (!([event modifierFlags ] & NSEventModifierFlagCapsLock) && lastCapsLock) {
1787- // Capslock released
1788- lastCapsLock = false ;
1789- keyChangeCapsLock = true ;
1790- keyrelease = true ;
1766+ else {
1767+ // flag we don't handle
1768+ return ;
17911769 }
17921770
1793- if (keypress ) {
1771+ if (isPress ) {
17941772 [self keyDown: event];
17951773 }
1796- else if (keyrelease) {
1774+ else {
17971775 [self keyUp: event];
17981776 }
17991777
0 commit comments