Ubuntu Pygame получает значения event.key

1

Следующий код pygame перестает работать корректно после обновления с ubuntu 16.04 до ubuntu 18.04.

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        print "KEY:", event.key
        if event.key == pygame.K_ESCAPE:
            # The code here is executed when "Esc" is pressed.
        elif event.key == pygame.K_f:
            # Never happens even when "f" is pressed.

Код печатает " Key: 193 ", когда я нажимаю f вместо ожидаемого " Key: 102 ".

Любые идеи, что может быть неправильным?

У меня есть несколько раскладок клавиатуры, и я уверен, что когда это происходит, я использую "английский".

  • 2
    Скан-код 193 принадлежит символу KP_F в SDL, который является клавиатурой F. У вас есть и используется ли буквенно-цифровая клавиатура? Так как это довольно редко, в Pygame отсутствуют эти константы.
  • 2
    Если нет, то скорее всего это из-за раскладки клавиатуры.
Показать ещё 2 комментария
Теги:
pygame
ubuntu-18.04

1 ответ

1
Лучший ответ

Если вы абсолютно уверены, что настройки вашей клавиатуры не изменились с момента изменения версии Ubuntu, вы можете решить эту проблему, сравнив значения unicode:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        print "KEY:", event.key
        if event.key == pygame.K_ESCAPE:
            # The code here is executed when "Esc" is pressed.
        elif event.unicode == 'f':
            ...
  • 0
    Большое спасибо. Решение сработало отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню