keyboard.js
84 lines
| 3.0 KiB
| application/javascript
|
JavascriptLexer
Brian E. Granger
|
r15617 | |||
var normalized_shortcuts = [ | ||||
Paul Ivanov
|
r15873 | 'ctrl-shift-m', | ||
'alt-meta-p', | ||||
Brian E. Granger
|
r15617 | ]; | ||
var to_normalize = [ | ||||
Paul Ivanov
|
r15873 | ['shift-%', 'shift-5'], | ||
['ShiFT-MeTa-CtRl-AlT-m', 'alt-ctrl-meta-shift-m'], | ||||
Brian E. Granger
|
r15617 | ]; | ||
var unshifted = "` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] \\ a s d f g h j k l ; ' z x c v b n m , . /"; | ||||
// shifted = '~ ! @ # $ % ^ & * ( ) _ + Q W E R T Y U I O P { } | A S D F G H J K L : " Z X C V B N M < > ?'; | ||||
Matthias Bussonnier
|
r18392 | |||
Brian E. Granger
|
r15617 | casper.notebook_test(function () { | ||
Matthias Bussonnier
|
r18392 | var that = this; | ||
Brian E. Granger
|
r15617 | |||
this.then(function () { | ||||
this.each(unshifted.split(' '), function (self, item) { | ||||
var result = this.evaluate(function (sc) { | ||||
var e = IPython.keyboard.shortcut_to_event(sc); | ||||
var sc2 = IPython.keyboard.event_to_shortcut(e); | ||||
return sc2; | ||||
}, item); | ||||
this.test.assertEquals(result, item, 'Shortcut to event roundtrip: '+item); | ||||
}); | ||||
}); | ||||
this.then(function () { | ||||
this.each(to_normalize, function (self, item) { | ||||
var result = this.evaluate(function (pair) { | ||||
return IPython.keyboard.normalize_shortcut(pair[0]); | ||||
}, item); | ||||
this.test.assertEquals(result, item[1], 'Normalize shortcut: '+item[0]); | ||||
}); | ||||
Paul Ivanov
|
r15873 | }); | ||
Brian E. Granger
|
r15617 | |||
this.then(function () { | ||||
this.each(normalized_shortcuts, function (self, item) { | ||||
var result = this.evaluate(function (sc) { | ||||
var e = IPython.keyboard.shortcut_to_event(sc); | ||||
var sc2 = IPython.keyboard.event_to_shortcut(e); | ||||
return sc2; | ||||
}, item); | ||||
this.test.assertEquals(result, item, 'Shortcut to event roundtrip: '+item); | ||||
}); | ||||
}); | ||||
Matthias Bussonnier
|
r18392 | this.then(function(){ | ||
var shortcuts_test = { | ||||
'i,e,e,e,e,e' : '[[5E]]', | ||||
'i,d,d,q,d' : '[[TEST1]]', | ||||
'i,d,d' : '[[TEST1 WILL BE SHADOWED]]', | ||||
'i,d,k' : '[[SHOULD SHADOW TEST2]]', | ||||
'i,d,k,r,q' : '[[TEST2 NOT SHADOWED]]', | ||||
';,up,down,up,down,left,right,left,right,b,a' : '[[KONAMI]]', | ||||
'ctrl-x,meta-c,meta-b,u,t,t,e,r,f,l,y' : '[[XKCD]]' | ||||
}; | ||||
that.msgs = []; | ||||
that.on('remote.message', function(msg) { | ||||
that.msgs.push(msg); | ||||
}) | ||||
that.evaluate(function (obj) { | ||||
for(var k in obj){ | ||||
IPython.keyboard_manager.command_shortcuts.add_shortcut(k, function(){console.log(obj[k])}); | ||||
} | ||||
}, shortcuts_test); | ||||
var longer_first = false; | ||||
var longer_last = false; | ||||
for(var m in that.msgs){ | ||||
longer_first = longer_first||(that.msgs[m].match(/you are overriting/)!= null); | ||||
longer_last = longer_last ||(that.msgs[m].match(/will be shadowed/) != null); | ||||
} | ||||
this.test.assert(longer_first, 'no warnign if registering shorter shortut'); | ||||
this.test.assert(longer_last , 'no warnign if registering longer shortut'); | ||||
}) | ||||
Paul Ivanov
|
r15873 | }); | ||