about summary refs log tree commit diff stats
path: root/074keyboard.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-06-24 16:47:26 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-06-24 16:47:26 -0700
commitbf8ba68c5815cb5721ea971c1e63a7aced308a07 (patch)
tree312e994ec16a752bf4ea2a693ce81723a54c44d0 /074keyboard.mu
parentb56e0447c6a56c0708ba17f7ae1efe1cdbae8ed5 (diff)
downloadmu-bf8ba68c5815cb5721ea971c1e63a7aced308a07.tar.gz
1638
Diffstat (limited to '074keyboard.mu')
-rw-r--r--074keyboard.mu102
1 files changed, 0 insertions, 102 deletions
diff --git a/074keyboard.mu b/074keyboard.mu
deleted file mode 100644
index 1d9702da..00000000
--- a/074keyboard.mu
+++ /dev/null
@@ -1,102 +0,0 @@
-# Wrappers around interaction primitives that take a potentially fake object
-# and are thus easier to test.
-
-exclusive-container event [
-  text:character
-  keycode:number  # keys on keyboard without a unicode representation
-  touch:touch-event  # mouse, track ball, etc.
-  # update the assume-console handler if you add more variants
-]
-
-container touch-event [
-  type:number
-  row:number
-  column:number
-]
-
-container console [
-  index:number
-  data:address:array:event
-]
-
-recipe new-fake-console [
-  default-space:address:array:location <- new location:type, 30:literal
-  result:address:console <- new console:type
-  buf:address:address:array:character <- get-address result:address:console/deref, data:offset
-#?   $start-tracing #? 1
-  buf:address:address:array:character/deref <- next-ingredient
-#?   $stop-tracing #? 1
-  idx:address:number <- get-address result:address:console/deref, index:offset
-  idx:address:number/deref <- copy 0:literal
-  reply result:address:console
-]
-
-recipe read-event [
-  default-space:address:array:location <- new location:type, 30:literal
-  x:address:console <- next-ingredient
-  {
-    break-unless x:address:console
-    idx:address:number <- get-address x:address:console/deref, index:offset
-    buf:address:array:event <- get x:address:console/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:console/same-as-ingredient:0, 1:literal/found, 1:literal/quit
-    }
-    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:console/same-as-ingredient:0, 1:literal/found, 0:literal/quit
-  }
-  # real event source is infrequent; avoid polling it too much
-  switch
-  result:event, found?:boolean <- check-for-interaction
-  reply result:event, x:address:console/same-as-ingredient:0, found?:boolean, 0:literal/quit
-]
-
-# variant of read-event for just keyboard events. Discards everything that
-# isn't unicode, so no arrow keys, page-up/page-down, etc. But you still get
-# newlines, tabs, ctrl-d..
-recipe read-key [
-  default-space:address:array:location <- new location:type, 30:literal
-#?   $print default-space:address:array:location #? 1
-#?   $exit #? 1
-#?   $start-tracing #? 1
-  console:address <- next-ingredient
-  x:event, console:address, found?:boolean, quit?:boolean <- read-event console:address
-#?   $print [aaa 1] #? 1
-  reply-if quit?:boolean, 0:literal, console:address/same-as-ingredient:0, found?:boolean, quit?:boolean
-#?   $print [aaa 2] #? 1
-  reply-unless found?:boolean, 0:literal, console:address/same-as-ingredient:0, found?:boolean, quit?:boolean
-#?   $print [aaa 3] #? 1
-  c:address:character <- maybe-convert x:event, text:variant
-  reply-unless c:address:character, 0:literal, console:address/same-as-ingredient:0, 0:literal/found, 0:literal/quit
-#?   $print [aaa 4] #? 1
-  reply c:address:character/deref, console:address/same-as-ingredient:0, 1:literal/found, 0:literal/quit
-]
-
-recipe send-keys-to-channel [
-  default-space:address:array:location <- new location:type, 30:literal
-  console:address <- next-ingredient
-  chan:address:channel <- next-ingredient
-  screen:address <- next-ingredient
-  {
-    c:character, console:address, found?:boolean, quit?:boolean <- read-key console:address
-    loop-unless found?:boolean
-    break-if quit?:boolean
-    assert c:character, [invalid event, expected text]
-    print-character screen:address, c:character
-    chan:address:channel <- write chan:address:channel, c:character
-    loop
-  }
-]
-
-recipe wait-for-event [
-  default-space:address:array:location <- new location:type, 30:literal
-  console:address <- next-ingredient
-  {
-    _, console:address, found?:boolean <- read-event console:address
-    loop-unless found?:boolean
-  }
-]