Autor Beitrag
OliverN_26
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 12.04.12 17:57 
Hi

Ich bin mit meinem Latain absolut am Ende und ihr seid meine letzte Hoffnung.
Ich wähle mich per Telnet (ICS Komponente "TnEmulVT") auf einer AS400 ein.
Ich komm soweit soweit super klar, "WENN" da nicht die F-Tasten wären. F1-F12 habe ich mittlerweile hinbekommen, aber ab und an benötigen wir "F18" und "F19" und ich habe keinen Schimmer wie ich die F-Tasten ab F12 aktiviert bekomme, da ich mittlerweile alles Erdenkliche (meines Wissens) versucht habe.

1. Frage
--------
Kennt jemand eine Alternative Komponente, die keine derartigen Schwierigkeiten hat und gleichzeitig leicht zu bedienen ist?

2. Frage
--------
Hier ist ein Auszug aus der Datei "emulvt.pas", in der das Key-Mapping deklariert ist. Vielleicht kennt sich ja jemand damit aus und kann mir sagen was ich machen muß, um die F-Tasten über F12 zu aktivieren.
P.s.: die komplette Datei hab ich im Anhang vorsichtshalber beigefügt
ausblenden volle Höhe Delphi-Quelltext
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:
{ Alternate function keys (ordinary VT keys) }
  FKeys2 : TFuncKeysTable = (
      (ScanCode: #$48; Shift: []; Ext: TRUE ; Value: #$1B + '[A'),   { UP     }
      (ScanCode: #$50; Shift: []; Ext: TRUE ; Value: #$1B + '[B'),   { DOWN   }
      (ScanCode: #$4D; Shift: []; Ext: TRUE ; Value: #$1B + '[C'),   { RIGHT  }
      (ScanCode: #$4B; Shift: []; Ext: TRUE ; Value: #$1B + '[D'),   { LEFT   }
      (ScanCode: #$49; Shift: []; Ext: TRUE ; Value: #$1B + '[5~'),  { PREV   }
      (ScanCode: #$51; Shift: []; Ext: TRUE ; Value: #$1B + '[6~'),  { NEXT   }
      (ScanCode: #$52; Shift: []; Ext: TRUE ; Value: #$1B + '[2~'),  { INSERT }
      (ScanCode: #$53; Shift: []; Ext: TRUE ; Value: #$7F       ),   { DELETE }
      (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + '[11~'), { F1     }
      (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + '[12~'), { F2     }
      (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + '[13~'), { F3     }
      (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + '[14~'), { F4     }
      (ScanCode: #$3F; Shift: []; Ext: FALSE; Value: #$1B + '[15~'), { F5     }
      (ScanCode: #$40; Shift: []; Ext: FALSE; Value: #$1B + '[17~'), { F6     }
      (ScanCode: #$41; Shift: []; Ext: FALSE; Value: #$1B + '[18~'), { F7     }
      (ScanCode: #$42; Shift: []; Ext: FALSE; Value: #$1B + '[19~'), { F8     }
      (ScanCode: #$43; Shift: []; Ext: FALSE; Value: #$1B + '[20~'), { F9     }
      (ScanCode: #$44; Shift: []; Ext: FALSE; Value: #$1B + '[21~'), { F10    }
      (ScanCode: #$57; Shift: []; Ext: FALSE; Value: #$1B + '[23~'), { F11    }
      (ScanCode: #$58; Shift: []; Ext: FALSE; Value: #$1B + '[24~'), { F12    }
      (ScanCode: #$64; Shift: []; Ext: FALSE; Value: #$1B + '[25~'), { F13    }
      (ScanCode: #$65; Shift: []; Ext: FALSE; Value: #$1B + '[26~'), { F14    }
      (ScanCode: #$66; Shift: []; Ext: FALSE; Value: #$1B + '[28~'), { F15    }
      (ScanCode: #$67; Shift: []; Ext: FALSE; Value: #$1B + '[29~'), { F16    }
      (ScanCode: #$68; Shift: []; Ext: FALSE; Value: #$1B + '[31~'), { F17    }
      (ScanCode: #$69; Shift: []; Ext: FALSE; Value: #$1B + '[32~'), { F18    }
      (ScanCode: #$6A; Shift: []; Ext: FALSE; Value: #$1B + '[33~'), { F19    }
      (ScanCode: #$6B; Shift: []; Ext: FALSE; Value: #$1B + '[34~'), { F20    }
      (ScanCode: #$6C; Shift: []; Ext: FALSE; Value: ''           ), { F21    }
      (ScanCode: #$6D; Shift: []; Ext: FALSE; Value: ''           ), { F22    }
      (ScanCode: #$6E; Shift: []; Ext: FALSE; Value: ''           ), { F23    }
      (ScanCode: #$76; Shift: []; Ext: FALSE; Value: ''           ), { F24    }
      (ScanCode: #$00; Shift: []; Ext: FALSE; Value: ''         ),
      (ScanCode: #$00; Shift: []; Ext: FALSE; Value: ''         ),
          .                              .
          .                              .
          .                              .

Vielleicht ist noch erwähnenswert das ich mir die SCANCODES und VALUES selber aus dem Netz zusammen gesucht habe.

1000 Dank im voraus falls es wirklich jemand gibt, der mir da weiter hilft.

lg
Oli
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 12.04.12 20:07 
Moin!

Wo ist denn das Problem: Wireshark und mitlesen, dann kannst du das doch auch selbst senden. :idea: :nixweiss: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Fr 13.04.12 10:14 
Morgen

WireShark hab ich jetzt drauf aber ich versteh leider nur Bahnhof bei dem was er da mitschneidet :-(
Wie kann ich denn erkennen WO meine Eingabe ist und WAS gesendet wird?

Desweiteren weiß ich nicht so richtig ob mir das weiter hilft, denn das Problem ist ja nicht direkt das ich nicht weiss was gesendet werden müsste! Das lässt sich rausfinden oder mit KeyMapping so optimieren, dass es für mich passt. Es scheint aber, als ob "SHIFT" / "ALT" / "CTRL" gar nicht aktiviert ist, denn da kommt 0 Reaktion, wenn ich eine der Tasten drücke.
Ich weiß halt nicht ob ich von vornherein schon was falsch mache. F1-F12 hab ich ja auch hinbekommen. Was ich so im Netz gelesen habe scheint das Problem über F12 nicht unbekannt zu sein.

Vielen Dank vorab
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 13.04.12 13:17 
Moin!

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
WireShark hab ich jetzt drauf aber ich versteh leider nur Bahnhof bei dem was er da mitschneidet :-(
Wie kann ich denn erkennen WO meine Eingabe ist und WAS gesendet wird?
Du brauchst natürlich einen Filter, der nur Pakete, die auf deinem sendenden Port oder auf dem antwortenden Port des Server reagieren. Dann hast du nur noch die Kommunikation der Anwendung. :idea: Deine eigenen Eingaben ("WAS") solltest du wiedererkennen, du hast den Inhalt ja schließlich selbst erzeugt (ggfs. halt um das Protokoll erweitert, keine Ahnung, Telnet? hab ich grad nicht auswendig derauuf, musste halt im RFC nachlesen, wie die Pakete gebaut sind; das sollte aber alles praktisch Klartext sein). Wenn du dann die Ausgaben des Servers mit der Bildschirmanzeige vergleichst, sollten sich Ähnlichkeiten zeigen. ;)

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Desweiteren weiß ich nicht so richtig ob mir das weiter hilft, denn das Problem ist ja nicht direkt das ich nicht weiss was gesendet werden müsste!
Wenn du doch weißt, was du senden musst, warum funktioniert´s dann nicht? :gruebel: Ich habe dein Problem bisher so verstanden, dass du nicht weißt, mit welchem Code ein Fx übertragen wird. Wenn du das per manueller Eingabe machst und dabei in Wireshark "zusiehst", dann hast du den Code. Das war mein Ansatz. :think:

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Es scheint aber, als ob "SHIFT" / "ALT" / "CTRL" gar nicht aktiviert ist, denn da kommt 0 Reaktion, wenn ich eine der Tasten drücke.
Ich weiß halt nicht ob ich von vornherein schon was falsch mache.
Geht´s denn manuell? Also nur in deiner Anwendung hakt´s?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Fr 13.04.12 13:59 
Hi

genau da ist das Problem. Manuell geht es auch nicht. Wenn ich es aber z.B. mit Putty versuche gehts wunderbar. Hab auch schon versucht mit nem KeyMapping Programm die Taste F19 auf "p" (nur zu Testzwecken) zu legen. Mit Putty gehts aber mit meiner Komponente tut sich nix .. so als ob er diese Taste nich kennt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 13.04.12 14:11 
Moin!

Irgendwie ist das etwas verworren, was du da erzählst. :gruebel:

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich es aber z.B. mit Putty versuche gehts wunderbar.
Na dann, das Paket mit dem F19 mit Wireshark aufschnappen und schon hast du den passenden Code. :idea: :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Fr 13.04.12 14:45 
Ich bastel mich seid ner Weile durch dieses Thema, wobei ich mich aber immernoch als Neuling bezeichne. Ist es denn grundsätzlich, ohne weitere Einstellungen möglich jede beliebige F-Taste zu senden? Ich hab so viel gelesen in Bezug auf VT100 (F1-F4) / VT220 (F6-F20) ... und es scheint ein größeres Problem zu sein Funktionstasten (grade höher als F12 / F20) an ein AS400 System zu senden.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 13.04.12 15:18 
Moin!

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Ist es denn grundsätzlich, ohne weitere Einstellungen möglich jede beliebige F-Taste zu senden?
Das weiß ich nicht, aber wenn PuTTY es kann, warum du dann nicht auch? :nixweiss:

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab so viel gelesen in Bezug auf VT100 (F1-F4) / VT220 (F6-F20) ... und es scheint ein größeres Problem zu sein Funktionstasten (grade höher als F12 / F20) an ein AS400 System zu senden.
Was spricht denn PuTTY mit der AS400? SSH? Oder sonstwas? Da gibt´s doch auch haufenweise Einstellungen zu der Verbindung, hilft das nicht weiter?

Ich hab mich mal ne ganze Weile mit SSH zu unseren Linux-Kisten rumgequält, jetzt läuft´s ganz brauchbar mit Cygwin. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Mi 09.05.12 12:27 
Hi

... am Rande der Verzweifelung ...
Musste mich leider um das ein oder andere Projekt kümmern und nun hab ich vor 3 Tagen dieses immernoch bestehende Problem wieder ausgekramt. Ich weiss einfach nicht wo und wie ich hier ansetzen soll. Ich wäre wirklich sehr sehr dankbar, wenn mir bei dem Problem bitte jemand unter die Arme greifen könnte.

Thema "mitlesen/auslesen" bringt mich irgendwie nicht weiter, da ich nicht weiss wo ich die entsprechenden Informationen finde und mit den ganzen Steuercodes etwas überfordert bin :-(

Vielen Dank im voraus.

lg
Oli
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 09.05.12 13:08 
Meine Zeiten mit der AS/400 sind zwar schon fast 20 Jahre her, aber ich meine mich erinnern zu können, dass ab F13 einfach nur ein "Shift" dazu genommen werden muss.

Also:
F13 = Shift-F1
F14 = Shift-F2
...

Aber wie schon geschrieben, ist das bei mir schon sehr lange her.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Mi 09.05.12 13:57 
Hi

Die Idee war gut. Daran hatte ich noch gar nicht gedacht. Entweder mach ich aber was falsch oder es geht nicht :-( Das KeyCode Table sieht letztendlich so aus:
ausblenden Delphi-Quelltext
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:
                                       .
                                       .
                                       .
      (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + '[11~'), { F1     }
      (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + '[12~'), { F2     }
      (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + '[13~'), { F3     }
      (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + '[14~'), { F4     }
      (ScanCode: #$3F; Shift: []; Ext: FALSE; Value: #$1B + '[15~'), { F5     }
      (ScanCode: #$40; Shift: []; Ext: FALSE; Value: #$1B + '[17~'), { F6     }
      (ScanCode: #$41; Shift: []; Ext: FALSE; Value: #$1B + '[18~'), { F7     }
      (ScanCode: #$42; Shift: []; Ext: FALSE; Value: #$1B + '[19~'), { F8     }
      (ScanCode: #$43; Shift: []; Ext: FALSE; Value: #$1B + '[20~'), { F9     }
      (ScanCode: #$44; Shift: []; Ext: FALSE; Value: #$1B + '[21~'), { F10    }
      (ScanCode: #$57; Shift: []; Ext: FALSE; Value: #$1B + '[23~'), { F11    }
      (ScanCode: #$58; Shift: []; Ext: FALSE; Value: #$1B + '[24~'), { F12    }
      (ScanCode: #$3B; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[11~'), { F13    }
      (ScanCode: #$3C; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[12~'), { F14    }
      (ScanCode: #$3D; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[13~'), { F15    }
      (ScanCode: #$3E; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[14~'), { F16    }
      (ScanCode: #$3F; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[15~'), { F17    }
      (ScanCode: #$40; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[17~'), { F18    }
      (ScanCode: #$41; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[18~'), { F19    }
      (ScanCode: #$42; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[19~'), { F20    }
      (ScanCode: #$43; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[20~'), { F21    }
      (ScanCode: #$44; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[21~'), { F22    }
      (ScanCode: #$57; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[23~'), { F23    }
      (ScanCode: #$58; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[24~'), { F24    }
                                        .
                                        .
                                        .


War das so gemeint?

lg
Oli

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Ich fand den Tip wirklich gut, bin da mal dran geblieben und hab es wirklich hinbekommen :-) Ich brauchte allerdings KeyCodes aus einem anderen Terminal Emulator (rxvt). Für die, die es interessiert:
ausblenden Delphi-Quelltext
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:
      (ScanCode: #$3B; Shift: []; Ext: FALSE; Value: #$1B + '[11~'), { F1     }
      (ScanCode: #$3C; Shift: []; Ext: FALSE; Value: #$1B + '[12~'), { F2     }
      (ScanCode: #$3D; Shift: []; Ext: FALSE; Value: #$1B + '[13~'), { F3     }
      (ScanCode: #$3E; Shift: []; Ext: FALSE; Value: #$1B + '[14~'), { F4     }
      (ScanCode: #$3F; Shift: []; Ext: FALSE; Value: #$1B + '[15~'), { F5     }
      (ScanCode: #$40; Shift: []; Ext: FALSE; Value: #$1B + '[17~'), { F6     }
      (ScanCode: #$41; Shift: []; Ext: FALSE; Value: #$1B + '[18~'), { F7     }
      (ScanCode: #$42; Shift: []; Ext: FALSE; Value: #$1B + '[19~'), { F8     }
      (ScanCode: #$43; Shift: []; Ext: FALSE; Value: #$1B + '[20~'), { F9     }
      (ScanCode: #$44; Shift: []; Ext: FALSE; Value: #$1B + '[21~'), { F10    }
      (ScanCode: #$57; Shift: []; Ext: FALSE; Value: #$1B + '[23~'), { F11    }
      (ScanCode: #$58; Shift: []; Ext: FALSE; Value: #$1B + '[24~'), { F12    }

      (ScanCode: #$3B; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[25~'), { F13 }
      (ScanCode: #$3C; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[26~'), { F14 }
      (ScanCode: #$3D; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[28~'), { F15 }
      (ScanCode: #$3E; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[29~'), { F16 }
      (ScanCode: #$3F; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[31~'), { F17 }
      (ScanCode: #$40; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[32~'), { F18 }
      (ScanCode: #$41; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[33~'), { F19 }
      (ScanCode: #$42; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[34~'), { F20 }
      (ScanCode: #$43; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[23$'), { F21 }
      (ScanCode: #$44; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[24$'), { F22 }
      (ScanCode: #$57; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[11^'), { F23 }
      (ScanCode: #$58; Shift: [ssShift]; Ext: FALSE; Value: #$1B + '[12^'), { F24 }


Vielen vielen Dank :-)

lg
Oli