Как определить и обработать управляющие символы и клавиши со стрелками в Perl? - PullRequest
3 голосов
/ 17 марта 2010

Я хочу реализовать функции командной строки, как в терминале Linux. Я видел это и в команде ftp.

  • Если я нажимаю клавишу Tab, мне нужно перечислить команды.
  • Если я нажимаю управляющие символы, мне нужно, чтобы эти символы основывались на том, что я сделаю некоторое действие.
  • И если я даю какие-либо команды, они должны выполняться.

Для этого я попытался с Term :: ReadKey , который находится в неканоническом режиме. Но здесь я сталкиваюсь с большим количеством проблем, например, если я нажимаю любой управляющий символ или стрелку, я получаю три символа. За стрелку вверх я получил ASCII 27 91 65.

Может кто-нибудь помочь мне выйти из этой проблемы?

Ответы [ 3 ]

2 голосов
/ 17 марта 2010

Я получил один модуль Perl, чтобы полностью решить мои требования. Term :: ShellUI .

Спасибо за ваш вклад.

И если у вас есть какое-либо другое решение, всегда приветствуем.

2 голосов
/ 17 марта 2010

К сожалению, общий интерфейс Term :: ReadLine не включает настраиваемые функции завершения. Для этого вам нужно выбрать конкретную реализацию readline.

Term :: ReadLine :: Gnu , Term :: ReadLine :: Perl и Term :: ReadLine :: Zoid способны выполнять пользовательское завершение. Term :: ReadLine :: Gnu, вероятно, лучше всего документировано . Term :: ReadLine :: Perl практически не имеет документов, и у меня нет опыта работы с Term :: ReadLine :: Zoid.

2 голосов
/ 17 марта 2010

Я думаю, что вам лучше всего подать Term :: Readline .

...