Move cursor with wasd keys
This commit is contained in:
parent
ca81c5a8cf
commit
ebf6b38a97
@ -36,8 +36,8 @@ func (e *editor) RefreshScreen() {
|
|||||||
ab.append(terminal.ResetCursor)
|
ab.append(terminal.ResetCursor)
|
||||||
|
|
||||||
e.drawRows(ab)
|
e.drawRows(ab)
|
||||||
|
ab.append(terminal.MoveCursor(e.cursor.x, e.cursor.y))
|
||||||
|
|
||||||
ab.append(terminal.ResetCursor)
|
|
||||||
ab.append(terminal.ShowCursor)
|
ab.append(terminal.ShowCursor)
|
||||||
|
|
||||||
terminal.Write(ab.toString())
|
terminal.Write(ab.toString())
|
||||||
@ -53,6 +53,13 @@ func (e *editor) ProcessKeypress() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch ch {
|
||||||
|
case 'w', 'a', 's', 'd':
|
||||||
|
e.moveCursor(ch)
|
||||||
|
default:
|
||||||
|
// Do nothing!
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,3 +94,16 @@ func (e *editor) drawRows(ab *buffer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *editor) moveCursor (key rune) {
|
||||||
|
switch key {
|
||||||
|
case 'a':
|
||||||
|
e.cursor.x -= 1
|
||||||
|
case 'd':
|
||||||
|
e.cursor.x += 1
|
||||||
|
case 'w':
|
||||||
|
e.cursor.y -= 1
|
||||||
|
case 's':
|
||||||
|
e.cursor.y += 1
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
// ANSI Terminal Escape Codes and helpers
|
||||||
package terminal
|
package terminal
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
@ -12,3 +13,13 @@ const ResetCursor = "\x1b[H"
|
|||||||
func Code (s string) string {
|
func Code (s string) string {
|
||||||
return fmt.Sprintf("\x1b[%s", s)
|
return fmt.Sprintf("\x1b[%s", s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Move the terminal cursor to the 0-based coordinate
|
||||||
|
func MoveCursor(x int, y int) string {
|
||||||
|
// Allow 0-based indexing, the terminal code is 1-based
|
||||||
|
x += 1
|
||||||
|
y += 1
|
||||||
|
|
||||||
|
return Code(fmt.Sprintf("%d;%dH", y, x))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user