about summary refs log tree commit diff stats
path: root/078mouse.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-06-15 13:58:08 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-06-15 13:58:08 -0700
commita5840f21020f6d568f82f84afe9fe99047a49f4a (patch)
tree72f8b28e8166268ee38174c2c7160804956297ad /078mouse.mu
parent7c0d16a79fba21e67d3b46f12f29042f84f997ba (diff)
downloadmu-a5840f21020f6d568f82f84afe9fe99047a49f4a.tar.gz
1566 - fake mouse clicks in scenarios
Diffstat (limited to '078mouse.mu')
-rw-r--r--078mouse.mu43
1 files changed, 43 insertions, 0 deletions
diff --git a/078mouse.mu b/078mouse.mu
new file mode 100644
index 00000000..2590131f
--- /dev/null
+++ b/078mouse.mu
@@ -0,0 +1,43 @@
+exclusive-container event [
+  # update the ASSUME_EVENTS handler if you add more variants
+  keyboard:keyboard-event
+  mouse:mouse-event
+]
+
+container keyboard-event [
+  key:character
+]
+
+container mouse-event [
+  type:character
+  row:number
+  column:number
+]
+
+container events [
+  index:number
+  data:address:array:event  
+]
+
+recipe read-event [
+  default-space:address:array:location <- new location:type, 30:literal
+  x:address:events <- next-ingredient
+  {
+    break-unless x:address:events
+    idx:address:number <- get-address x:address:events/deref, index:offset
+    buf:address:array:event <- get x:address:events/deref, data:offset
+    {
+      max:number <- length buf:address:array:event/deref
+      done?:boolean <- greater-or-equal idx:address:number/deref, max:number
+      break-unless done?:boolean
+      dummy:address:event <- new event:type
+      reply dummy:address:event/deref, x:address:events/same-as-ingredient:0
+    }
+    result:event <- index buf:address:array:event/deref, idx:address:number/deref
+    idx:address:number/deref <- add idx:address:number/deref, 1:literal
+    reply result:event, x:address:events/same-as-ingredient:0
+  }
+  # real event source
+  result:event <- read-keyboard-or-mouse-event
+  reply result:event
+]