struct shape_mapping { const char *name; int number; }; int cursor_shape_to_id(const char *name); %% X_cursor,0 arrow,1 based_arrow_down,2 based_arrow_up,3 boat,4 bogosity,5 bottom_left_corner,6 bottom_right_corner,7 bottom_side,8 bottom_tee,9 box_spiral,10 center_ptr,11 circle,12 clock,13 coffee_mug,14 cross,15 cross_reverse,16 crosshair,17 diamond_cross,18 dot,19 dotbox,20 double_arrow,21 draft_large,22 draft_small,23 draped_box,24 exchange,25 fleur,26 gobbler,27 gumby,28 hand1,29 hand2,30 heart,31 icon,32 iron_cross,33 left_ptr,34 left_side,35 left_tee,36 leftbutton,37 ll_angle,38 lr_angle,39 man,40 middlebutton,41 mouse,42 pencil,43 pirate,44 plus,45 question_arrow,46 right_ptr,47 right_side,48 right_tee,49 rightbutton,50 rtl_logo,51 sailboat,52 sb_down_arrow,53 sb_h_double_arrow,54 sb_left_arrow,55 sb_right_arrow,56 sb_up_arrow,57 sb_v_double_arrow,58 shuttle,59 sizing,60 spider,61 spraycan,62 star,63 target,64 tcross,65 top_left_arrow,66 top_left_corner,67 top_right_corner,68 top_side,69 top_tee,70 trek,71 ul_angle,72 umbrella,73 ur_angle,74 watch,75 xterm,76 %% int cursor_shape_to_id(const char *name) { struct shape_mapping *mapping = in_word_set(name, strlen(name)); return (mapping ? (mapping->number * 2) : -1); }