gpt4 book ai didi

c - SDL 和 aalib : No SDL_KEYUP event?

转载 作者:太空狗 更新时间:2023-10-29 17:24:32 24 4
gpt4 key购买 nike

我有一个使用 SDL 的小项目,我正在尝试使用不同的可用驱动程序。我遇到了 aalib 驱动程序,我意识到 SDL_KEYUP 事件从未被调用过。

然而,这仅在特定条件下发生。使用 X 驱动程序时发送事件,但在控制台模式下使用时(即使用 Ctrl + Alt + F1)不发送。

这是测试这个的最小代码:

#include <SDL/SDL.h>
#include <stdio.h>

int main()
{
SDL_Init(0);
SDL_SetVideoMode(64, 64, 32, SDL_SWSURFACE);

while(1)
{
SDL_Event event;

while(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
printf("Key down: %d\n", event.key.keysym.sym);
else if(event.type == SDL_KEYUP)
printf("Key up: %d\n", event.key.keysym.sym);
else if(event.type == SDL_QUIT)
SDL_Quit();
}
}
}

然后,使用 aalib 运行它:

env SDL_VIDEODRIVER=aalib ./a.out

我的问题是:这是否被视为错误?还是 aalib 无法知道,因为控制台不会提供此信息?

如果 aalib 无法获得此信息,我觉得 SDL 无法为其所有驱动程序提供相同的功能是一种耻辱。

操作系统:FreeBSD 8.2

SDL 版本:1.2.14

最佳答案

TTY(例如控制台)根本不接收原始键盘事件;他们只收到一个“字符输入”事件。您可能会发现修改键(例如 shift)根本不会触发 SDL 事件,因为没有发送相应的字符。

这是 TTY 层的固有限制。 SDL 并不是真正的罪魁祸首。

关于c - SDL 和 aalib : No SDL_KEYUP event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com