| 1563 | }; |
| 1564 | |
| 1565 | function normalizeCommandKeys(callback, e, keyCode) { |
| 1566 | var hashId = getModifierHash(e); |
| 1567 | |
| 1568 | if (!useragent.isMac && pressedKeys) { |
| 1569 | if (pressedKeys[91] || pressedKeys[92]) |
| 1570 | hashId |= 8; |
| 1571 | if (pressedKeys.altGr) { |
| 1572 | if ((3 & hashId) != 3) |
| 1573 | pressedKeys.altGr = 0; |
| 1574 | else |
| 1575 | return; |
| 1576 | } |
| 1577 | if (keyCode === 18 || keyCode === 17) { |
| 1578 | var location = "location" in e ? e.location : e.keyLocation; |
| 1579 | if (keyCode === 17 && location === 1) { |
| 1580 | if (pressedKeys[keyCode] == 1) |
| 1581 | ts = e.timeStamp; |
| 1582 | } else if (keyCode === 18 && hashId === 3 && location === 2) { |
| 1583 | var dt = e.timestamp - ts; |
| 1584 | if (dt < 50) |
| 1585 | pressedKeys.altGr = true; |
| 1586 | } |
| 1587 | } |
| 1588 | } |
| 1589 | |
| 1590 | if (keyCode in keys.MODIFIER_KEYS) { |
| 1591 | keyCode = -1; |
| 1592 | } |
| 1593 | |
| 1594 | if (hashId & 8 && (keyCode === 91 || keyCode === 93)) { |
| 1595 | keyCode = -1; |
| 1596 | } |
| 1597 | |
| 1598 | if (!hashId && keyCode === 13) { |
| 1599 | var location = "location" in e ? e.location : e.keyLocation; |
| 1600 | if (location === 3) { |
| 1601 | callback(e, hashId, -keyCode); |
| 1602 | if (e.defaultPrevented) |
| 1603 | return; |
| 1604 | } |
| 1605 | } |
| 1606 | |
| 1607 | if (useragent.isChromeOS && hashId & 8) { |
| 1608 | callback(e, hashId, keyCode); |
| 1609 | if (e.defaultPrevented) |
| 1610 | return; |
| 1611 | else |
| 1612 | hashId &= ~8; |
| 1613 | } |
| 1614 | if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { |
| 1615 | return false; |
| 1616 | } |
| 1617 | |
| 1618 | return callback(e, hashId, keyCode); |
| 1619 | } |
| 1620 | |
| 1621 | var pressedKeys = null; |
| 1622 | var ts = 0; |