@@ -120,7 +120,7 @@ mpl.figure.prototype._init_canvas = function() {
120
120
}
121
121
122
122
canvas_div . keydown ( 'key_press' , canvas_keyboard_event ) ;
123
- canvas_div . keydown ( 'key_release' , canvas_keyboard_event ) ;
123
+ canvas_div . keyup ( 'key_release' , canvas_keyboard_event ) ;
124
124
this . canvas_div = canvas_div
125
125
this . _canvas_extra_style ( canvas_div )
126
126
this . root . append ( canvas_div ) ;
@@ -459,20 +459,33 @@ mpl.figure.prototype.mouse_event = function(event, name) {
459
459
}
460
460
461
461
mpl . figure . prototype . key_event = function ( event , name ) {
462
- /* Don't fire events just when a modifier is changed. Modifiers are
463
- sent along with other keys. */
464
- if ( event . keyCode >= 16 && event . keyCode <= 20 ) {
465
- return ;
466
- }
467
462
463
+ // Ignore pause/break and caps lock
464
+ if ( event . keyCode === 19 || event . keyCode === 20 )
465
+ return ;
468
466
var value = '' ;
469
- if ( event . ctrlKey ) {
467
+ if ( event . ctrlKey && ! ( event . keyCode == 17 ) ) {
470
468
value += "ctrl+" ;
471
469
}
472
- if ( event . altKey ) {
470
+ if ( event . altKey && ! ( event . keyCode == 18 ) ) {
473
471
value += "alt+" ;
474
472
}
475
- value += String . fromCharCode ( event . keyCode ) . toLowerCase ( ) ;
473
+ if ( event . shiftKey && ! ( event . keyCode == 16 ) ) {
474
+ value += "shift+" ;
475
+ }
476
+
477
+ if ( event . keyCode == 17 ) {
478
+ value += "control" ;
479
+ }
480
+ else if ( event . keyCode == 18 ) {
481
+ value += "alt" ;
482
+ }
483
+ else if ( event . keyCode == 16 ) {
484
+ value += "shift" ;
485
+ }
486
+ else {
487
+ value += String . fromCharCode ( event . keyCode ) . toLowerCase ( ) ;
488
+ }
476
489
477
490
this . send_message ( name , { key : value } ) ;
478
491
return false ;
0 commit comments