游戏中的键盘输入(用于GLUT)

时间:2010-07-22 12:29:37

标签: opengl input keyboard

几乎每个游戏都使用键盘作为输入。我一直在搜索这个主题2天,发现了很多相关信息。键盘有许多缺点,但我发现的主要问题是不同的布局,其次,如果你按时按3键,可能会导致损坏(行列错误)。如果您不知道我在说什么,键盘将作为网格,并检查哪些行和列已连接。但如果按E,D(第1,2栏第3行) 和R(第1行,第4列),键盘甚至可以显示F,因为它发现它被按下(第2行,第4列都被按下)。

所以我认为我们不能对此做任何事情,但如果有人知道如何更好地解决它,那么使用不形成L的键,我会很高兴:)

但我的主要问题是不同的键盘布局,这真的很痛苦。我是斯洛伐克,所以斯洛伐克的数字布局看起来像这样: +ľščťžýáíé和班次1234567890,我们也有QWERTZ,但你可以使用QWERTY。 你们都知道英文的样子,但肯定是这样的: 1234567890并转移!@#$%^& *()

大部分时间我都在使用英语,因为我在编程时习惯了它。无论如何,有不同的人使用不同的布局。当您制作依赖于按下哪个键的游戏时,例如好的旧WASD模式,您不能在AZERTY布局的法语上使用它。这很奇怪。与使用数字在动作游戏中选择枪相同。正如你所看到的那样,斯洛伐克必须按下班次来实现它。

我也在使用OpeGL。映射按下哪些键时出现问题。例如,广泛使用的解决方案,为每个charakter制作256个bool的地图,正在遭受SHIFT。你按a,SHIFT并释放你得到的:a down,A up。所以我考虑将一些键绑定在一起,如A和a,1和!,但后来我意识到我只是改变布局,一切都错了。

那么解决方案是什么?我认为那里有人在游戏行业或制作一些游戏并且不得不解决这个问题。只有我想到的解决方案是强制UI的英文布局(并选择聊天布局)。

下次搜索后我找到了我需要的东西,但我需要跨平台的: virtual key codes

下一次搜索显示SDL key

结果:如果您去制作游戏,使用SFML或SDL

,请不要以GLUT开头

感谢所有人帮助我,在这个关键绑定/映射,SDL等想法中存在更多问题,每个都帮助了我很多。

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

通常的做法似乎是忽略这个问题。更糟糕的是它在早期阶段就更好了。

不幸的是我正在使用svorak键盘布局,所以它真的不适合我。

我一直在通过绑定到键盘上的多个键来解决同样的问题。这样玩家就可以从xj键跳转。对于不是射击游戏的游戏来说,它并没有做得那么好。

如果你能在键盘上找到row / col或一些附近的驱动程序接口,那就好了。

虽然我还没有看到类似的东西,但有些自动键盘配置软件会很整洁。也许我们应该写一个?

答案 2 :(得分:1)

答案 3 :(得分:0)

允许您的用户定义用于每个操作的密钥...

或使用箭头键..这应该非常普遍:)

答案 4 :(得分:0)

将键盘输入转换为元数据,这样您就可以允许用户随意配置,但也可以提供不同的键盘快捷键,具体取决于配置文件中使用的键盘布局。