@@ -1914,73 +1914,51 @@ - (BOOL)acceptsFirstResponder
1914
1914
// so we need to handle both cases here
1915
1915
- (void )flagsChanged : (NSEvent *)event
1916
1916
{
1917
- bool keypress = false ;
1918
- bool keyrelease = false ;
1919
- if ( ([event modifierFlags ] & NSEventModifierFlagCommand) && ! lastCommand) {
1920
- // Command pressed
1921
- lastCommand = true ;
1917
+ bool isPress = false ; // true if key is pressed, false is released
1918
+ if ((([event modifierFlags ] & NSEventModifierFlagCommand) && !lastCommand) ||
1919
+ (! ([event modifierFlags ] & NSEventModifierFlagCommand) && lastCommand) ) {
1920
+ // Command pressed/released
1921
+ lastCommand = !lastCommand ;
1922
1922
keyChangeCommand = true ;
1923
- keypress = true ;
1923
+ isPress = lastCommand ;
1924
1924
}
1925
- else if (!([event modifierFlags ] & NSEventModifierFlagCommand) && lastCommand) {
1926
- // Command released
1927
- lastCommand = false ;
1928
- keyChangeCommand = true ;
1929
- keyrelease = true ;
1930
- }
1931
- else if (([event modifierFlags ] & NSEventModifierFlagControl) && !lastControl) {
1932
- // Control pressed
1933
- lastControl = true ;
1925
+ else if ((([event modifierFlags ] & NSEventModifierFlagControl) && !lastControl) ||
1926
+ (!([event modifierFlags ] & NSEventModifierFlagControl) && lastControl)) {
1927
+ // Control pressed/released
1928
+ lastControl = !lastControl;
1934
1929
keyChangeControl = true ;
1935
- keypress = true ;
1936
- }
1937
- else if (!([event modifierFlags ] & NSEventModifierFlagControl) && lastControl) {
1938
- // Control released
1939
- lastControl = false ;
1940
- keyChangeControl = true ;
1941
- keyrelease = true ;
1942
- }
1943
- else if (([event modifierFlags ] & NSEventModifierFlagShift) && !lastShift) {
1944
- // Shift pressed
1945
- lastShift = true ;
1946
- keyChangeShift = true ;
1947
- keypress = true ;
1930
+ isPress = lastControl;
1948
1931
}
1949
- else if (!([event modifierFlags ] & NSEventModifierFlagShift) && lastShift) {
1950
- // Shift released
1951
- lastShift = false ;
1932
+ else if ((([event modifierFlags ] & NSEventModifierFlagShift) && !lastShift) ||
1933
+ (!([event modifierFlags ] & NSEventModifierFlagShift) && lastShift)) {
1934
+ // Shift pressed/released
1935
+ lastShift = !lastShift;
1952
1936
keyChangeShift = true ;
1953
- keyrelease = true ;
1954
- }
1955
- else if (([event modifierFlags ] & NSEventModifierFlagOption) && !lastOption) {
1956
- // Option pressed
1957
- lastOption = true ;
1958
- keyChangeOption = true ;
1959
- keypress = true ;
1937
+ isPress = lastShift;
1960
1938
}
1961
- else if (!([event modifierFlags ] & NSEventModifierFlagOption) && lastOption) {
1962
- // Option released
1963
- lastOption = false ;
1939
+ else if ((([event modifierFlags ] & NSEventModifierFlagOption) && !lastOption) ||
1940
+ (!([event modifierFlags ] & NSEventModifierFlagOption) && lastOption)) {
1941
+ // Option pressed/released
1942
+ lastOption = !lastOption;
1964
1943
keyChangeOption = true ;
1965
- keyrelease = true ;
1944
+ isPress = lastOption ;
1966
1945
}
1967
- else if (([event modifierFlags ] & NSEventModifierFlagCapsLock) && !lastCapsLock) {
1968
- // Capslock pressed
1969
- lastCapsLock = true ;
1946
+ else if ((([event modifierFlags ] & NSEventModifierFlagCapsLock) && !lastCapsLock) ||
1947
+ (!([event modifierFlags ] & NSEventModifierFlagCapsLock) && lastCapsLock)) {
1948
+ // Capslock pressed/released
1949
+ lastCapsLock = !lastCapsLock;
1970
1950
keyChangeCapsLock = true ;
1971
- keypress = true ;
1951
+ isPress = lastCapsLock ;
1972
1952
}
1973
- else if (!([event modifierFlags ] & NSEventModifierFlagCapsLock) && lastCapsLock) {
1974
- // Capslock released
1975
- lastCapsLock = false ;
1976
- keyChangeCapsLock = true ;
1977
- keyrelease = true ;
1953
+ else {
1954
+ // flag we don't handle
1955
+ return ;
1978
1956
}
1979
1957
1980
- if (keypress ) {
1958
+ if (isPress ) {
1981
1959
[self keyDown: event];
1982
1960
}
1983
- else if (keyrelease) {
1961
+ else {
1984
1962
[self keyUp: event];
1985
1963
}
1986
1964
0 commit comments