diff --git a/CHANGELOG.md b/CHANGELOG.md
index d10722fc3d317b431bc4797db186c8e7538d373d..7818a66722a9c2340f519f894a9bcad0cb99fb95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ Note that since we don't clearly distinguish between a public and private interf
 ## [Unreleased]
 
 - Remove `camera.far` doubeling workaround
+- Add `ModifiersKeys.areNone` helper function
 
 ## [v3.33.0] - 2023-04-02
 
diff --git a/src/mol-util/input/input-observer.ts b/src/mol-util/input/input-observer.ts
index 0764c6c88ab1876dae1433c8ff0c06e083b955fb..5e5c8fc1b22681d1133cc6e34e2366b6cb637160 100644
--- a/src/mol-util/input/input-observer.ts
+++ b/src/mol-util/input/input-observer.ts
@@ -76,12 +76,16 @@ export type ModifiersKeys = {
     meta: boolean
 }
 export namespace ModifiersKeys {
-    export const None = create();
+    export const None: Readonly<ModifiersKeys> = create();
 
     export function areEqual(a: ModifiersKeys, b: ModifiersKeys) {
         return a.shift === b.shift && a.alt === b.alt && a.control === b.control && a.meta === b.meta;
     }
 
+    export function areNone(a: ModifiersKeys) {
+        return areEqual(a, None);
+    }
+
     export function size(a?: ModifiersKeys) {
         if (!a) return 0;
         let ret = 0;