Найти - Пользователи
Полная версия: Нажатию клавиши в Linux
Начало » Python для новичков » Нажатию клавиши в Linux
1
Alex_Kutsan
Нужно чтоб по нажатию клавиши эта клавиша выводилась на экран, и что-то выполнялось. Функции есть. Для винды getch() для линя вот нашел:
import sys
import tty
tty.setcbreak(sys.stdin)
while True:
print ord(sys.stdin.read(1))
Но вот 2 проблемы, во первых, код Для линукса выдаёт коды клавиш, можно конечно сделать словарь, и чтоб в зависимости от полученого кода он печатал разные клавиши, но я уверен есть способ по попроще, может не попроще но хотябы не такой рутинный. И второй вопрос. Нужно чтоб выводисись напечатаные символы в строчку, как это сделать? чтоб одновременно и в строчку символы выводились и в зависимости от нажатой клавиши свои функции выполнялись.
igor.kaist
Alex_Kutsan
код Для линукса выдаёт коды клавиш,
Хм… А зачем вы используете функция ord, которая преобразует строковую литералу в число?
Alex_Kutsan
пробовал без ord
мне терминал выдал знаки вопроса
alex@alex-laptop ~ $ python '/media/FILES/pip.py' 

�

�

�

�

�

�

�
Alex_Kutsan
без орд я пробовал
 print sys.stdin.read(1)
UsCr
Alex_Kutsan
мне терминал выдал знаки вопроса
Кодировка не та, вероятно. Попробуйте, .encode(utf8) применить к выводу, например. В линуксе должно прокатить… Хотя я даже и не задумывался какая кодировка нужна для линуксовой консоли.
UsCr
А ещё можно koi8r попробовать. А вообще зря я полез тут отвечать…
Ed
А у меня все выводит как надо, и русские символы и латинские.
o7412369815963
sys.stdin.read(1) - выдает 1 байт, а в utf-8 русские символы занимают 2 байта, поэтому не удастся декодирвать utf8 из 1 байта
Ed
Точно. У меня с read(1) работало в KOI8-R, а с read(2) в UTF8.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB