Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2010 18:39:48

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

Нужно чтоб по нажатию клавиши эта клавиша выводилась на экран, и что-то выполнялось. Функции есть. Для винды getch() для линя вот нашел:

import sys
import tty
tty.setcbreak(sys.stdin)
while True:
print ord(sys.stdin.read(1))
Но вот 2 проблемы, во первых, код Для линукса выдаёт коды клавиш, можно конечно сделать словарь, и чтоб в зависимости от полученого кода он печатал разные клавиши, но я уверен есть способ по попроще, может не попроще но хотябы не такой рутинный. И второй вопрос. Нужно чтоб выводисись напечатаные символы в строчку, как это сделать? чтоб одновременно и в строчку символы выводились и в зависимости от нажатой клавиши свои функции выполнялись.



Офлайн

#2 Май 20, 2010 18:44:46

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

Alex_Kutsan
код Для линукса выдаёт коды клавиш,
Хм… А зачем вы используете функция ord, которая преобразует строковую литералу в число?



Офлайн

#3 Май 20, 2010 19:54:12

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

пробовал без ord
мне терминал выдал знаки вопроса

alex@alex-laptop ~ $ python '/media/FILES/pip.py' 

�

�

�

�

�

�

�



Офлайн

#4 Май 20, 2010 19:56:47

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

без орд я пробовал

 print sys.stdin.read(1)



Офлайн

#5 Май 20, 2010 20:01:05

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

Alex_Kutsan
мне терминал выдал знаки вопроса
Кодировка не та, вероятно. Попробуйте, .encode(utf8) применить к выводу, например. В линуксе должно прокатить… Хотя я даже и не задумывался какая кодировка нужна для линуксовой консоли.



Офлайн

#6 Май 20, 2010 20:05:46

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

А ещё можно koi8r попробовать. А вообще зря я полез тут отвечать…



Офлайн

#7 Май 20, 2010 20:59:55

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

А у меня все выводит как надо, и русские символы и латинские.



Офлайн

#8 Май 21, 2010 08:20:58

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

sys.stdin.read(1) - выдает 1 байт, а в utf-8 русские символы занимают 2 байта, поэтому не удастся декодирвать utf8 из 1 байта

Отредактировано (Май 21, 2010 08:22:43)

Офлайн

#9 Май 21, 2010 10:16:50

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Нажатию клавиши в Linux

Точно. У меня с read(1) работало в KOI8-R, а с read(2) в UTF8.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version