fixed terminal problems in lyng CLI with new console support on linux
This commit is contained in:
1 parent
fd6d05d568
commit
2414da59a7
3 files changed
+127
-15
No files matched your search
@@ -17,6 +17,8 @@
|
||||
|
||||
package net.sergeych.lyngio.console
|
||||
|
||||
import kotlinx.cinterop.*
|
||||
import platform.posix.*
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
@@ -64,4 +66,41 @@ class LinuxPosixLyngConsoleTest {
|
||||
assertEquals("A", ev.key)
|
||||
assertTrue(ev.shift)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalForeignApi::class)
|
||||
@Test
|
||||
fun configuresRawModeReadSemantics() = memScoped {
|
||||
val attrs = alloc<termios>()
|
||||
attrs.c_iflag =
|
||||
BRKINT.convert<UInt>() or
|
||||
ICRNL.convert<UInt>() or
|
||||
INPCK.convert<UInt>() or
|
||||
ISTRIP.convert<UInt>() or
|
||||
IXON.convert<UInt>()
|
||||
attrs.c_oflag = OPOST.convert<UInt>()
|
||||
attrs.c_cflag = 0u
|
||||
attrs.c_lflag =
|
||||
ECHO.convert<UInt>() or
|
||||
ICANON.convert<UInt>() or
|
||||
IEXTEN.convert<UInt>() or
|
||||
ISIG.convert<UInt>()
|
||||
attrs.c_cc[VMIN] = 9u
|
||||
attrs.c_cc[VTIME] = 9u
|
||||
|
||||
configureRawInput(attrs)
|
||||
|
||||
assertEquals(0u, attrs.c_iflag and BRKINT.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_iflag and ICRNL.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_iflag and INPCK.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_iflag and ISTRIP.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_iflag and IXON.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_oflag and OPOST.convert<UInt>())
|
||||
assertEquals(CS8.convert<UInt>(), attrs.c_cflag and CS8.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_lflag and ECHO.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_lflag and ICANON.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_lflag and IEXTEN.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_lflag and ISIG.convert<UInt>())
|
||||
assertEquals(0u, attrs.c_cc[VMIN].toUInt())
|
||||
assertEquals(1u, attrs.c_cc[VTIME].toUInt())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user