# Path: AXUI/logger/logger.py
# LOGGER = logging.getLogger(logger_config.logger_name)


import re
import time
import ctypes
from AXUI.logger import LOGGER
            windows key+X   :       {LWIN+X}
            ctrl+shift+X    :       {CTRL+SHIFT+X}
            ctrl+(XYZ)      :       {CTRL+XYZ}
        '''
        #set focus before input keys
        self.UIElement.set_focus()
        
        #translate arguments to a string
        LOGGER.debug("Before translate, value: %s" , repr(values))
        string = ""
        for value in values:
            #value should only allow to be string or int
            if isinstance(value, int):
                translated_value = str(value)
                string += translated_value
            elif isinstance(value, str):
                if re.match("^{\+*}$", value) != None:
                    #for key combinations, we need to do some translation
                    #like "{CTRL+A}" to "^A", "{CTRL+SHIFT+B}" to "^+B"
                    keys = value.lstrip("{").rstrip("}").split("+")
                    for key in keys:
                        if key.upper() in self.key_combinations:
                            translated_value += self.key_combinations[key.upper()]
                        else:
                            translated_value += "("+key+")"
                else:
                    translated_value = value
                
                string += translated_value
            else:

# Path: AXUI/logger/logger.py
# LOGGER = logging.getLogger(logger_config.logger_name)


# Path: AXUI/driver/windows_driver/win32/keyboard.py
import re
import time
import ctypes
from AXUI.logger import LOGGER

            windows key+X   :       {LWIN+X}
            ctrl+shift+X    :       {CTRL+SHIFT+X}
            ctrl+(XYZ)      :       {CTRL+XYZ}
        '''
        #set focus before input keys
        self.UIElement.set_focus()
        
        #translate arguments to a string
        LOGGER.debug("Before translate, value: %s" , repr(values))
        string = ""
        for value in values:
            #value should only allow to be string or int
            if isinstance(value, int):
                translated_value = str(value)
                string += translated_value
            elif isinstance(value, str):
                if re.match("^{\+*}$", value) != None:
                    #for key combinations, we need to do some translation
                    #like "{CTRL+A}" to "^A", "{CTRL+SHIFT+B}" to "^+B"
                    keys = value.lstrip("{").rstrip("}").split("+")
                    for key in keys:
                        if key.upper() in self.key_combinations:
                            translated_value += self.key_combinations[key.upper()]
                        else:
                            translated_value += "("+key+")"
                else:
                    translated_value = value
                
                string += translated_value
            else:

                LOGGER.warning("keyboard input method arguments can only be string or int value, other value will be skipped")