Schrift
[thread]6287[/thread]

[CTRL] Taste einlesen: Tastatur (Seite 2)



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Strat
 2004-05-28 22:27
#82691 #82691
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
mir faellt da gerade was ein... besteht die <Strg>-Taste nicht aus zwei Codes? 0 und einen zweiten? da muesste man dann zweimal abfragen...\n\n

<!--EDIT|Strat|1085768906-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
romulus
 2004-05-28 22:46
#82692 #82692
User since
2004-04-05
23 Artikel
BenutzerIn
[default_avatar]
Ja, das hätte ich auch gedacht - vielleicht ist es auch so. Aber leider tun die standard-module die für sowas gedacht sind wie z.B.
Term::ReadKey  usw.. als ob der gar nichts senden würde. Wenn man z.B. Strg-A, Strg-B,Strg-C usw. drückt dann wird aber auch nur ein Code geschickt unzwar hexadezimal von 1,2,3 ...
Da weiss ich aber nicht ob das jetzt von der Tastatur so geschickt wird oder ob das intern so verarbeitet wird. Mehrere Codes werden auf jeden Fall bei den sogenannten escaped Zeichen gesenden. Das sind die Pfeiltasten und "Ins", "Del", die Funktionstasten usw. da werden jeweils 3-4 Codes hintereinander geschickt wobei der erste immer ein Escape-Code ist. Da muss ich dann auch mehrmals abfragen. Das funktioniert auch.

Leider ist das mit den Strg, Alt und Shift Tasten irgendwie ganz komisch.\n\n

<!--EDIT|romulus|1085770023-->
pq
 2004-06-01 04:46
#82693 #82693
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
hab mal ein programm gebastelt, welche die key-codes für eingetippte zeichen anzeigt. leider funktioniert es auch nicht bei allen tasten-kombination, z.B. ist CTRL-TAB identisch mit TAB, aber hier mal das programm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl -w
use strict;
use Term::ReadKey;
my $key;
print "Stop with CTRL-C\n";
unless (@ARGV) {
 print "Please enter your key:";
 $key = get_key();
}
else {
 $key = shift;
}
if (ref $key) {
 # got more than one key
 print "\nKeys:\n";
 print "$_\n" for map {ord $_} @$key;
}
else {
 my $ord = ord $key;
 print <<EOM;

Pressed: ($key)
Ord:      $ord        
EOM
}
sub get_key {
 my $key;
 ReadMode 4; # Turn off controls keys
 while (not defined ($key = ReadKey(-1))) {
 # No key yet
 }
 my $ord = ord $key;
 (ReadMode 0), exit if $ord == 3; # STRG-C
 ReadMode 0;
 if ($ord == 27) {
   my @keys = $key;
   while (defined(my $k = get_key_nb())) {
     push @keys, $k;
   }
   return \@keys;
 }
 return $key;
}
sub get_key_nb {
 ReadMode 4; # Turn off controls keys
 my $key = ReadKey(-1) or (ReadMode 0),return;
 my $ord = ord $key;
 (ReadMode 0), exit if $ord == 3; # STRG-C
 ReadMode 0;
 return $key;
}
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Relais
 2004-06-01 14:56
#82694 #82694
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pq,01.06.2004, 02:46]z.B. ist CTRL-TAB identisch mit TAB[/quote]
Das erscheint mir erstmal nicht als ein Fehler:
TAB ist CTRL-I
CTRL-TAB wäre damit CTRL-CTRL-I ... ich glaube, jedoch ohne es besser zu wissen, daß CTRL wohl nur einmal wirksam werden kann, also auch CTRL-I.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
ptk
 2004-06-01 15:23
#82695 #82695
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
@pq: Leider funktioniert das Beispielprogramm in einem xterm gar nicht (nicht einmal Ctrl-C noch Ctrl-Z). Geht es nur auf der Linux-Console?
Crian
 2004-06-01 15:24
#82696 #82696
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Schick pq, gleich mal gesichert, sowas kann man immer mal brauchen =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2004-06-01 21:30
#82697 #82697
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=ptk,01.06.2004, 13:23]@pq: Leider funktioniert das Beispielprogramm in einem xterm gar nicht (nicht einmal Ctrl-C noch Ctrl-Z). Geht es nur auf der Linux-Console?[/quote]
hmm, hier klappt's auch im xterm... kriegst du eine fehlermeldung?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2004-06-01 22:30
#82698 #82698
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich habe es jetzt mit perl5.8.4 statt perl5.8.0 versucht (gleiche Term::ReadKey-Version) und siehe da --- es funktioniert! Unter perl5.8.0 scheint das Skript ohne Ausgabe zu haengen.
pq
 2004-06-02 14:15
#82699 #82699
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=ptk,01.06.2004, 20:30]Ich habe es jetzt mit perl5.8.4 statt perl5.8.0 versucht (gleiche Term::ReadKey-Version) und siehe da --- es funktioniert! Unter perl5.8.0 scheint das Skript ohne Ausgabe zu haengen.[/quote]
hmm, merkwürdig. ich meine, es lief bei mir unter 5.6.1, 5.8.1 und 5.8.3 und 5.8.4. 5.8.0
habe/hatte ich nicht. jetzt, da ich ein neues linux drauf habe, kann ich leider
nicht mehr die alten versionen testen (bzw. ich habe keine lust, die noch
zu installieren =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2004-06-02 15:13
#82700 #82700
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
"Koennen" ist wahrlich kein Argument --- auf meiner Maschine tummeln sich dutzende Perl-Versionen herum, angefangen von 4.036 bis 5.8.4 und 5.9.x :-)
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2004-05-24 19:15.