diff --git a/sketch.js b/sketch.js
index 69cfa08..79b2c4a 100644
--- a/sketch.js
+++ b/sketch.js
@@ -297,7 +297,26 @@ function make_lights() {
 
 function keyPressed() {
   if (key == ' ') {
+    if (
+      document.activeElement !== input_charge &&
+      document.activeElement !== document.body
+    ) return;
     toggle_physics();
+  } else if (key == 's') {
+    toggle_physics();
+  } else if (key == 'a') {
+    input_charge.valueAsNumber = 0;
+    input_charge.oninput();
+  } else if (key == '[') {
+    input_charge.valueAsNumber -= Number(input_charge.step);
+    input_charge.oninput();
+  } else if (key == ']') {
+    input_charge.valueAsNumber += Number(input_charge.step);
+    input_charge.oninput();
+  } else if (key == '-') {
+    make_particles(max(0, int(particles.length) - 1));
+  } else if (key == '=') {
+    make_particles(min(360, int(particles.length) + 1));
   } else if (key == 'd') {
     set_surface((surface + 1) % 3);
   } else if (key == 'f') {
@@ -305,6 +324,7 @@ function keyPressed() {
   } else if (key == 'g') {
     toggle_polytope();
   } else if (key >= '0' && key <= '9') {
+    if (document.activeElement === input_particles) return;
     make_particles(int(key));
   }
 }