Как обнаружить сдвиг + стрелка вправо + другой ключ в angular

У меня есть проблема, чтобы обнаружить shift + правую стрелку + p в angular.
Я использую angular 1.2.3 У меня нет проблем обнаруживать только стрелку вправо + p, но когда смена переходит в игру, что-то тормозит

Вопрос горячий, чтобы обнаружить ситуацию, когда нажаты 3 клавиши: SHIFT + RIGHT ARROW + P

Вот рабочий пример plunker

var app = angular.module('keyboardDemo', []);

app.controller('MainCtrl', function($scope, $timeout) {
    /**
     * 39 (right arrow)
     * 80 (p)
     */
    var map = {39: false, 80: false};

    $scope.onKeyUp = function(event){
        if (map[39] && map[80]) {
            $scope.data.message1 = "P + RIGHT pressed!";
            $timeout(function(){
               $scope.data.message1 = '';
            }, 1000);
        }

        if (event.shiftKey && map[39] && map[80]) {
            $scope.data.message2 = "SHIFT + P + RIGHT pressed!";
            $timeout(function(){
               $scope.data.message2 = '';
            }, 1000);
        }

        var keyCode = getKeyboardEventCode(event);
        if (keyCode in map) {
            clearKeyCode(keyCode);
        }
    };


    $scope.onKeyDown = function(event){
        var keyCode = getKeyboardEventCode(event);
        if (keyCode in map) {
            map[keyCode] = true;
        }
    }


    var getKeyboardEventCode = function (event) {
        return parseInt((window.event ? event.keyCode : event.which));
    };

    function clearKeyCode(code){
        map[code] = false;
    }

    $scope.data = {
      'message1': '',
      'message2': ''
    };
});

Ответы

Ответ 1

Как говорится в комментарии. Ваш код работает очень хорошо. Используя chrome на macOS, когда я нажимаю "SHIFT + P + RIGHT ARROW" и отпустите клавиши, я вижу оба сообщения.