Tastatureingaben umsetzen
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Tastatureingaben umsetzen
Hallo und guten Tage zusammen,
ich sitzte hier vor meiner neuen Cherry-Tastatur -Deutsch-Russisch- und beschäftige mich mal wieder mit meinem Hobby kyrillische Schriftzeichen. Da alle Probleme mit dem Speichern dieser Zeichen gelöst sind, wollte ich die Eingabe mit der Tastatur komfortabler gestalten. Bisher habe ich das bei vorhandenen Texten immer über die Zwischeablage oder aber mit dem ALT Taste und dem Zehnerblock gemacht. (Die kyrillischen Buchstaben befinden sich jenseits chr(125))
Irgendwie hatte ich gehofft, dass man auf einer solchen Tastatur von deutsch auf russisch umschalten kann und die Tastatur dann unterschiedliche Codes an den PC sendet. Geht aber nicht. Die Tasten sind nur doppelt beschriftet. Die Wirkung tritt erst dann ein, wenn man Windows von Deutsch in das Eingabegebiet Russisch umschaltet. Dann geht das z.B. im Word.
In Xbase passiert nichts und das Umschalten auf die Codepage 204 hat nur die Auswirkung, dass wieder die berühmten Fragezeichen auf dem Bildschirm erscheinen.
Wenn ich auf der Tastatur z.B. ein "L" drücke, verarbeitet das System chr(76).
"L" ist aber auch mit dem kyrillischen Buchstaben "д" belegt. Das wäre dann chr(142).
Um aus dieser Nummer rauszukommen, müßte ich wahrscheinlich eine Umsetzungstabelle (für alle Tasten) erstellen. chr(76)=chr(142). Das "L" sollte überhaupt nicht auf dem Schirm erscheinen sondern sofort der kyrillische Buchstabe "д". Das Erstellen der Tabelle ist kein großes Problem, aber die Umsetzung.
Ist das wohl denkbar, dass bei einer Eingabe in ein Eingabefeld jeder Buchstabe sofort abgefangen, in einer Funktion umgesetzt und dann erst angezeigt wird ?
ich sitzte hier vor meiner neuen Cherry-Tastatur -Deutsch-Russisch- und beschäftige mich mal wieder mit meinem Hobby kyrillische Schriftzeichen. Da alle Probleme mit dem Speichern dieser Zeichen gelöst sind, wollte ich die Eingabe mit der Tastatur komfortabler gestalten. Bisher habe ich das bei vorhandenen Texten immer über die Zwischeablage oder aber mit dem ALT Taste und dem Zehnerblock gemacht. (Die kyrillischen Buchstaben befinden sich jenseits chr(125))
Irgendwie hatte ich gehofft, dass man auf einer solchen Tastatur von deutsch auf russisch umschalten kann und die Tastatur dann unterschiedliche Codes an den PC sendet. Geht aber nicht. Die Tasten sind nur doppelt beschriftet. Die Wirkung tritt erst dann ein, wenn man Windows von Deutsch in das Eingabegebiet Russisch umschaltet. Dann geht das z.B. im Word.
In Xbase passiert nichts und das Umschalten auf die Codepage 204 hat nur die Auswirkung, dass wieder die berühmten Fragezeichen auf dem Bildschirm erscheinen.
Wenn ich auf der Tastatur z.B. ein "L" drücke, verarbeitet das System chr(76).
"L" ist aber auch mit dem kyrillischen Buchstaben "д" belegt. Das wäre dann chr(142).
Um aus dieser Nummer rauszukommen, müßte ich wahrscheinlich eine Umsetzungstabelle (für alle Tasten) erstellen. chr(76)=chr(142). Das "L" sollte überhaupt nicht auf dem Schirm erscheinen sondern sofort der kyrillische Buchstabe "д". Das Erstellen der Tabelle ist kein großes Problem, aber die Umsetzung.
Ist das wohl denkbar, dass bei einer Eingabe in ein Eingabefeld jeder Buchstabe sofort abgefangen, in einer Funktion umgesetzt und dann erst angezeigt wird ?
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Tastatureingaben umsetzen
Hallo Ewald,
ich mache das in einem DCMULTILINE mit dem keyboard slot um nur Großbuchstaben zu erhalten.
Vielleicht kannst du das ja adaptieren.
ich mache das in einem DCMULTILINE mit dem keyboard slot um nur Großbuchstaben zu erhalten.
Vielleicht kannst du das ja adaptieren.
Code: Alles auswählen
local bUpper := {|a,b,o,x,n|x:=o:getdata(), ;
n:=o:pos(), ;
n--,;
IIF(n>0,;
(c:=Upper(substr(x,n,1)), ;
o:delete(n,1),;
o:insert(,c)),nil)}
......
@2.6,1.00 DCMULTILINE m->notizen ;
FONT..... EVAL {|oMle|oMle:keyboard := bUpper}
Viele Grüße
Wolfgang
Wolfgang
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Tastatureingaben umsetzen
da du "umschalten" kannst hast du wohl einen IME installiert ... nur ist das auch der "richtige" ?Ewald hat geschrieben:ich sitzte hier vor meiner neuen Cherry-Tastatur -Deutsch-Russisch- und beschäftige mich mal wieder mit meinem Hobby kyrillische Schriftzeichen. Da alle Probleme mit dem Speichern dieser Zeichen gelöst sind, wollte ich die Eingabe mit der Tastatur komfortabler gestalten.
...
Irgendwie hatte ich gehofft, dass man auf einer solchen Tastatur von deutsch auf russisch umschalten kann und die Tastatur dann unterschiedliche Codes an den PC sendet. Geht aber nicht. Die Tasten sind nur doppelt beschriftet. Die Wirkung tritt erst dann ein, wenn man Windows von Deutsch in das Eingabegebiet Russisch umschaltet.
Auch wenn es in Word funktioniert muss das noch nicht in Xbase++ funktionieren.
Ich habe doch chinesisch auf dem Notebook mit "original" OS(), also der "richtige" IME. Trotzdem
habe ich zunächst lateinische Zeichen und muss erst auf "Pejin" umschalten damit es funktioniert.
Das ganz ist aber auf dem chinesischen System den wenn ich auf dem deutschen System bin
MUSS ich einen UniCode Font benutzen damit ich die "eingeben" kann.
Ich nehme dafür ArialUNI.TTF aus M$ Office welches auf "beiden" PC´s installiert ist.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Tastatureingaben umsetzen
Hallo Jimmi,
mit Umschalten meine ich das Eingabegebiet von WIN XP, in dem ich standardmäßig von DE auf US umschalten kann. Da habe ich noch russisch aktiviert.
Wie ich das sehe, hat das aber alles nichts mit ASCII Codes zu tun, die ich für XBASE++ brauche.
Wenn ich das russische "д" haben will, muss ich mit Arial und Codepage 204 chr(142) an den Rechner geben. Das kann ich aber mit einer Tastatur nicht, da ich damit nur bis chr(125) komme. Darüber sind dann die Sonderzeichen. Und es nutzt mir auch nichts, wenn Cherry auf das deutsche "L" zusätzlich den Buchstaben "д" druckt.
Wie oben geschrieben hatte ich beim Kauf der Tastatur wirklich gedacht, es würde auf einer solchen Tastatur einen Knopf oder sonstwas geben, mit dem man hardwaremäßig von deutsch auf russisch umschalten kann und der dann auch bewirkt, dass die Taste "L" nicht chr(76) sonder dann chr(142) sendet.
Aber das bekomme ich mit dem Vorschlag von Wolfgang irgendwie in den Griff. Bin schon mitten in der Testphase
@Wofgang,
danke für den Tip. (Hier hätte ich übrigens für deinen Zweck auch erwartet, das man das mit picture "@!" machen kann. Gut dass ich nicht auf dieses Problem gestoßen bin)
Gruß
Ewald
mit Umschalten meine ich das Eingabegebiet von WIN XP, in dem ich standardmäßig von DE auf US umschalten kann. Da habe ich noch russisch aktiviert.
Wie ich das sehe, hat das aber alles nichts mit ASCII Codes zu tun, die ich für XBASE++ brauche.
Wenn ich das russische "д" haben will, muss ich mit Arial und Codepage 204 chr(142) an den Rechner geben. Das kann ich aber mit einer Tastatur nicht, da ich damit nur bis chr(125) komme. Darüber sind dann die Sonderzeichen. Und es nutzt mir auch nichts, wenn Cherry auf das deutsche "L" zusätzlich den Buchstaben "д" druckt.
Wie oben geschrieben hatte ich beim Kauf der Tastatur wirklich gedacht, es würde auf einer solchen Tastatur einen Knopf oder sonstwas geben, mit dem man hardwaremäßig von deutsch auf russisch umschalten kann und der dann auch bewirkt, dass die Taste "L" nicht chr(76) sonder dann chr(142) sendet.
Aber das bekomme ich mit dem Vorschlag von Wolfgang irgendwie in den Griff. Bin schon mitten in der Testphase
@Wofgang,
danke für den Tip. (Hier hätte ich übrigens für deinen Zweck auch erwartet, das man das mit picture "@!" machen kann. Gut dass ich nicht auf dieses Problem gestoßen bin)
Gruß
Ewald
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Tastatureingaben umsetzen
du meinst sicherlich Arial "normal", wo es "auch" verschiede Codepages gibt.Ewald hat geschrieben:Wenn ich das russische "д" haben will, muss ich mit Arial und Codepage 204 chr(142) an den Rechner geben.
Ich bin aber der Meinung das die "System" Fonts NICHT UniCode sind !
Deshalb sprach ich ja auch von ArialUNI.TTF und da wird, je nach Codepage, auch für > CHR(128)
dann die Tastatur richtig "gemappt".
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Tastatureingaben umsetzen
Hallo Jimmy,
diese babylonische Sprachverwirrung macht mich etwas ratlos. Ist mir aber so wichtig, dass ich noch mal ganz gezielt nachfragen möchte.
Wenn ich dich richtig verstehe, sollte ich auch ohne Umsetzungstabelle weiterkommen.
Ich habe auch "Arial Unicode MS" = "ArialUNI.TTF" auf meinem Rechner. Die Schriftart ist 23566 KB und vom 12.1.1999.
Wenn ich mir mit dieser Schriftart und mit Codepage 204 einen font create
und mit diesem Font dann chr(76) = "L" doppelt belegt mit dem russischen "д" ausgebe, muss dann nach deiner Kenntnis der deutsche oder der russische Buchstabe erscheinen ?
diese babylonische Sprachverwirrung macht mich etwas ratlos. Ist mir aber so wichtig, dass ich noch mal ganz gezielt nachfragen möchte.
Wenn ich dich richtig verstehe, sollte ich auch ohne Umsetzungstabelle weiterkommen.
Ich habe auch "Arial Unicode MS" = "ArialUNI.TTF" auf meinem Rechner. Die Schriftart ist 23566 KB und vom 12.1.1999.
Wenn ich mir mit dieser Schriftart und mit Codepage 204 einen font create
Code: Alles auswählen
ofont:= xbpfont():new()
ofont:familyname:="Arial Unicode MS"
ofont:codepage:=204
ofont:create()
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Tastatureingaben umsetzen
Ewald hat geschrieben:diese babylonische Sprachverwirrung macht mich etwas ratlos.
Ewald hat geschrieben:Ist mir aber so wichtig, dass ich noch mal ganz gezielt nachfragen möchte.
russisch, wobei ich davon ausgehe das 204 auch "richtig" ist.Ewald hat geschrieben:Wenn ich dich richtig verstehe, sollte ich auch ohne Umsetzungstabelle weiterkommen.
Ich habe auch "Arial Unicode MS" = "ArialUNI.TTF" auf meinem Rechner. Die Schriftart ist 23566 KB und vom 12.1.1999.
Wenn ich mir mit dieser Schriftart und mit Codepage 204 einen font createund mit diesem Font dann chr(76) = "L" doppelt belegt mit dem russischen "д" ausgebe, muss dann nach deiner Kenntnis der deutsche oder der russische Buchstabe erscheinen ?Code: Alles auswählen
ofont:= xbpfont():new() ofont:familyname:="Arial Unicode MS" ofont:codepage:=204 ofont:create()
bei mir sieht das so aus
Code: Alles auswählen
METHOD ArtClass:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
LOCAL aPres := {{ XBP_PP_BGCLR, SP_ACOLOR() }}
LOCAL lisTheme := IsThemeActive()
LOCAL oFnt := XbpFont():new()
oFnt:familyName := "Arial Unicode MS"
oFnt:nominalPointSize := 11
oFnt:bold := .F.
oFnt:codePage := 134
* oFnt:generic := .T.
oFnt:create()
...
// zum testen
* ::oChina:rbDown := {| aPos, uNIL, oSelf | ChangeFont(SELF) }
::oChina:rbDown := {| aPos, uNIL, oSelf | ::ChCopy2CLP(oSelf) }
//
// XP Manifest will cause wrong chinese Output on German OS()
//
IF lisTheme
SetThemesOn(.F.)
ENDIF
::oChina:create()
::oChina:setData()
::oChina:setfont( oFnt )
IF lisTheme
SetThemesOn(.T.)
ENDIF
zum "Eingeben" muss ich "jedesmal", wenn ich das XbpSLE zum "editieren" freigebe, erst das
Keyboard Layout "umschalten" auf chinesisches "Pejin" den sonst habe ich ja immer noch das
"deutsche" Tastatur "Layout" und lateinische Zeichen.
der Hinweis it XP Manifest hast du ja gesehen, keine Ahnung ob es bei kyrillisch (DBCS ?) auch so
ist und SLEPic kann man wegen DBCS auch nicht verwenden. Ob Roger in der Express++ mit DBCS
umgehen kann hab ich noch nicht ausprobiert, aber im Prinzip reicht ja 1x XbpSLE um es aus-zu-
probieren
gruss by OHR
Jimmy
Jimmy