标签: getch

什么等同于Linux中的getch()和getche()?

我无法在Linux中找到conio.h的等效头文件.

在Linux中有getch()&getche()function功能吗?

我想制作一个开关盒基本菜单,用户只需按一个键即可提供选项,并且应该向前移动过程.按下他的选择后,我不想让用户按ENTER键.

c linux getch getchar getc

57
推荐指数
4
解决办法
11万
查看次数

用于读取按键的Python方法?

我是Python的新手,我只是用Python创建了一个游戏和一个菜单.问题是,使用(raw_)input()要求我在每次按键后按Enter键,我想按下向下箭头将立即选择下一个菜单项,或者在游戏中向下移动.目前,它需要我喜欢键入"向下"然后按Enter键.我也做了很多研究,但我不想下载大型模块(例如pygame)来实现单个keyDown()方法.那么有什么更简单的方法,我找不到?

编辑: 刚刚发现可以解决这个问题msvcrt.getch().它不是keyDown(),但它有效.但是,我不知道如何使用它,这看起来很奇怪,这里有什么帮助吗?这就是我现在所得到的:

from msvcrt import getch
while True:
    key = getch()
    print(key)
Run Code Online (Sandbox Code Playgroud)

但是,它一直给我所有这些无意义的字节,例如,向下箭头是这样的:

b'\xe0'
b'P'
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用它们,我试图与chr()进行比较,甚至使用ord(),但不能真正进行任何比较.我想要做的基本上是这样的:

from msvcrt import getch
while True:
    key = getch()
    if key == escape:
        break
    elif key == downarrow:
        movedown()
    elif key == 'a':
        ...
Run Code Online (Sandbox Code Playgroud)

等等......有什么帮助吗?

python windows key getch keydown

44
推荐指数
2
解决办法
14万
查看次数

getch和箭头代码

我正在编写一个getch()用于扫描箭头键的程序.到目前为止我的代码是:

switch(getch()) {
    case 65:    // key up
        break;
    case 66:    // key down
        break;
    case 67:    // key right
        break;
    case 68:    // key left
        break;
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我按下'A','B','C''D'代码也将执行,因为65是十进制代码'A',等等.

有没有办法检查箭头键而不打电话给别人?

谢谢!

c character decimal getch arrow-keys

40
推荐指数
3
解决办法
11万
查看次数

如何在不按Enter的情况下获得单个角色?

如何在不按Enter键的情况下从终端获取单个键盘字符?我试过了Curses::getch,但这对我没用.

ruby getch

39
推荐指数
5
解决办法
2万
查看次数

非阻塞getch(),ncurses

我在使用ncurses的getch()来阻止时遇到了一些问题.默认操作似乎是非阻塞的(或者我错过了一些初始化)?我希望它像Windows中的getch()一样工作.我试过各种版本的

timeout(3000000);
nocbreak();
cbreak();
noraw();
etc...
Run Code Online (Sandbox Code Playgroud)

(不是所有的同时).WINDOW如果可能的话,我宁愿不(明确地)使用任何.一个while围绕残培环路(),检查特定的返回值是OK了.

linux g++ ncurses getch blocking

22
推荐指数
3
解决办法
5万
查看次数

如何在Linux中实现C的getch()函数?

在TurboC++中,我可以使用getch()函数conio.h.但是在Linux中,gcc没有提供conio.h.我怎样才能获得功能getch()

c gcc getch conio

17
推荐指数
3
解决办法
6万
查看次数

PyCharm:msvcrt.kbhit()和msvcrt.getch()不工作?

我试图在PyCharm中从控制台读取一个字符(不按回车键),但无济于事.函数会msvcrt.getch()停止代码,但不会对按键(甚至输入)作出反应,并且msvcrt.kbhit()始终返回0.例如,此代码不会打印任何内容:

import msvcrt
while 1:
    if msvcrt.kbhit():
        print 'reading'
print 'done'
Run Code Online (Sandbox Code Playgroud)

我使用的是Windows 7,PyCharm 3.4(闲置时也是如此).

怎么了?有没有其他方法可以在没有输入的情况下读取输入?

msvcrt getch pycharm kbhit

14
推荐指数
1
解决办法
2960
查看次数

用于Mac/Linux崩溃的Windows getch()相当于

我正在使用getch(),我的应用程序立即崩溃.包括做什么时:

int main()
{
    getch();
}
Run Code Online (Sandbox Code Playgroud)

我找不到链接,但据说问题是它需要关闭缓冲或这些线路上的一些奇怪的东西,我仍然希望cout与跨平台代码一起工作.

我被告知要使用std::cin.get(),但我希望应用程序在按下某个键时退出,而不是当用户输入一个字母或数字然后按回车键退出时.

这有什么功能吗?代码必须在Mac(我的操作系统)和Windows下运行.


链接/编译不是问题 ; 我<curses.h>使用时-lcurses在XCode中包含并链接<conio.h>.

c crash macos getch

11
推荐指数
1
解决办法
2万
查看次数

为什么getch()在按任意键之前返回?

int main(int argc, char *argv[], char *env[])
{
    printf("Press any key to exit.\n");
    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据手册页,

getch 应该等到按下任何键

...但实际上它在按任意键之前直接返回.(返回的值是-1).

为什么?


更新

我在Linux上.Press any key to exit.如果不使用,我该如何实施getch()

getchar() 只有在按Enter后才会返回,这不是我想要的.

c linux getch

10
推荐指数
2
解决办法
2万
查看次数

C在按键上退出无限循环

当按下某个键时,如何退出无限循环?目前我正在使用getch,但它会尽快开始阻止我的循环,因为没有更多的输入要读取.

c getch infinite-loop

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

getch ×10

c ×6

linux ×3

arrow-keys ×1

blocking ×1

character ×1

conio ×1

crash ×1

decimal ×1

g++ ×1

gcc ×1

getc ×1

getchar ×1

infinite-loop ×1

kbhit ×1

key ×1

keydown ×1

macos ×1

msvcrt ×1

ncurses ×1

pycharm ×1

python ×1

ruby ×1

windows ×1