diff --git a/src/mol-util/input/input-observer.ts b/src/mol-util/input/input-observer.ts
index a488deb0888f8e000869b08f036a361061be0513..eb6f01e802d8e2203522680824deab52d4137f6e 100644
--- a/src/mol-util/input/input-observer.ts
+++ b/src/mol-util/input/input-observer.ts
@@ -10,7 +10,7 @@ import { Vec2 } from '../../mol-math/linear-algebra';
 
 import { BitFlags, noop } from '../../mol-util';
 
-function getButtons(event: MouseEvent | Touch) {
+export function getButtons(event: MouseEvent | Touch) {
     if (typeof event === 'object') {
         if ('buttons' in event) {
             return event.buttons
@@ -37,6 +37,15 @@ function getButtons(event: MouseEvent | Touch) {
     return 0
 }
 
+export function getModifiers(event: MouseEvent | Touch) {
+    return {
+        alt: 'altKey' in event ? event.altKey : false,
+        shift: 'shiftKey' in event ? event.shiftKey : false,
+        control: 'ctrlKey' in event ? event.ctrlKey : false,
+        meta: 'metaKey' in event ? event.metaKey : false
+    }
+}
+
 export const DefaultInputObserverProps = {
     noScroll: true,
     noContextMenu: true,