diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,14 @@
 Brick changelog
 ---------------
 
+0.41.1
+------
+
+New features:
+ * `Forms`: added `checkboxCustomField` and `radioCustomField` to permit
+   customization of characters used to draw selection state for such
+   fields.
+
 0.41
 ----
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.41
+version:             0.41.1
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
diff --git a/docs/guide.rst b/docs/guide.rst
--- a/docs/guide.rst
+++ b/docs/guide.rst
@@ -349,7 +349,7 @@
    main = do
        eventChan <- Brick.BChan.newBChan 10
        finalState <- customMain
-                       (Graphics.Vty.mkVty Data.Default.defaultConfig)
+                       (Graphics.Vty.mkVty Graphics.Vty.defaultConfig)
                        (Just eventChan) app initialState
        -- Use finalState and exit
 
diff --git a/src/Brick/Forms.hs b/src/Brick/Forms.hs
--- a/src/Brick/Forms.hs
+++ b/src/Brick/Forms.hs
@@ -70,6 +70,8 @@
 
   -- * Advanced form field constructors
   , editField
+  , radioCustomField
+  , checkboxCustomField
 
   -- * Attributes
   , formAttr
@@ -78,7 +80,7 @@
   )
 where
 
-import Graphics.Vty
+import Graphics.Vty hiding (showCursor)
 #if !(MIN_VERSION_base(4,11,0))
 import Data.Monoid
 #endif
@@ -88,6 +90,7 @@
 
 import Brick
 import Brick.Focus
+import Brick.Widgets.Core (showCursor)
 import Brick.Widgets.Edit
 import Brick.Widgets.List
 import qualified Data.Text.Zipper as Z
@@ -267,7 +270,31 @@
               -> s
               -- ^ The initial form state.
               -> FormFieldState s e n
-checkboxField stLens name label initialState =
+checkboxField = checkboxCustomField '[' 'X' ']'
+
+-- | A form field for manipulating a boolean value. This represents
+-- 'True' as @[X] label@ and 'False' as @[ ] label@. This function
+-- permits the customization of the @[X]@ notation characters.
+--
+-- This field responds to `Space` keypresses to toggle the checkbox and
+-- to mouse clicks.
+checkboxCustomField :: (Ord n, Show n)
+                    => Char
+                    -- ^ Left bracket character.
+                    -> Char
+                    -- ^ Checkmark character.
+                    -> Char
+                    -- ^ Right bracket character.
+                    -> Lens' s Bool
+                    -- ^ The state lens for this value.
+                    -> n
+                    -- ^ The resource name for the input field.
+                    -> T.Text
+                    -- ^ The label for the check box, to appear at its right.
+                    -> s
+                    -- ^ The initial form state.
+                    -> FormFieldState s e n
+checkboxCustomField lb check rb stLens name label initialState =
     let initVal = initialState ^. stLens
 
         handleEvent (MouseDown n _ _ _) s | n == name = return $ not s
@@ -276,7 +303,7 @@
 
     in FormFieldState { formFieldState        = initVal
                       , formFields            = [ FormField name Just True
-                                                            (renderCheckbox label name)
+                                                            (renderCheckbox lb check rb label name)
                                                             handleEvent
                                                 ]
                       , formFieldLens         = stLens
@@ -284,12 +311,14 @@
                       , formFieldConcat       = vBox
                       }
 
-renderCheckbox :: T.Text -> n -> Bool -> Bool -> Widget n
-renderCheckbox label n foc val =
+renderCheckbox :: Char -> Char -> Char -> T.Text -> n -> Bool -> Bool -> Widget n
+renderCheckbox lb check rb label n foc val =
     let addAttr = if foc then withDefAttr focusedFormInputAttr else id
+        csr = if foc then showCursor n (Location (1,0)) else id
     in clickable n $
-       addAttr $
-       (str $ "[" <> (if val then "X" else " ") <> "] ") <+> txt label
+       addAttr $ csr $
+       (txt $ T.singleton lb <> (if val then T.singleton check else " ") <>
+              T.singleton rb <> " ") <+> txt label
 
 -- | A form field for selecting a single choice from a set of possible
 -- choices in a scrollable list. This uses a 'List' internally.
@@ -349,7 +378,27 @@
            -> s
            -- ^ The initial form state.
            -> FormFieldState s e n
-radioField stLens options initialState =
+radioField = radioCustomField '[' '*' ']'
+
+-- | A form field for selecting a single choice from a set of possible
+-- choices. Each choice has an associated value and text label. This
+-- function permits the customization of the @[*]@ notation characters.
+--
+-- This field responds to `Space` keypresses to select a radio button
+-- option and to mouse clicks.
+radioCustomField :: (Ord n, Show n, Eq a)
+                 => Char
+                 -> Char
+                 -> Char
+                 -> Lens' s a
+                 -- ^ The state lens for this value.
+                 -> [(a, n, T.Text)]
+                 -- ^ The available choices, in order. Each choice has a value
+                 -- of type @a@, a resource name, and a text label.
+                 -> s
+                 -- ^ The initial form state.
+                 -> FormFieldState s e n
+radioCustomField lb check rb stLens options initialState =
     let initVal = initialState ^. stLens
 
         lookupOptionValue n =
@@ -370,7 +419,7 @@
             FormField name
                       Just
                       True
-                      (renderRadio val name label)
+                      (renderRadio lb check rb val name label)
                       (handleEvent val)
 
     in FormFieldState { formFieldState        = initVal
@@ -380,17 +429,18 @@
                       , formFieldConcat       = vBox
                       }
 
-renderRadio :: (Eq a) => a -> n -> T.Text -> Bool -> a -> Widget n
-renderRadio val name label foc cur =
+renderRadio :: (Eq a) => Char -> Char -> Char -> a -> n -> T.Text -> Bool -> a -> Widget n
+renderRadio lb check rb val name label foc cur =
     let addAttr = if foc
                   then withDefAttr focusedFormInputAttr
                   else id
         isSet = val == cur
+        csr = if foc then showCursor name (Location (1,0)) else id
     in clickable name $
-       addAttr $
-       hBox [ str "["
-            , str $ if isSet then "*" else " "
-            , txt $ "] " <> label
+       addAttr $ csr $
+       hBox [ txt $ T.singleton lb
+            , txt $ if isSet then T.singleton check else " "
+            , txt $ T.singleton rb <> " " <> label
             ]
 
 -- | A form field for using an editor to edit the text representation of
