def run(self):
""" Run emulator """
self.reboot_pc()
is_input_capitalized = False
# http://stackoverflow.com/a/28931488
pygame.event.clear()
while self.running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running = False
elif event.type == pygame.KEYDOWN:
kc, kn = pygame_to_cc(pygame.key.name(event.key))
if kn == "caps lock":
is_input_capitalized = not is_input_capitalized
kn = ""
elif kn == "left shift" or kn == "right shift":
kn = ""
is_input_capitalized = True
if event.key == pygame.K_t and pygame.key.get_mods() & pygame.KMOD_CTRL:
self.computer.queue_event("terminate")
continue
if kc != 0: self.computer.queue_event("key", kc)
if kn != "": self.computer.queue_event("char", kn.upper() if is_input_capitalized else kn.lower())
elif event.type == pygame.KEYUP:
kc, kn = pygame_to_cc(pygame.key.name(event.key))
if kn == "left shift" or kn == "right shift":
is_input_capitalized = False
if kc != 0: self.computer.queue_event("key_up", kc)
elif event.type == pygame.MOUSEBUTTONDOWN:
self.computer.queue_event(
"mouse_click",
event.button,
int((event.pos[0] / self.display.get_width()) * self.cc_display.width) + 1,
int((event.pos[1] / self.display.get_height()) * self.cc_display.height) + 1
)
pygame.event.clear()
self.display.fill(DisplayColors.BLACK)
self.computer.update()
self.cc_display.draw()
pygame.display.flip()
self.clock.tick()
评论列表
文章目录