Litchi 处理不同平台的按键

文章讨论了在程序Litchi与Win32或GLFW库交互时面临的按键码不一致问题。提出了两种解决方案:1)编译时根据平台硬编码处理,效率高但影响序列化;2)创建转码函数,统一使用自定义按键码,虽然效率稍低,但增加了平台独立性和代码维护性。对于复杂程序,后者可能是更优选择。
摘要由CSDN通过智能技术生成

为什么要处理?

因为不同的库之间的按键码是不同的,如果自己写的重新需要与不同的库进行依赖与按键码的交互,那么就难免需要按键码的转换

怎么处理?

环境,我的程序Litchi需要同时间与Win32或GLFW库中的一个进行交互,Win32在Windows平台下进行交互,GLFW在Mac和Linux下进行交互

1:在编译时处理

我们可以用#ifdef语句来在特定的平台进行硬编码,将平台特定的按键码与不同的库进行绑定

这样效率虽然是最高的,但是会有缺陷,在序列化的时候就会受到影响,Window平台的数据加入需要想Mac平台进行,这时由于数据中的按键码不同,所以不同平台之间交互可能会有问题

2:创建一个转码函数

我们可以创建一个独属于自己程序的按键码,并写上自己的按键码转到不同平台的一个函数,这样的话就可以将依赖转到转码函数上了,而不是特定的平台,我们只要处理好了转码函数就行了;

比如我们在Litchi中运行时用的是自己的按键码,但是涉及到与库交互时我会使用转码函数进行转码后交互,这函数可能需要map或者set

这个解决方案的缺点是效率比较低,但是如果Litchi是一个复杂的程序,那么这点开销是微不足道的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值