Browse Source

Working testdoor with new go door go.

Steve Thielemann 2 years ago
parent
commit
8f94e350bd
2 changed files with 28 additions and 14 deletions
  1. 6 0
      testdoor/go.mod
  2. 22 14
      testdoor/testdoor.go

+ 6 - 0
testdoor/go.mod

@@ -7,3 +7,9 @@ replace red-green/door => ../door
 require red-green/door v0.0.0-00010101000000-000000000000
 
 require github.com/mitchellh/go-wordwrap v1.0.1
+
+require (
+	golang.org/x/sys v0.2.0 // indirect
+	golang.org/x/term v0.2.0 // indirect
+	golang.org/x/text v0.4.0 // indirect
+)

+ 22 - 14
testdoor/testdoor.go

@@ -31,27 +31,34 @@ func (d *door.Door) PressAKey() {
 
 func press_keys(d *door.Door) {
 	d.Write(door.Reset + door.CRNL + "Press some keys...")
-	var k int
-	for k != 0x0d {
-		k = d.Key()
-		if k == door.XKEY_MOUSE {
+	var r rune
+	var ex door.Extended
+	var err error
+
+	for (r != 0x0d) && (err == nil) {
+		r, ex, err = d.WaitKey(door.Inactivity)
+		if ex == door.MOUSE {
 			m, ok := d.GetMouse()
 			if ok {
 				// var m door.MouseInfo = door.Mouse
 				d.Write(fmt.Sprintf("M %d (%d,%d) ", m.Button, m.X, m.Y))
 			}
 		} else {
-			d.Write(fmt.Sprintf("%d (%x) ", k, k))
+			if ex == door.NOP {
+				d.Write(fmt.Sprintf("%d (%x) ", r, r))
+			} else {
+				d.Write(fmt.Sprintf("<%s> ", ex.String()))
+			}
 		}
 	}
 	d.Write(door.Reset + door.CRNL)
 }
 
-func press_a_key(d *door.Door) int {
+func press_a_key(d *door.Door) error {
 	d.Write(door.Reset + door.CRNL + "Press a key to continue...")
-	var k int = d.Key()
+	_, _, err := d.WaitKey(door.Inactivity)
 	d.Write(door.CRNL)
-	return k
+	return err
 }
 
 func about_test_door(d *door.Door) {
@@ -531,7 +538,7 @@ func width_demo(d *door.Door) {
 	d.Write(door.Reset + panel.GotoEnd())
 
 	// Pause for key
-	d.Key()
+	d.WaitKey(door.Inactivity)
 
 	panel.Lines = make([]door.Line, 0)
 	var background string = "BUGZ Test Door in GO "
@@ -550,7 +557,7 @@ func width_demo(d *door.Door) {
 		panel.Lines = append(panel.Lines, l)
 	}
 	d.Write(panel.Output())
-	d.Key()
+	d.WaitKey(door.Inactivity)
 }
 
 func panel_demo(d *door.Door) {
@@ -674,7 +681,8 @@ func main() {
 
 	// cterm.txt +687
 	// d.Write("\x1b[?9h") // enable mouse X10 support
-	d.Write("\x1b[?1000h") // enable any-event mouse
+	// d.Write("\x1b[?1000h") // enable any-event mouse
+	d.Write("\x1b[?1002h")
 	// 1006 does not work in xterm or syncterm.
 	press_keys(&d)
 	// press_a_key(&d)
@@ -751,14 +759,14 @@ func main() {
 
 	}
 
-	d.Write("\x1b[?1000l") // disable mouse
-
+	// d.Write("\x1b[?1000l") // disable mouse
+	d.Write("\x1b[?1002l")
 	d.Write(door.Reset + door.CRNL)
 
 	message = fmt.Sprintf("Returning to the %s BBS..."+door.CRNL, d.Config.BBSID)
 	d.Write(message)
 
-	d.WaitKey(1, 0)
+	d.WaitKey(time.Second)
 	left = d.TimeLeft()
 
 	ticker.Stop()