Hay muchas dificultades en una pregunta como esta. Básicamente, hay dos pasos:
- escuchar el
keydown
y keyup
eventos, y realizar un seguimiento de cuándo Ctrl está abajo
- Escucha de la rueda del ratón, y (si Ctrl está abajo) hacer lo que quiere
Pero aquí están los problemas que hay que abordar:
- ¿Cómo va a aplicar los detectores/controladores de eventos?
- According to QuirksMode, los navegadores en Mac no devuelven un código de clave preciso para Ctrl.
- Also according to QuirksMode, Firefox no admite el evento
mousewheel
. En su lugar, tendrá que usar DOMMouseScroll
.
- According to the MDC, hay algunos casos en los que el evento
DOMMouseScroll
, cuando se usa con Ctrl, ¡nunca se dispara!
No estoy diciendo que sean insuperables, o incluso que sean un gran problema. El uso de una buena biblioteca de JavaScript debería abstraer la mayoría de ellos, si no todos. Ser selectivo en su elección de navegadores/sistemas operativos para apoyar también ayudará bastante, si eso es factible.
Si tuviera que hacer esto con jQuery (y a jQuery mousewheel plugin), se vería algo como esto:
(function ($) {
var isCtrl = false;
function ctrlCheck(e) {
if (e.which === 17) {
isCtrl = e.type === 'keydown' ? true : false;
}
}
function wheelCheck(e, delta) {
// `delta` will be the distance that the page would have scrolled;
// might be useful for increasing the SVG size, might not
if (isCtrl) {
e.preventDefault();
yourResizeMethod(delta);
}
}
$(document).
keydown(ctrlCheck).
keyup(ctrlCheck).
mousewheel(wheelCheck);
}(jQuery));