对于我的女儿(11个月大),我目前正在开发一个程序,让她在我的笔记本电脑的键盘上打字(好吧,更多的是粉碎它)来娱乐她。 它已经非常好了,因为她和她的侄子(同龄)似乎喜欢它,我想也许其他孩子也可能。
我现在遇到的问题如下:当按下某个键时,屏幕上会显示一些内容。绘制图片的位置取决于键盘上键的物理位置。因此,我需要知道连接键盘的布局。目前我使用的是硬编码的en_US布局,但也许有一天会使用法国小孩想要使用它。
在linux上我可以使用LANG环境变量找到语言环境,我想我可以从xorg / x11文件下面的一些未记录的文件中检索布局。但是我正在寻找一个更便携的版本,它可以在发行版之间工作,但也可以在微软的Windows上运行,甚至可以在macos x上运行。
我当然用Google搜索,但找不到任何东西。那么有人知道C / C ++中的解决方案吗?如果它充满了#ifdef语句,可以在多个平台上运行,那么这不是问题。
答案 0 :(得分:1)
由于您已经在使用SDL,因此使用内置keyboard input handling功能是有意义的。这应该为您提供可能通过软件获得的所有信息(从键盘硬件提供的扫描码到基于当前键盘布局的semantic meaning of the pressed key)。
由于键盘制造商可以自由地构建键的任何物理布局(some keyboards do not have any keys at all),因此几乎不可能在所有键盘上获得按键的物理位置。并且由于通常只关注按键的含义,因此几乎没有用于开发这种库的用例。因此,我怀疑是否有任何库可以帮助您解决该特定问题。
正如一些评论者所提到的,我认为通过使用您可以使用SDL功能接收的扫描码值,您可以获得大多数键盘的良好解决方案。