How to use enable_cursor method in tox

Best Python code snippet using tox_python

stages.py

Source:stages.py Github

copy

Full Screen

...37 while True:38 fb.draw_icon(image_to_text(f'resource/selecao/0.png', fb.ico_buf_size))39 fb.draw_text("Primeiro, me diga o nome do aventureiro")40 fb.update_screen()41 fb.enable_cursor()42 nome = input("Digite o nome do aventureiro: ").capitalize()43 fb.disable_cursor()44 if not nome: # Se o nome estiver vazio45 fb.draw_text("JÁ VIU ALGUÉM COM O NOME VAZIO?")46 fb.update_screen()47 sleep(1)48 continue49 if nome in jogador.mortos: # Verifica se o personagem "nome" está morto ou não50 fb.draw_text(f"{nome} morreu. Quem sabe onde está o corpo dele?")51 fb.update_screen()52 sleep(3)53 else:54 jogador.nome = nome55 break56 # Pergunta a idade57 while True:58 fb.draw_icon(image_to_text(f'resource/selecao/1.png', fb.ico_buf_size))59 fb.draw_text(f"Quantos anos {jogador.nome} tem?")60 fb.update_screen()61 fb.enable_cursor()62 idade = input("Digite sua idade: ")63 fb.disable_cursor()64 # Checa se a idade é um número, e se ela está entre 6 e 10065 if not idade.isdecimal() or not idade or int(idade) < 6 or int(idade) > 100:66 fb.draw_text("Tá achando que eu nasci ontem?")67 fb.update_screen()68 sleep(1)69 else:70 jogador.idade = idade71 break72 # Pergunta para propósitos questionáveis73 while True:74 fb.draw_icon(image_to_text(f'resource/selecao/2.png', fb.ico_buf_size))75 fb.draw_text("Já jogou algum outro adventure na vida?" + 76 " (Só pra saber mesmo, não vai mudar nada no gameplay)")77 fb.update_screen()78 fb.enable_cursor()79 resposta = input("Responda com sim/não: ").lower()80 fb.disable_cursor()81 if not resposta or resposta[0] != "s" and resposta[0] != "n":82 fb.draw_text("Não é porque não vai mudar nada que tu não tem que responder")83 fb.update_screen()84 sleep(1)85 else:86 jogador.experiente = True if resposta[0] == 's' else False87 break88 # Pré-cache da animação do fim da tela89 animacao_fim = []90 for i in range(3, 16):91 animacao_fim.append(image_to_text(f'resource/selecao/{i}.png', 92 fb.ico_buf_size))93 # Executa a animacao94 for frame in animacao_fim:95 fb.draw_icon(frame)96 fb.update_screen()97 sleep(0.1)98 return apresentacao_1 # Próxima tela99def apresentacao_1(jogador, fb, player):100 fb.clear_buffers()101 # Pré-cache102 animacao_1 = [] # Cutscene de apresentação103 animacao_jungle = [] # Cutscende da jungle104 animacao_2 = [] # Cutscene do tesouro105 animacao_inicio = [] # Cutscene repetida do início106 for i in range(10): 107 animacao_1.append(image_to_text(f"resource/apresentacao_1/{i}.png", fb.ico_buf_size))108 109 for i in range(7):110 animacao_jungle.append(image_to_text(f"resource/apresentacao_2/{i}.png", fb.ico_buf_size))111 for i in range(29):112 animacao_2.append(image_to_text(f"resource/apresentacao_3/{i}.png", fb.ico_buf_size))113 for i in range(0, 53, 2): # 2 = frameskip114 animacao_inicio.append(image_to_text(f'resource/abertura/{i}.png', fb.ico_buf_size))115 # Inicio da apresentação116 fb.draw_text(f"Você é {jogador.nome}, um explorador de {jogador.idade} anos.")117 for frame in animacao_1: # Mostra as imagens na tela118 fb.draw_icon(frame)119 fb.update_screen()120 sleep(0.3)121 sleep(1)122 fb.draw_text("Ao longo da vida, você explorou várias cavernas e templos escondidos pelo mundo")123 124 for frame in animacao_jungle:125 fb.draw_icon(frame)126 fb.update_screen()127 sleep(0.5)128 sleep(1)129 130 fb.draw_text("Sempre achando tesouros poderosos antes perdidos")131 for frame in animacao_2:132 fb.draw_icon(frame)133 fb.update_screen()134 sleep(0.1)135 sleep(1)136 137 fb.clear_icon_buffer() # Tamanho diferentes das imagens = limpa o buffer antes138 fb.draw_text(f"Um dia {jogador.nome} acha um templo diferente")139 for frame in animacao_inicio:140 fb.draw_icon(frame)141 fb.update_screen()142 sleep(0.1)143 input("Digite enter para continuar")144 return solo145def solo(info, fb, player):146 fb.clear_buffers()147 solo_bg = image_to_text(f"resource/bg/solo.png", 148 fb.ico_buf_size)149 # Reinicia o player150 player.cur_orientation = 0151 player.sprite_x = 0152 player.bg_size = (len(solo_bg[0]), len(solo_bg))153 player.get_sprites()154 # Desenha os itens da tela155 fb.draw_text(f"{info.nome} entra no primeiro 'andar' do terreno," +156 "e se depara com um vaso de planta, um quadro e uma porta")157 fb.draw_icon(solo_bg)158 fb.draw_icon(player.draw(), True)159 fb.update_screen()160 fb.draw_text(f"O que {info.nome} deve fazer?")161 while True:162 fb.update_screen()163 # Liga o cursor, pergunta e desabilita logo em seguida164 fb.enable_cursor()165 resposta = input("Digite a próxima ação(Observar/Pegar/Andar até/Ajuda/Lista): ").lower().split()166 fb.disable_cursor()167 if len(resposta) == 0:168 continue169 # Verifica todos os argumentos170 if resposta[0] == "observar":171 if len(resposta) > 1:172 if resposta[1] == "vaso":173 fb.draw_text("Um vaso de planta estranho")174 elif resposta[1] == "rachadura":175 fb.draw_text("Uma rachadura na parede")176 elif resposta[1] == "quadro":177 fb.draw_text("Uma pintura. Não me é estranha")178 elif resposta[1] == "porta":179 fb.draw_text("Acho que é a próxima sala")180 else:181 fb.draw_text(f"{resposta[1]}? Nem sei o que é isso")182 else:183 fb.draw_text("É pra observar o quê?. Tá com dificuldade? Digita ajuda")184 elif resposta[0] == "pegar":185 if len(resposta) > 1:186 if resposta[1] == "vaso":187 return solo_pegar_vaso188 elif resposta[1] == "rachadura":189 fb.draw_text("Como se pega uma rachadura?")190 elif resposta[1] == "quadro":191 # Move o player para onde o quadro está192 player.moveTo_x = 73193 while not player.walk_loop_completed():194 fb.draw_icon(solo_bg)195 fb.draw_icon(player.draw(), True)196 fb.update_screen()197 sleep(0.1)198 fb.draw_text("Parece caro.")199 elif resposta[1] == "porta":200 fb.draw_text("Como se pega uma porta?")201 else:202 fb.draw_text("Sei lá o que é isso")203 else:204 fb.draw_text("É pra pegar o que?")205 elif resposta[0] == "andar":206 # Move o player para onde o item está207 if len(resposta) > 2:208 if resposta[2] == "vaso":209 player.moveTo_x = 28210 while not player.walk_loop_completed():211 fb.draw_icon(solo_bg)212 fb.draw_icon(player.draw(), True)213 fb.update_screen()214 sleep(0.1)215 elif resposta[2] == "rachadura":216 player.moveTo_x = 48217 while not player.walk_loop_completed():218 fb.draw_icon(solo_bg)219 fb.draw_icon(player.draw(), True)220 fb.update_screen()221 sleep(0.1)222 elif resposta[2] == "quadro":223 player.moveTo_x = 73224 while not player.walk_loop_completed():225 fb.draw_icon(solo_bg)226 fb.draw_icon(player.draw(), True)227 fb.update_screen()228 sleep(0.1)229 elif resposta[2] == "porta":230 player.moveTo_x = 90231 while not player.walk_loop_completed():232 fb.draw_icon(solo_bg)233 fb.draw_icon(player.draw(), True)234 fb.update_screen()235 sleep(0.1)236 # Entra na porta237 return puzzle_portas_1238 else:239 fb.draw_text("Andar até onde?")240 elif resposta[0] == "ajuda":241 fb.draw_text("Digite Observar <local>; Digite Pegar <local>; Digite Andar <local>;")242 fb.update_screen()243 sleep(2)244 fb.draw_text("Digite lista pra ver uma lista de itens que estão na tela")245 elif resposta[0] == "lista":246 fb.draw_text("Vaso | Rachadura | Quadro | Porta")247 else:248 fb.draw_text("Digite alguma coisa")249def solo_pegar_vaso(info, fb, player):250 solo_bg = image_to_text(f"resource/bg/solo.png", fb.ico_buf_size)251 # Pré-cache da animação252 animacao_vaso = []253 for i in range(10):254 animacao_vaso.append(image_to_text(f"resource/animacoes/vaso{i}.png", 255 fb.ico_buf_size))256 fb.draw_icon(solo_bg)257 # Anda até onde o vaso está.258 player.moveTo_x = 28259 while not player.walk_loop_completed():260 fb.draw_icon(solo_bg)261 fb.draw_icon(player.draw(), True)262 fb.update_screen()263 sleep(0.1)264 # Executa a animação da cobra265 for frame in animacao_vaso:266 fb.draw_icon(frame)267 fb.draw_icon(player.draw(), True)268 fb.update_screen()269 sleep(0.1)270 271 info.mortos.append(info.nome)272 fb.draw_text( "Não era uma planta, e sim uma cobra! " +273 f"{info.nome} infelizmente não resistiu.")274 fb.update_screen()275 input("Pressione enter para voltar pro menu principal")276 return menu_principal277def puzzle_portas_1(info, fb, player):278 fb.clear_buffers()279 andar_2_bg = image_to_text("resource/bg/portas_puzzle0.png",280 fb.ico_buf_size)281 # Reinicia o player282 player.bg_size = (len(andar_2_bg[0]), len(andar_2_bg))283 player.get_sprites()284 player.sprite_x = 0285 # Desenha na tela286 fb.draw_text(f"{info.nome} encontra uma bifurcação")287 fb.draw_icon(andar_2_bg)288 fb.draw_icon(player.draw(), True)289 while True:290 fb.update_screen()291 # Pergunta292 fb.enable_cursor()293 resposta = input(f"Para onde {info.nome} deve ir? [esquerda/direita] ").lower()294 fb.disable_cursor()295 # Verifica os argumentos296 if resposta == "esquerda":297 player.moveTo_x = 30298 while not player.walk_loop_completed():299 fb.draw_icon(andar_2_bg)300 fb.draw_icon(player.draw(), True)301 fb.update_screen()302 sleep(0.1)303 return puzzle_portas_2304 elif resposta == "direita":305 player.moveTo_x = 59306 while not player.walk_loop_completed():307 fb.draw_icon(andar_2_bg)308 fb.draw_icon(player.draw(), True)309 fb.update_screen()310 sleep(0.1)311 # Reinicia o puzzle312 return puzzle_portas_1313def puzzle_portas_2(info, fb, player):314 fb.clear_buffers()315 andar_2_bg = image_to_text("resource/bg/portas_puzzle1.png", fb.ico_buf_size)316 # Reinicia o player317 player.bg_size = (len(andar_2_bg[0]), len(andar_2_bg))318 player.get_sprites()319 player.sprite_x = 0320 fb.draw_text(f"{info.nome} encontra outra bifurcação")321 fb.draw_icon(andar_2_bg)322 fb.draw_icon(player.draw(), True)323 while True:324 fb.update_screen()325 # Pergunta326 fb.enable_cursor()327 resposta = input(f"Para onde {info.nome} deve ir? [esquerda/direita] ").lower()328 fb.disable_cursor()329 # Verifica os argumentos330 if resposta == "esquerda":331 player.moveTo_x = 30332 while not player.walk_loop_completed():333 fb.draw_icon(andar_2_bg)334 fb.draw_icon(player.draw(), True)335 fb.update_screen()336 sleep(0.1)337 # Reinicia o puzzle338 return puzzle_portas_1339 elif resposta == "direita":340 player.moveTo_x = 59341 while not player.walk_loop_completed():342 fb.draw_icon(andar_2_bg)343 fb.draw_icon(player.draw(), True)344 fb.update_screen()345 sleep(0.1)346 # Prossegue347 return puzzle_portas_3348def puzzle_portas_3(info, fb, player):349 fb.clear_buffers()350 andar_2_bg = image_to_text("resource/bg/portas_puzzle2.png", fb.ico_buf_size)351 # Reinicia o player352 player.bg_size = (len(andar_2_bg[0]), len(andar_2_bg))353 player.get_sprites()354 player.sprite_x = 0355 fb.draw_text(f"{info.nome} agora encontra uma trifurcação. Já viu se essas portas matassem?")356 fb.draw_icon(andar_2_bg)357 fb.draw_icon(player.draw(), True)358 while True:359 fb.update_screen()360 # Pergunta361 fb.enable_cursor()362 resposta = input(f"Para onde {info.nome} deve ir? [esquerda/centro/direita] ").lower()363 fb.disable_cursor()364 if resposta == "esquerda":365 player.moveTo_x = 30366 while not player.walk_loop_completed():367 fb.draw_icon(andar_2_bg)368 fb.draw_icon(player.draw(), True)369 fb.update_screen()370 sleep(0.1)371 # Reinicia372 return puzzle_portas_1373 elif resposta == "centro":374 player.moveTo_x = 58375 while not player.walk_loop_completed():376 fb.draw_icon(andar_2_bg)377 fb.draw_icon(player.draw(), True)378 fb.update_screen()379 sleep(0.1)380 # Continua381 return puzzle_tempo_1382 elif resposta == "direita":383 player.moveTo_x = 80384 while not player.walk_loop_completed():385 fb.draw_icon(andar_2_bg)386 fb.draw_icon(player.draw(), True)387 fb.update_screen()388 sleep(0.1)389 # Reinicia390 return puzzle_portas_1391def puzzle_tempo_1(info, fb, player):392 tentativas = 0393 fb.clear_buffers()394 # Duas bg: Uma com a pergunta e uma com a porta395 bg = image_to_text("resource/bg/perguntas.png", fb.ico_buf_size)396 bg_1 = image_to_text("resource/bg/perguntas1.png", fb.ico_buf_size)397 # Pré-cache da animação398 lava_anim = []399 for frame in range(90):400 lava_anim.append(image_to_text(f"resource/animacoes/lava{frame}.png", fb.ico_buf_size))401 # Reinicia o player402 player.bg_size = (len(bg[0]), len(bg))403 player.get_sprites()404 player.sprite_x = 0405 # Escreve406 fb.draw_text(f"{info.nome} encontra uma placa com alguma coisa escrita")407 fb.draw_icon(bg)408 fb.draw_icon(player.draw(), True)409 fb.update_screen()410 while True:411 # Atualiza toda vez que for perguntar412 fb.update_screen()413 # Executa a animação da lava antes de perguntar414 if tentativas > 0: # Animação da lava415 for frame in range(15 * (tentativas - 1), 15 * tentativas):416 fb.draw_icon(lava_anim[frame])417 fb.update_screen()418 419 # Se o jogador morreu420 if tentativas > 5:421 fb.draw_text(f"{info.nome} infelizmente morreu")422 fb.update_screen()423 input("Pressione enter para continuar")424 return menu_principal425 # Pergunta426 fb.enable_cursor()427 resposta = input(f"O que {info.nome} deve fazer?[ler/responder] ").lower()428 fb.disable_cursor()429 # Verifica os argumentos430 if len(resposta) > 0:431 if resposta[0] == "l":432 fb.draw_text("A placa diz:")433 fb.update_screen()434 sleep(2)435 fb.draw_text("Para prosseguir você deverá responder uma pergunta " +436 "não respondida á séculos pela humanidade. "+ 437 "Caso não responda, você perecerá")438 fb.update_screen()439 sleep(4)440 fb.draw_text("PORQUE A GALINHA ATRAVESSOU A RUA?")441 fb.update_screen()442 continue # Reinicia o loop443 elif resposta[0] == "r":444 fb.draw_text(f"O que {info.nome} respondeu?")445 fb.update_screen()446 # Pergunta 447 fb.enable_cursor()448 charada_resposta = input("Digite:").lower()449 fb.disable_cursor()450 451 # Verifica se a resposta está certa452 if charada_resposta == "para chegar ao outro lado":453 break454 else:455 tentativas += 1456 continue # Reinicia o loop quando a pessoa errar457 else: # Se a pessoa não digitou nada458 fb.draw_text("Digite alguma coisa")459 tentativas += 1460 fb.update_screen()461 # Caso o jogador acerte, desenha a porta462 fb.draw_icon(bg_1)463 fb.draw_icon(player.draw(), True)464 fb.draw_text("Uma porta apareceu no lugar da placa!")465 fb.draw_icon(lava_anim[15 * tentativas])466 fb.update_screen()467 # Deixa as coisas mais interessantes468 tentativas += 1469 while True:470 if tentativas > 0: # Animação da lava471 for frame in range(15 * (tentativas - 1), 15 * tentativas):472 fb.draw_icon(lava_anim[frame])473 fb.update_screen()474 # Verifica se o jogador morreu475 if tentativas > 5:476 fb.draw_text(f"{info.nome} infelizmente morreu")477 fb.update_screen()478 input("Pressione enter para continuar")479 return menu_principal480 # Pergunta481 fb.enable_cursor()482 resposta = input(f"O que {info.nome} deverá fazer?[entrar/ficar]").lower()483 fb.disable_cursor() 484 # Verifica os argumentos485 if len(resposta) > 0:486 if resposta == "entrar":487 player.moveTo_x = 3488 while not player.walk_loop_completed():489 fb.draw_icon(bg_1)490 fb.draw_icon(player.draw(), True)491 fb.draw_icon(lava_anim[15 * tentativas])492 fb.update_screen()493 sleep(0.1)494 return tesouro495 else: # Qualquer outra resposta fará o jogador morrer496 tentativas +=1497def tesouro(info, fb, player):498 fb.clear_buffers()499 bg = image_to_text("resource/bg/tesouro.png", fb.ico_buf_size)500 501 # Reinicia o player502 player.bg_size = (len(bg[0]), len(bg))503 player.get_sprites()504 player.sprite_x = 0505 506 # Desenha na tela507 fb.draw_text(f"{info.nome} finalmente encontra o tesouro! Agora ele tem que " +508 "descobrir como sair desse lugar")509 fb.draw_icon(bg)510 fb.draw_icon(player.draw(), fb.ico_buf_size)511 while True:512 fb.update_screen()513 # Pergunta514 fb.enable_cursor()515 resposta = input(f"O que {info.nome} deve fazer?[andar/olhar/escavar/lista]").lower().split()516 fb.disable_cursor()517 if len(resposta) == 0:518 continue519 # Verifica os argumentos520 if resposta[0] == "andar":521 if len(resposta) > 2:522 if resposta[2] == "tesouro":523 player.moveTo_x = 45524 while not player.walk_loop_completed():525 fb.draw_icon(bg)526 fb.draw_icon(player.draw(), True)527 fb.update_screen()528 sleep(0.1)...

Full Screen

Full Screen

user_input.py

Source:user_input.py Github

copy

Full Screen

1"""2Includes methods to allow for user input3"""4import pygame5from core.configs import get_value6key_tick = get_value("input", "key tick")7key_repeat_delay = get_value("input", "key repeat delay")8max_keys_pressed = get_value("input", "max keys pressed")9unshifted_keys = get_value("input", "unshifted keys")10shifted_keys = get_value("input", "shifted keys")11alphanumerals = "abcdefghijklmnopqrstuvwxyz1234567890"12class TypingManager(object): # TODO: Keep cursor in bounds13 """Controls typing by tracking key presses14 Called Externally.15 :type enable_cursor: bool16 """17 def __init__(self, enable_cursor=True):18 self.keys = {}19 self.cursor_pos = 020 self.string = ""21 self.enable_cursor = enable_cursor22 @staticmethod23 def is_character(key):24 """Tests whether given key is a character.25 Used internally.26 :type key: str27 """28 if key in shifted_keys or key in unshifted_keys or key.lower() \29 in alphanumerals:30 return True31 return False32 @staticmethod33 def shift_key(key):34 """Returns shifted version of given key.35 Used internally.36 :type key: str37 """38 if key in alphanumerals:39 return key.upper()40 index = unshifted_keys.find(key)41 if index > -1:42 return shifted_keys[unshifted_keys.find(key)]43 return key44 def is_shift_held(self):45 """Gets whether shift key is pressed.46 Used internally.47 """48 return "left shift" in self.keys or "right shift" in self.keys49 def is_caps_on(self):50 """Gets whether caps lock is on51 Used internally.52 """53 return "caps lock" in self.keys54 def is_control_held(self):55 """Gets whether control is held56 Used internally.57 """58 return "left ctrl" in self.keys or "right ctrl" in self.keys59 def index_of_next_word(self, direction="right"):60 """Finds the index of the next word in string.61 Used internally.62 :type direction: str63 :param direction: Must be either 'left' or 'right' from cursor64 """65 if direction == "left":66 return self.string[:self.cursor_pos].rstrip(" ").rfind(" ")67 elif direction == "right":68 return self.string[self.cursor_pos:].lstrip(" ").find(" ") + len(69 self.string[:self.cursor_pos]) + 170 else:71 raise ValueError("Direction must be 'left' or 'right'")72 def press_key(self, key):73 """Acknowledges key press if it is the only key being pressed or if74 multiple_key_repeat is on.75 Used internally.76 :type key: str77 """78 keys_pressed = 079 if self.is_character(key):80 for key_to_check in self.keys.keys():81 if self.keys[key_to_check] > 0 and self.is_character(82 key_to_check):83 keys_pressed += 184 if keys_pressed < max_keys_pressed:85 self.keys[key] = 186 def reset_key(self, key):87 """Removes key from active keys.88 Used internally.89 :type key: str90 """91 self.keys.pop(key, None)92 def backspace(self):93 """Removes words or characters from input_string.94 Used internally.95 """96 if self.is_control_held():97 if " " in self.string[:self.cursor_pos].rstrip(" "):98 inp_string_len = len(self.string)99 self.string = self.string[:self.index_of_next_word(100 "left")] + " " + self.string[self.cursor_pos:]101 self.cursor_pos -= (inp_string_len - len(self.string))102 else:103 self.string = self.string[self.cursor_pos:]104 self.cursor_pos = 0105 else:106 if self.cursor_pos != 0:107 self.string = self.string[:self.cursor_pos - 1] \108 + self.string[self.cursor_pos:]109 self.cursor_pos -= 1110 def delete(self):111 """Removes word or character from right of cursor.112 Used internally.113 """114 if self.is_control_held():115 if " " in self.string[self.cursor_pos:].lstrip(" "):116 self.string = self.string[:self.cursor_pos] + " " \117 + self.string[self.index_of_next_word("right"):] \118 .lstrip(" ")119 else:120 self.string = self.string[:self.cursor_pos]121 else:122 if self.cursor_pos != len(self.string):123 self.string = self.string[:self.cursor_pos] \124 + self.string[self.cursor_pos + 1:]125 def move_left(self):126 """Moves the cursor_pos left a character or a word127 Used internally.128 """129 if self.is_control_held():130 if " " in self.string[:self.cursor_pos].rstrip(" "):131 self.cursor_pos = self.index_of_next_word("left")132 else:133 self.cursor_pos = 0134 else:135 self.cursor_pos -= 1136 def move_right(self):137 """Moves the cursor_pos right a character or a word138 Used internally.139 """140 if self.is_control_held():141 if " " in self.string[self.cursor_pos:].lstrip(" "):142 self.cursor_pos = self.index_of_next_word("right")143 else:144 self.cursor_pos = len(self.string)145 else:146 self.cursor_pos += 1147 def add_character(self, key):148 """Adds given key after current cursor_pos149 Used internally.150 :type key: str151 """152 new_key = key153 if new_key == "space":154 new_key = " "155 if self.is_shift_held():156 new_key = self.shift_key(new_key)157 if self.is_caps_on() != self.is_shift_held():158 new_key = new_key.upper()159 self.string = self.string[:self.cursor_pos] \160 + new_key \161 + self.string[self.cursor_pos:]162 self.cursor_pos += 1163 def handle_event(self, event):164 """Handles pygame events such as button presses.165 Called externally.166 :type event: pygame.Event167 """168 if event.type == pygame.KEYDOWN:169 self.press_key(pygame.key.name(event.key))170 if event.type == pygame.KEYUP:171 self.reset_key(pygame.key.name(event.key))172 def set_text(self, text):173 """Sets stored string to text174 Called externally175 :type text: str176 """177 self.cursor_pos = len(self.string)178 self.string = text179 def type_loop(self):180 """Checks all keys and updates string and cursor position181 Called externally182 """183 changed = False184 for key in self.keys.keys():185 if (self.keys[key] > key_repeat_delay and self.keys[key] % key_tick == 0) or self.keys[key] == 1:186 if key == "backspace":187 old = self.string188 self.backspace()189 if old != self.string:190 changed = True191 elif key == "delete" and self.enable_cursor:192 old = self.string193 self.delete()194 if old != self.string:195 changed = True196 elif key == "return":197 self.keys = {}198 return self.string, 0, True, changed199 elif key == "left" and self.enable_cursor:200 self.move_left()201 elif key == "right" and self.enable_cursor:202 self.move_right()203 elif len(key) < 2 or key == "space":204 self.add_character(key)205 changed = True206 # Increment active keys207 if self.keys[key] > 0:208 self.keys[key] += 1209 if self.cursor_pos < 0:210 self.cursor_pos = 0211 if self.cursor_pos > len(self.string):212 self.cursor_pos = len(self.string)...

Full Screen

Full Screen

sync.py

Source:sync.py Github

copy

Full Screen

...11 out.flush()12def disable_cursor(out: OutputStream = None):13 out = default_output_stream(out)14 out.write(DISABLE_CURSOR)15def enable_cursor(out: OutputStream = None):16 out = default_output_stream(out)...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run tox automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful