Default drawing method for key. 

        Key is drawn as a simple rectangle filled using this
        cell style background color attribute. Key value is printed
        into drawn cell using internal font.

        :param surface: Surface background should be drawn in.
        :param key: Target key to be drawn.
        :param special: BOolean flag that indicates if the drawn key should use special background color if available.

def draw_character_key(self, surface, key, special=False):
        """Default drawing method for key. 

        Key is drawn as a simple rectangle filled using this
        cell style background color attribute. Key value is printed
        into drawn cell using internal font.

        :param surface: Surface background should be drawn in.
        :param key: Target key to be drawn.
        :param special: BOolean flag that indicates if the drawn key should use special background color if available.
        """
        background_color = self.key_background_color
        if special and self.special_key_background_color is not None:
            background_color = self.special_key_background_color
        pygame.draw.rect(surface, background_color[key.state], key.position + key.size)
        size = self.font.size(key.value)
        x = key.position[0] + ((key.size[0] - size[0]) / 2)
        y = key.position[1] + ((key.size[1] - size[1]) / 2)
        surface.blit(self.font.render(key.value, 1, self.text_color[key.state], None), (x, y))