    (take 8 (cycle [(vec (take 8 (cycle '("#a3854b" "#d3d2cf"))))
                    (vec (take 8 (cycle '("#d3d2cf" "#a3854b"))))]))))
 
-(defonce highlight-color "#538ab5")
+(defonce init-selection-text
+  (let [keys (take 16 default-keybindings)
+        default-mapping (map vec
+                             (split-at
+                              (/ (count keys) 2) keys))]
+    (vec
+     (concat
+      (reverse
+       default-mapping)
+      (take 4 (cycle [(vec (take 8 (cycle '(""))))]))
+      default-mapping))))
 
 (defn string-mapping
   "given a list of rows and cols and a string list

    (filter #(not (out-of-board? %)) [[(+ row 2) col]])
    (filter #(not (out-of-board? %)) [[(- row 2) col]])))

(defn highlight-piece
  [[row col] color]
  (fn [state]
    (assoc-in state [:board row col :color] color)))

(defn highlight-possible-positions
  [positions color]
  (fn [state]
    (let [pos->str
          (map #(vector %1 %2)
               positions
               (map char
                    (range 97 123)))]
      (reduce
       (fn [hmap [[row col] char]]
         (assoc-in hmap [:board row col]
                   {:piece char :color color}))
       state
       pos->str))))

(defn handle-selection
  [pos turn]
  (comp
   (highlight-possible-positions
    (possible-placements pos turn) highlight-color)
   (highlight-piece pos highlight-color)))

(defn select-piece
  [state text-state [row col :as pos]]
  (swap! text-state
         assoc :move-to (vec (possible-placements pos (:turn state))))
  (swap! app-state (handle-selection pos (:turn state))))

(defn handle-text-input

        (string-mapping
         (range 6 8)
         (range 8)
         default-keybindings)
        init-black-bindings
        (string-mapping
         (reverse (range 2))
         (range 8)
         default-keybindings)]
      {:width 500
       :height 500
       :board
       (mapv
        (fn [row-pieces row-colors row-text]
          (mapv
           (fn [piece color text]
             {:piece piece
              :color color
              :text text})
           row-pieces row-colors row-text))
        init-pieces
        init-colors
        init-selection-text)     
       :string-map
       {:white init-white-bindings
        :black init-black-bindings}
       :turn :white}))

(defonce black #{\u265F \u265C \u265E \u265D \u265B \u265A})
