@@ -626,7 +626,6 @@ window.CodeMirror = (function() {
626626 } , 50 ) ;
627627
628628 var name = keyNames [ e_prop ( e , "keyCode" ) ] , handled = false ;
629- var flipCtrlCmd = opera && mac ;
630629 if ( name == null || e . altGraphKey ) return false ;
631630 if ( e_prop ( e , "altKey" ) ) name = "Alt-" + name ;
632631 if ( e_prop ( e , flipCtrlCmd ? "metaKey" : "ctrlKey" ) ) name = "Ctrl-" + name ;
@@ -2286,12 +2285,18 @@ window.CodeMirror = (function() {
22862285 var ie_lt9 = / M S I E [ 1 - 8 ] \b / . test ( navigator . userAgent ) ;
22872286 var quirksMode = ie && document . documentMode == 5 ;
22882287 var webkit = / W e b K i t \/ / . test ( navigator . userAgent ) ;
2288+ var qtwebkit = webkit && / Q t \/ \d + \. \d + / . test ( navigator . userAgent ) ;
22892289 var chrome = / C h r o m e \/ / . test ( navigator . userAgent ) ;
22902290 var opera = / O p e r a \/ / . test ( navigator . userAgent ) ;
22912291 var safari = / A p p l e C o m p u t e r / . test ( navigator . vendor ) ;
22922292 var khtml = / K H T M L \/ / . test ( navigator . userAgent ) ;
22932293 var mac_geLion = / M a c O S X 1 0 \D ( [ 7 - 9 ] | \d \d ) \D / . test ( navigator . userAgent ) ;
22942294
2295+ var opera_version = opera && navigator . userAgent . match ( / V e r s i o n \/ ( \d * \. \d * ) / ) ;
2296+ if ( opera_version ) opera_version = Number ( opera_version [ 1 ] ) ;
2297+ // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
2298+ var flipCtrlCmd = mac && ( qtwebkit || opera && ( opera_version == null || opera_version < 12.11 ) ) ;
2299+
22952300 // Utility functions for working with state. Exported because modes
22962301 // sometimes need to do this.
22972302 function copyState ( mode , state ) {
0 commit comments