1#! /bin/sh 2# 3# $OpenBSD: mkkeysym.sh,v 1.2 2010/06/28 20:40:39 maja Exp $ 4# $NetBSD: mkkeysym.sh 1.1 1998/12/28 14:01:17 hannken Exp $ 5# 6# Build a table of keysyms from a file describing keysyms as: 7# 8# /*BEGINKEYSYMDECL*/ 9# #define KS_name 0xval 10# ... 11# /*ENDKEYSYMDECL*/ 12# 13 14AWK=${AWK:-awk} 15 16${AWK} ' 17BEGIN { 18 in_decl = 0; 19 printf("/* DO NOT EDIT: AUTOMATICALLY GENERATED FROM '$1' */\n\n"); 20 printf("#define\tKEYSYM_ENC_ISO\t0\n"); 21 printf("#define\tKEYSYM_ENC_L2\t1\n"); 22 printf("#define\tKEYSYM_ENC_L5\t2\n"); 23 printf("#define\tKEYSYM_ENC_L7\t3\n"); 24 printf("#define\tKEYSYM_ENC_KOI\t4\n\n"); 25 printf("struct ksym {\n\tchar *name;\n\tint value;\n\tint enc;\n};\n\n"); 26 printf("struct ksym ksym_tab_by_name[] = {\n"); 27} 28 29END { 30 printf("};\n"); 31} 32 33$1 == "/*BEGINKEYSYMDECL*/" { 34 in_decl = 1; 35} 36 37$1 == "/*ENDKEYSYMDECL*/" { 38 in_decl = 0; 39} 40 41$1 ~ /^#[ ]*define/ && $2 ~ /^KS_/ && $3 ~ /^0x[0-9a-f]*/ { 42 if (in_decl) { 43 enc="KEYSYM_ENC_ISO" 44 if ($2 ~ /^KS_L2_/) { enc="KEYSYM_ENC_L2" } 45 if ($2 ~ /^KS_L5_/) { enc="KEYSYM_ENC_L5" } 46 if ($2 ~ /^KS_L7_/) { enc="KEYSYM_ENC_L7" } 47 if ($2 ~ /^KS_Cyrillic_/) { enc="KEYSYM_ENC_KOI" } 48 printf("\t{ \"%s\", %s, %s },\n", substr($2, 4), $3, enc); 49 } 50}' $1 51