Kotlin User Input Key Listener in der Konsole oder was anderes?

C

charly_

Gast
Hallo Zusammen,

ich habe ein einfaches Programm in Kotlin geschrieben. Es handelt sich um ein Sudoku-Solver.
Jetzt brauche ich noch ein user interface. Am liebsten in der Konsole, weil ich auf die Konsole stehe :D

Das funktioniert auch, wenn ich den input als line nehme:

Code:
while(true) {
    var n = readln().toInt()
    when (n) {
        1 -> println(";-)")
        2 -> println("...")
        else -> {break}
    }
}

Gibt es eine simple Moeglichkeit einfach nur die keys abzufangen? Quasi immer nach einer Taste, ohne immer "Enter" zu druecken.

Ich wuerde entweder gerne mit den Pfeiltasten durchs Sudoku navigieren oder halt mit "wasd"
Falls es in der Konsole nicht geht, was waere ein simpler weg um ein user interface entsprechend zu gestalten?

Danke fuer jeden Tipp!
 
Das Problem ist die Konsole. Sie wartet eben, bis du Enter drückst, um den Input Richtung Programm zu schicken (egal welche Sprache).

Du musst die Konsole in den raw-modus bringen. Siehe https://stackoverflow.com/questions...from-the-console-in-java-as-the-user-types-it

(hab übrigens auch nur nach "java console without enter" gegooglet)

Im SO-Thread wird für Unix noch "stty" genannt und darauf hingewiesen, dass die Lösung dafür, da es eben die Konsole des OS betrifft, plattformabhängig ist.

Edit: Die Antwort bezieht sich zwar auf Java, aber da Kotlin eine sehr hohe Interoperabilität zu Java hat, ist es derzeit oft leichter nach einer Java Lösung zu suchen und die dann auf Kotlin umzuschreiben.
 
Zurück
Oben