swift - Xcode Swift 命令行工具从键盘读取 1 个字符而无需回显或需要按回车

标签 swift xcode terminal getch

<分区>

我需要一个函数,比如 Objective C 或 Swift 中的旧“getch()”,可以从键盘读取一个字符而不需要回显,并且不需要在键入字符后按回车键以使函数继续.

据我所知,这只有在对命令行工具进行编程时才有趣,可能是为了进行选择或编写编辑器。

最佳答案

这是用 Swift 编写的用于 Swift 的函数:

func GetKeyPress () -> Int
{
    var key: Int = 0
    var c: cc_t = 0
    var cct = (c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c) // Set of 20 Special Characters
    var oldt: termios = termios(c_iflag: 0, c_oflag: 0, c_cflag: 0, c_lflag: 0, c_cc: cct, c_ispeed: 0, c_ospeed: 0)

    tcgetattr(STDIN_FILENO, &oldt) // 1473
    var newt = oldt
    newt.c_lflag = 1217  // Reset ICANON and Echo off
    tcsetattr( STDIN_FILENO, TCSANOW, &newt)
    key = Int(getchar())  // works like "getch()"
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt)
    return key
}

关于swift - Xcode Swift 命令行工具从键盘读取 1 个字符而无需回显或需要按回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551321/

相关文章:

ios - 由于未捕获的异常 'NSInternalInconsistencyException' 错误而终止应用程序

perl - 使用 Term::Readline-readline 停止无限 while 循环的正确方法是什么?

ios - 为什么从 FileManager 数据初始化的 UIImages 有错误的比例?

swift - 将 MKMapRect.origin 转换为经度和纬度

ios - 编程的 UISlider 值未更改

iphone - paymentWithProductIdentifier 的替代解决方案是什么?

ios - 使用 UIGestureRecognizer 旋转瓶子

ios - 如何在 iOS 应用程序中按方案切换 Crashlytics 报告?

c++ - 如何在不重新打印的情况下更新终端中的打印消息

python - 如何在另一个目录中运行python脚本,而不将脚本写入磁盘?