Best Python code snippet using fMBT_python
fmbttizen-agent.py
Source:fmbttizen-agent.py  
...380           ':': "colon", ';': "semicolon", '<': "less", '=': "equal",381           '>': "greater", '?': "question", '@': "at",382           '_': "underscore"}383    return c2s.get(c, c)384def specialCharToUsKeys(c):385    # character -> ([modifier, [modifier...]] keycode)386    c2s = {'\n': ("KEY_ENTER",),387           ' ': ("KEY_SPACE",),388           '`': ("KEY_GRAVE",),      '~': ("KEY_LEFTSHIFT", "KEY_GRAVE"),389           '!': ("KEY_LEFTSHIFT", "KEY_1"),390           '@': ("KEY_LEFTSHIFT", "KEY_2"),391           '#': ("KEY_LEFTSHIFT", "KEY_3"),392           '$': ("KEY_LEFTSHIFT", "KEY_4"),393           '%': ("KEY_LEFTSHIFT", "KEY_5"),394           '^': ("KEY_LEFTSHIFT", "KEY_6"),395           '&': ("KEY_LEFTSHIFT", "KEY_7"),396           '*': ("KEY_LEFTSHIFT", "KEY_8"),397           '(': ("KEY_LEFTSHIFT", "KEY_9"),398           ')': ("KEY_LEFTSHIFT", "KEY_0"),399           '-': ("KEY_MINUS",),      '_': ("KEY_LEFTSHIFT", "KEY_MINUS"),400           '=': ("KEY_EQUAL",),      '+': ("KEY_LEFTSHIFT", "KEY_EQUAL"),401           '\t': ("KEY_TAB",),402           '[': ("KEY_LEFTBRACE",),  '{': ("KEY_LEFTSHIFT", "KEY_LEFTBRACE"),403           ']': ("KEY_RIGHTBRACE",), '}': ("KEY_LEFTSHIFT", "KEY_RIGHTBRACE"),404           ';': ("KEY_SEMICOLON",),  ':': ("KEY_LEFTSHIFT", "KEY_SEMICOLON"),405           "'": ("KEY_APOSTROPHE",), '"': ("KEY_LEFTSHIFT", "KEY_APOSTROPHE"),406           '\\': ("KEY_BACKSLASH",), '|': ("KEY_LEFTSHIFT", "KEY_BACKSLASH"),407           ',': ("KEY_COMMA",),      '<': ("KEY_LEFTSHIFT", "KEY_COMMA"),408           '.': ("KEY_DOT",),        '>': ("KEY_LEFTSHIFT", "KEY_DOT"),409           '/': ("KEY_SLASH",),      '?': ("KEY_LEFTSHIFT", "KEY_SLASH"),410    }411    return c2s.get(c, c)412mtEvents = {} # slot -> (tracking_id, x, y)413def inputEventSend(inputDevFd, eventType, event, param):414    t = time.time()415    tsec = int(t)416    tusec = int(1000000*(t-tsec))417    os.write(inputDevFd, struct.pack(_input_event,418        tsec, tusec, eventType, event, param))419def mtEventSend(eventType, event, param):420    """multitouch device event"""421    return inputEventSend(mtInputDevFd, eventType, event, param)422def mtGestureStart(x, y):423    mtGestureStart.trackingId += 1424    trackingId = mtGestureStart.trackingId425    for freeSlot in xrange(16):426        if not freeSlot in mtEvents: break427    else: raise ValueError("No free multitouch event slots available")428    mtEvents[freeSlot] = [trackingId, x, y]429    mtEventSend(_EV_ABS, _ABS_MT_SLOT, freeSlot)430    mtEventSend(_EV_ABS, _ABS_MT_TRACKING_ID, trackingId)431    mtEventSend(_EV_ABS, _ABS_MT_POSITION_X, x)432    mtEventSend(_EV_ABS, _ABS_MT_POSITION_Y, y)433    mtEventSend(_EV_ABS, _ABS_X, x)434    mtEventSend(_EV_ABS, _ABS_Y, y)435    mtEventSend(0, 0, 0) # SYNC436    return freeSlot437mtGestureStart.trackingId = 0438def mtGestureMove(slot, x, y):439    if x == mtEvents[slot][1] and y == mtEvents[slot][2]: return440    mtEventSend(_EV_ABS, _ABS_MT_SLOT, slot)441    mtEventSend(_EV_ABS, _ABS_MT_TRACKING_ID, mtEvents[slot][0])442    if x != mtEvents[slot][1] and 0 <= x <= root_width:443        mtEventSend(_EV_ABS, _ABS_MT_POSITION_X, x)444        mtEvents[slot][1] = x445    if y != mtEvents[slot][2] and 0 <= y <= root_height:446        mtEventSend(_EV_ABS, _ABS_MT_POSITION_Y, y)447        mtEvents[slot][2] = y448    if 0 <= x <= root_width:449        mtEventSend(_EV_ABS, _ABS_X, x)450    if 0 <= y <= root_height:451        mtEventSend(_EV_ABS, _ABS_Y, y)452    mtEventSend(0, 0, 0)453def mtGestureEnd(slot):454    mtEventSend(_EV_ABS, _ABS_MT_SLOT, slot)455    mtEventSend(_EV_ABS, _ABS_MT_TRACKING_ID, -1)456    mtEventSend(0, 0, 0) # SYNC457    del mtEvents[slot]458def mtLinearGesture(listOfStartEndPoints, duration, movePoints, sleepBeforeMove=0, sleepAfterMove=0):459    # listOfStartEndPoints: [ [(finger1startX, finger1startY), (finger1endX, finger1endY)],460    #                         [(finger2startX, finger2startY), (finger2endX, finger2endY)], ...]461    startPoints = [startEnd[0] for startEnd in listOfStartEndPoints]462    xDist = [startEnd[1][0] - startEnd[0][0] for startEnd in listOfStartEndPoints]463    yDist = [startEnd[1][1] - startEnd[0][1] for startEnd in listOfStartEndPoints]464    movePointsF = float(movePoints)465    fingers = []466    for (x, y) in startPoints:467        fingers.append(mtGestureStart(x, y))468    if sleepBeforeMove > 0: time.sleep(sleepBeforeMove)469    if movePoints > 0:470        intermediateSleep = float(duration) / movePoints471        for i in xrange(1, movePoints + 1):472            if intermediateSleep > 0:473                time.sleep(intermediateSleep)474            for fingerIndex, finger in enumerate(fingers):475                mtGestureMove(finger,476                              startPoints[fingerIndex][0] + int(xDist[fingerIndex]*i/movePointsF),477                              startPoints[fingerIndex][1] + int(yDist[fingerIndex]*i/movePointsF))478    if sleepAfterMove > 0: time.sleep(sleepAfterMove)479    for finger in fingers:480        mtGestureEnd(finger)481    return True, None482def typeCharX(origChar):483    modifiers = []484    c         = specialCharToXString(origChar)485    keysym    = libX11.XStringToKeysym(c)486    if keysym == NoSymbol:487        return False488    keycode   = libX11.XKeysymToKeycode(display, keysym)489    first = (keycode - cMinKeycode.value) * cKeysymsPerKeycode.value490    try:491        if chr(keysyms[first + 1]) == origChar:492            modifiers.append(shiftModifier)493    except ValueError: pass494    for m in modifiers:495        libXtst.XTestFakeKeyEvent(display, m, X_True, X_CurrentTime)496    libXtst.XTestFakeKeyEvent(display, keycode, X_True, X_CurrentTime)497    libXtst.XTestFakeKeyEvent(display, keycode, X_False, X_CurrentTime)498    for m in modifiers[::-1]:499        libXtst.XTestFakeKeyEvent(display, m, X_False, X_CurrentTime)500    return True501def typeCharHw(origChar):502    for c in origChar:503        modifiers = []504        keyCode = None505        c = specialCharToUsKeys(c)506        if isinstance(c, tuple):507            modifiers = c[:-1]508            keyCode = c[-1]509        elif c in string.uppercase:510            modifiers = ["KEY_LEFTSHIFT"]511            keyCode = "KEY_" + c512        elif c in string.lowercase or c in string.digits:513            keyCode = "KEY_" + c.upper()514        else:515            # do not know how to type the character516            pass517        if keyCode:518            for m in modifiers:519                keyboard_device.press(m)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
