2007-08-22 07:52:33 +00:00
import sys , os
# load header
glfw = " src/engine/external/glfw/include/GL/glfw.h "
lines = [ line . strip ( ) for line in file ( glfw ) . readlines ( ) ]
# genereate keys.h file
2008-09-25 14:04:02 +00:00
f = file ( " src/engine/e_keys.h " , " w " )
2007-08-22 07:52:33 +00:00
2008-10-20 17:47:42 +00:00
keynames_sdl = [ ]
for i in range ( 0 , 512 ) :
keynames_sdl + = [ " & %d " % i ]
2007-08-22 07:52:33 +00:00
keynames = { }
KEY_MOUSE_FIRST = 256 + 128
2007-10-04 22:37:35 +00:00
KEY_MOUSE_WHEEL_DOWN = KEY_MOUSE_FIRST - 2
KEY_MOUSE_WHEEL_UP = KEY_MOUSE_FIRST - 1
2007-08-22 07:52:33 +00:00
print >> f , " #ifndef ENGINE_KEYS_H "
print >> f , " #define ENGINE_KEYS_H "
print >> f , ' /* AUTO GENERATED! DO NOT EDIT MANUALLY! */ '
print >> f , " enum "
print >> f , " { "
2008-10-20 17:47:42 +00:00
print >> f , " #ifdef CONFIG_NO_SDL "
2007-08-22 07:52:33 +00:00
# do keys
for line in lines :
if " GLFW_KEY " in line :
l = line . split ( )
key = l [ 1 ] . replace ( " GLFW_ " , " " ) . strip ( )
value = l [ 2 ] . replace ( " GLFW_ " , " " ) . strip ( )
# ignore special last key
if key == " KEY_LAST " :
continue
# print to file
print >> f , " \t %s = %s , " % ( key . upper ( ) , value )
2007-10-04 22:37:35 +00:00
# add to keynames
2007-08-22 07:52:33 +00:00
exec ( " %s = %s " % ( key , value ) )
exec ( " keynames[ %s ] = ' %s ' " % ( value , key ) )
# do mouse buttons
2007-10-04 22:37:35 +00:00
print >> f , " \t KEY_MOUSE_WHEEL_DOWN = %d , " % ( KEY_MOUSE_WHEEL_DOWN )
print >> f , " \t KEY_MOUSE_WHEEL_UP = %d , " % ( KEY_MOUSE_WHEEL_UP )
keynames [ KEY_MOUSE_WHEEL_DOWN ] = ' KEY_MOUSE_WHEEL_DOWN '
keynames [ KEY_MOUSE_WHEEL_UP ] = ' KEY_MOUSE_WHEEL_UP '
2007-08-22 07:52:33 +00:00
print >> f , " \t KEY_MOUSE_FIRST = %d , " % KEY_MOUSE_FIRST
for line in lines :
if " GLFW_MOUSE " in line and not " CURSOR " in line :
l = line . split ( )
key = l [ 1 ] . replace ( " GLFW_ " , " " ) . strip ( )
value = l [ 2 ] . replace ( " GLFW_ " , " " ) . strip ( )
if len ( key ) == len ( " MOUSE_BUTTON_X " ) : # only match MOUSE_X
key = " KEY_MOUSE_ " + key [ - 1 ]
value = " KEY_MOUSE_FIRST+ %s " % ( int ( key [ - 1 ] ) - 1 )
# print to file
print >> f , " \t %s = %s , " % ( key , value )
# add to keynames
exec ( " %s = %s " % ( key , value ) )
exec ( " keynames[ %s ] = ' %s ' " % ( value , key ) )
print >> f , " \t KEY_LAST "
2008-10-20 17:47:42 +00:00
print >> f , " #else "
highestid = 0
for line in open ( " scripts/SDL_keysym.h " ) :
l = line . strip ( ) . split ( " = " )
if len ( l ) == 2 and " SDLK_ " in line :
key = l [ 0 ] . strip ( ) . replace ( " SDLK_ " , " KEY_ " )
value = int ( l [ 1 ] . split ( " , " ) [ 0 ] . strip ( ) )
print >> f , " \t %s = %d , " % ( key , value )
keynames_sdl [ value ] = key . replace ( " KEY_ " , " " ) . lower ( )
if value > highestid :
highestid = value
print >> f , " \t KEY_MOUSE_1 = %d , " % ( highestid + 1 ) ; keynames_sdl [ highestid + 1 ] = " mouse1 "
print >> f , " \t KEY_MOUSE_2 = %d , " % ( highestid + 2 ) ; keynames_sdl [ highestid + 2 ] = " mouse2 "
print >> f , " \t KEY_MOUSE_3 = %d , " % ( highestid + 3 ) ; keynames_sdl [ highestid + 3 ] = " mouse3 "
print >> f , " \t KEY_MOUSE_4 = %d , " % ( highestid + 4 ) ; keynames_sdl [ highestid + 4 ] = " mouse4 "
print >> f , " \t KEY_MOUSE_5 = %d , " % ( highestid + 5 ) ; keynames_sdl [ highestid + 5 ] = " mouse5 "
print >> f , " \t KEY_MOUSE_6 = %d , " % ( highestid + 6 ) ; keynames_sdl [ highestid + 6 ] = " mouse6 "
print >> f , " \t KEY_MOUSE_7 = %d , " % ( highestid + 7 ) ; keynames_sdl [ highestid + 7 ] = " mouse7 "
print >> f , " \t KEY_MOUSE_8 = %d , " % ( highestid + 8 ) ; keynames_sdl [ highestid + 8 ] = " mouse8 "
print >> f , " \t KEY_MOUSE_WHEEL_UP = %d , " % ( highestid + 9 ) ; keynames_sdl [ highestid + 9 ] = " mousewheelup "
print >> f , " \t KEY_MOUSE_WHEEL_DOWN = %d , " % ( highestid + 10 ) ; keynames_sdl [ highestid + 10 ] = " mousewheeldown "
print >> f , " \t KEY_LAST, "
print >> f , " \t KEY_DEL=KEY_DELETE, "
print >> f , " \t KEY_ENTER=KEY_RETURN, "
print >> f , " \t KEY_KP_SUBTRACT=KEY_KP_MINUS, "
print >> f , " \t KEY_KP_ADD=KEY_KP_PLUS, "
print >> f , " \t KEY_ESC=KEY_ESCAPE "
print >> f , " #endif "
2007-08-22 07:52:33 +00:00
print >> f , " }; "
print >> f , " "
print >> f , " #endif "
# generate keynames.c file
2008-09-25 14:04:02 +00:00
f = file ( " src/engine/e_keynames.c " , " w " )
2007-08-22 07:52:33 +00:00
print >> f , ' /* AUTO GENERATED! DO NOT EDIT MANUALLY! */ '
print >> f , ' '
print >> f , " #include <string.h> "
print >> f , " "
print >> f , " static const char key_strings[512][16] = "
print >> f , " { "
2008-10-20 17:47:42 +00:00
print >> f , " #ifdef CONFIG_NO_SDL "
2007-08-22 07:52:33 +00:00
for i in range ( 0 , 512 ) :
2008-09-25 14:04:02 +00:00
n = " & %d " % i
2007-08-22 07:52:33 +00:00
if i > = 48 and i < = 57 or i > = 65 and i < = 90 :
n = chr ( i ) . lower ( )
elif i in keynames :
n = keynames [ i ] [ 4 : ] . lower ( ) . replace ( " _ " , " " )
print >> f , " \t \" %s \" , " % n
2008-10-20 17:47:42 +00:00
print >> f , " #else "
print >> f , " "
for n in keynames_sdl :
print >> f , ' \t " %s " , ' % n
2007-08-22 07:52:33 +00:00
2008-10-20 17:47:42 +00:00
print >> f , " #endif "
2007-08-22 07:52:33 +00:00
print >> f , " }; "
print >> f , " "
print >> f , " const char *inp_key_name(int k) { if (k >= 0 && k < 512) return key_strings[k]; else return key_strings[0]; } "
print >> f , " int inp_key_code(const char *key_name) { int i; if (!strcmp(key_name, \" -?- \" )) return -1; else for (i = 0; i < 512; i++) if (!strcmp(key_strings[i], key_name)) return i; return -1; } "
print >> f , " "
f . close ( )