KEY_Fx in Curses nicht drin?

KEY_Fx in Curses nicht drin?

am 11.01.2007 13:41:21 von df4or

Tag.

Mit Verwunderung stelle ich fest das die KEY_Fx Konstanten im Perl Curses
Modul nicht drin sind. Es gibt nur KEY_F0, mit dem ich aber leider nicht so
rech twas anfangen kann.

Kann mir jemand sagen wieso KEY_Fx Konstanten nicht in Curses drin sind,
oder wie ich sonst mit den Funktionstasten in Perl / Curses umgehen kann?

Danke,
Ekki

Re: KEY_Fx in Curses nicht drin?

am 11.01.2007 19:14:27 von Fabian Kurz

Ekki Plicht wrote:
> Mit Verwunderung stelle ich fest das die KEY_Fx Konstanten im Perl Curses
> Modul nicht drin sind. Es gibt nur KEY_F0, mit dem ich aber leider nicht so
> rech twas anfangen kann.
>
> Kann mir jemand sagen wieso KEY_Fx Konstanten nicht in Curses drin sind,
> oder wie ich sonst mit den Funktionstasten in Perl / Curses umgehen kann?

Ein fixer Blick in ncurses.h zeigt:

#define KEY_F0 0410 /* Function keys. Space for 64 */
#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */

Also einfach KEY_F(x) verwenden. Fuer jede der 64 moeglichen
F-Tasten eine Konstante zu definieren waere einfach zu viel
Redundanz...

73,
--
Fabian Kurz, DJ1YFK * Dresden, Germany * http://fkurz.net/
Online Log: http://dl0tud.tu-dresden.de/~dj1yfk/log.html

Re: KEY_Fx in Curses nicht drin?

am 11.01.2007 22:28:38 von Slaven Rezic

Ekki Plicht writes:

> Tag.
>
> Mit Verwunderung stelle ich fest das die KEY_Fx Konstanten im Perl Curses
> Modul nicht drin sind. Es gibt nur KEY_F0, mit dem ich aber leider nicht so
> rech twas anfangen kann.
>
> Kann mir jemand sagen wieso KEY_Fx Konstanten nicht in Curses drin sind,
> oder wie ich sonst mit den Funktionstasten in Perl / Curses umgehen kann?

Ich kenne mich gar nicht mit Curses aus, aber in ncurses.h steht nur:

#define KEY_F0 0410 /* Function keys. Space for 64 */
#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */

Letzteres ist kein konstantes Makro und wahrscheinlich wird deshalb
auch keine Perl-Konstante erzeugt (womöglich werden die Konstanten
automatisch erzeugt). Aber man kann es vielleicht wagen, einfach diese
Funktion in Perl nachzubauen...

Am besten ist es wohl, den Autor zu fragen.

--
Slaven Rezic - slaven rezic de

tkruler - Perl/Tk program for measuring screen distances
http://ptktools.sourceforge.net/#tkruler

Re: KEY_Fx in Curses nicht drin?

am 12.01.2007 00:16:50 von df4or

Fabian Kurz wrote:

> Ekki Plicht wrote:
>> Mit Verwunderung stelle ich fest das die KEY_Fx Konstanten im Perl Curses
>> Modul nicht drin sind. Es gibt nur KEY_F0, mit dem ich aber leider nicht
>> so rech twas anfangen kann.
>>
>> Kann mir jemand sagen wieso KEY_Fx Konstanten nicht in Curses drin sind,
>> oder wie ich sonst mit den Funktionstasten in Perl / Curses umgehen kann?
>
> Ein fixer Blick in ncurses.h zeigt:
>
> #define KEY_F0 0410 /* Function keys. Space for 64 */
> #define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */
>
> Also einfach KEY_F(x) verwenden. Fuer jede der 64 moeglichen
> F-Tasten eine Konstante zu definieren waere einfach zu viel
> Redundanz...

Ach so geht das... ok, danke, da habe ich nicht durchgeblickt.

73,
Ekki

Re: KEY_Fx in Curses nicht drin?

am 12.01.2007 00:18:19 von df4or

Slaven Rezic wrote:

> Ekki Plicht writes:
>
>> Tag.
>>
>> Mit Verwunderung stelle ich fest das die KEY_Fx Konstanten im Perl Curses
>> Modul nicht drin sind. Es gibt nur KEY_F0, mit dem ich aber leider nicht
>> so rech twas anfangen kann.
>>
>> Kann mir jemand sagen wieso KEY_Fx Konstanten nicht in Curses drin sind,
>> oder wie ich sonst mit den Funktionstasten in Perl / Curses umgehen kann?
>
> Ich kenne mich gar nicht mit Curses aus, aber in ncurses.h steht nur:
>
> #define KEY_F0 0410 /* Function keys. Space for 64 */
> #define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */
>
> Letzteres ist kein konstantes Makro und wahrscheinlich wird deshalb
> auch keine Perl-Konstante erzeugt (womöglich werden die Konstanten
> automatisch erzeugt). Aber man kann es vielleicht wagen, einfach diese
> Funktion in Perl nachzubauen...
>
> Am besten ist es wohl, den Autor zu fragen.

OK, Fabians Antwort hat mir auf die Sprünge geholfen...
einfach "use Curses;" und schon steht KEY_F() zur Verfügung. Ich hatte
nur "use Curses::UI" verwendet, da war das nicht definiert.

Danke,
Ekki