几乎每个游戏都使用键盘作为输入设备。我已经在这个主题上搜索了两天,发现了很多相关资料。键盘有许多缺点,但我发现的主要问题是不同的布局和同时按下3个键可能会导致损坏(行列错误)。如果你不知道我在说什么,键盘是由网格制成的,它检查哪一行和哪一列已连接。但是,如果您按下E、D(第1行、第2列)和R(第1行、第4列),键盘甚至可以显示F,因为它发现F被按下(第2行、第4列都按下)。
所以我认为我们无法解决第二个问题,但如果有人有更好的解决方案,比如使用不形成L形的键,那就太好了 :)
但我的主要问题是不同的键盘布局,这真的很痛苦。我是斯洛伐克人,所以斯洛伐克数字键盘的布局如下: +ľščťžýáíé,按Shift键后是1234567890,我们也有QWERTZ,但你可以使用QWERTY。 大家都知道英语的布局是怎样的,但为了确保: 1234567890,按Shift键后是!@#$%^&*()
大部分时候我使用英文键盘,因为在编程时我已经习惯了它。但是不同的人使用不同的布局。当你制作依赖于按键的游戏,例如经典的WASD模式,你不能在法语布局下使用AZERTY布局,这会很奇怪。在动作游戏中使用数字选择枪支也是一样的道理。正如您所看到的,斯洛伐克人必须按shift才能使其正常工作。
我还使用OpeGL。当映射按下的键时存在问题。例如,广泛使用的解决方案是为每个字符制作256个bools的地图,但会受到SHIFT的影响。你按下a、SHIFT并释放a,你得到:a down、A up。因此,我考虑绑定一些键在一起,例如A和a,1和!,但后来我意识到我只是改变了布局,而一切都错了。
那么解决办法是什么呢?我认为有人在游戏行业或制作游戏时不得不解决这个问题。我唯一想到的解决办法是强制在UI中使用英文布局(在聊天中选择布局)。
所以我认为我们无法解决第二个问题,但如果有人有更好的解决方案,比如使用不形成L形的键,那就太好了 :)
但我的主要问题是不同的键盘布局,这真的很痛苦。我是斯洛伐克人,所以斯洛伐克数字键盘的布局如下: +ľščťžýáíé,按Shift键后是1234567890,我们也有QWERTZ,但你可以使用QWERTY。 大家都知道英语的布局是怎样的,但为了确保: 1234567890,按Shift键后是!@#$%^&*()
大部分时候我使用英文键盘,因为在编程时我已经习惯了它。但是不同的人使用不同的布局。当你制作依赖于按键的游戏,例如经典的WASD模式,你不能在法语布局下使用AZERTY布局,这会很奇怪。在动作游戏中使用数字选择枪支也是一样的道理。正如您所看到的,斯洛伐克人必须按shift才能使其正常工作。
我还使用OpeGL。当映射按下的键时存在问题。例如,广泛使用的解决方案是为每个字符制作256个bools的地图,但会受到SHIFT的影响。你按下a、SHIFT并释放a,你得到:a down、A up。因此,我考虑绑定一些键在一起,例如A和a,1和!,但后来我意识到我只是改变了布局,而一切都错了。
那么解决办法是什么呢?我认为有人在游戏行业或制作游戏时不得不解决这个问题。我唯一想到的解决办法是强制在UI中使用英文布局(在聊天中选择布局)。
在接下来的搜索中,我找到了需要的内容,但我需要跨平台的: 虚拟键码
接下来的搜索揭示了SDL键
结果:如果你要制作游戏,千万不要使用GLUT,使用SFML或SDL
感谢大家的帮助,这个问题还涉及到按键绑定/映射、SDL等方面,每一个都给了我很大的帮助。