let key_to_string (m, k) =
  let s = List.assoc k Configwin_keys.keysym_to_name in
  match m with
    [] -> s
  | _ ->
      let rec iter m s =
        match m with
          [] -> s
        | c :: m ->
            iter m ((
                    match c with
                      `CONTROL -> "C"
                    | `SHIFT -> "S"
                    | `LOCK -> "L"
                    | `MOD1 -> "A"
                    | `MOD2 -> "2"
                    | `MOD3 -> "3"
                    | `MOD4 -> "4"
                    | `MOD5 -> "5"
                    | _  -> raise Not_found
                   ) ^ s)
      in
      iter m ("-" ^ s)