我想从包含如下数据的文本文件中读取按钮映射:
DPAD_LEFT = 105
DPAD_RIGHT = 106
DPAD_UP = 103
DPAD_DOWN = 108
Run Code Online (Sandbox Code Playgroud)
正确的部分实际上是evdev键码(如中所定义<linux/input.h>).
这很难读,所以我希望能够有这样的文件:
DPAD_LEFT = KEY_LEFT
DPAD_RIGHT = KEY_RIGHT
DPAD_UP = KEY_UP
DPAD_DOWN = KEY_DOWN
Run Code Online (Sandbox Code Playgroud)
但我目前无法将它们转换回来:
char[256] keyname;
some_method_to_read(&keyname, "DPAD_LEFT");
//keyname now contains "KEY_LEFT"
Run Code Online (Sandbox Code Playgroud)
如何获取相应的密钥代码(例如105)?有没有标准的方法来做到这一点?
编辑:我现在能想到的唯一方法是复制我的源代码中的所有密钥代码并将它们放在数组或映射中,就像evtest实用程序一样.但是有很多密钥代码,这对我来说似乎有点过分.此外,这可能与<input/linux.h>某些时候定义的密钥代码不同步.
std::map<string, int> keynames;
#define MAP_KEYCODE(keycode) keynames[#keycode] = keycode
MAP_KEYCODE(KEY_LEFT);
MAP_KEYCODE(KEY_RIGHT);
MAP_KEYCODE(KEY_UP);
MAP_KEYCODE(KEY_DOWN);
// [...]
Run Code Online (Sandbox Code Playgroud) 考虑一个具有多语言支持的 python 包(使用gettext)。执行时如何将*.po文件*.mo即时编译为文件setup.py?我真的不想分发预编译*.mo文件。
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='tractorbeam',
version='0.1.0',
url='http://starfleet.org/tractorbeam/',
description='Pull beer out of the fridge while sitting on the couch.',
author='James T. Kirk',
author_email= 'jkirk@starfleet.org',
packages=['tractorbeam'],
package_data={
'tractorbeam': [
'locale/*.po',
'locale/*.mo', # How to compile on the fly?
]
},
install_requires=[
'requests'
]
)
Run Code Online (Sandbox Code Playgroud)
提前致谢!