Since it seems that you can't capture a shift key press by itself using ui.keydown (if so, probably because it's most often used as a modifier key), you can instead create your own directive that decorates an element to listen for shift on the keydown event:
angular.module('myApp', [])
.directive('captureShift', function(){
return {
restrict: 'A',
link: function(scope, elem, attrs) {
elem[0].onkeydown = function(){
console.log('shift pressed');
}
}
}
});
Shift doesn't seem to fire on keypress but does on keydown, so onkeydown
is used.