Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   KeyboardLED (Update: ohne DLL) (https://www.delphipraxis.net/54852-keyboardled-update-ohne-dll.html)

Aenogym 12. Okt 2005 20:50

Re: KeyboardLED
 
danke, unbekannte :D
:coder:

aenogym

FriFra 12. Okt 2005 20:51

Re: KeyboardLED
 
Also ich sitze hier an einem Vaio und da funktioniert es definitiv NICHT, da bei aktivem Num-Lock "uiopjklöm." = "456*123-0," ergibt... Ihr könnt es glauben oder nicht, es IST so :?

Das schrebe ch etzt mt atvem KeyED
Es werden defnitv Zechen versccth

Airblader 12. Okt 2005 21:03

Re: KeyboardLED
 
An meinem KeyLED kanns jedenfalls nicht liegen, da

1.) Es ja schließlich nur die Unit verwendet ;)
2.) Sonst ja funktioniert *fg*

Auch mal was mit aktivem KeyLED und Intervall 10ms:

Dies ist ein Testtext und wie man sieht passiert rein garnichts seltsames oder ungewöhnliches :)
Und noch was mit NumPad:
56+57*28+45
Ist auch ganz normal ;)

air
Edit:
Wenn KeyLED übrigens ein paar Leuten gefällt mach ich mich gerne auch an zusätzliche Muster und um es in den Tray zu minimieren etc... ;)
Momentan ist es aber Spielerei, weil mir partout kein sinnvoller verwendungszweck dafür einfällt *fg*

FriFra 12. Okt 2005 21:10

Re: KeyboardLED
 
Zitat:

Zitat von Airblader
An meinem KeyLED kanns jedenfalls nicht liegen, da

1.) Es ja schließlich nur die Unit verwendet ;)
2.) Sonst ja funktioniert *fg*

Und woran soll es sonst liegen, dass wenn Dein Programm läuft meine Tastatur spinnt? Komisch, komisch... sobald ich die Blinkerei abstelle funktionieren genau die Tasten, welche bei Num-Lock die Funktion wechseln wieder normal :gruebel: :wall:

Airblader 12. Okt 2005 21:18

Re: KeyboardLED
 
Ich meine damit dass der Fehler in der Unit liegt und nicht im Quelltext von mir :)

air

chaosben 13. Okt 2005 05:17

Re: KeyboardLED
 
Zitat:

Zitat von FriFra
Das schrebe ch etzt mt atvem KeyED
Es werden defnitv Zechen versccth

Ok FriFra ... du hast es so gewollt. Jetzt bist du das Versuchskaninchen. ;)
Mal eine Frage: warum steht da ein "i" im "defnitv" wenn es (das "i") anscheinend nicht gehen sollte?
Und nochwas: Probier mal bitte die Demo vom MarcoWarm. Ich will Airblader nichts unterstellen aber ... man weiß ja nie. :)

//edit:
Ok, Nachtrag: Das Verschwinden von Zeichen konnte ich jetzt mit dem Prog von Airblader und einem Intervall von etwa 10ms nachempfinden. Das ist aber in der Natur der Sache begründet, die Marco noch ein wenig erläutern will.

FriFra 13. Okt 2005 06:49

Re: KeyboardLED
 
Zitat:

Zitat von chaosben
Mal eine Frage: warum steht da ein "i" im "defnitv" wenn es (das "i") anscheinend nicht gehen sollte?
Und nochwas: Probier mal bitte die Demo vom MarcoWarm. Ich will Airblader nichts unterstellen aber ... man weiß ja nie. :)

Das "i" hatte wohl "Glück", dass es durchgekommen ist. Es war dieses Lauflicht aktiv, da gibt es schonmal den einen oder anderen Moment, wo das "i" auch mal geht ;)
Auch mit der anderen Demo tritt dieser Effekt ein...

MarcoWarm 13. Okt 2005 07:30

Re: KeyboardLED
 
Ihr habt es ja nich anders gewollt ;)
Jetzt müsst ihr nen technischen Vortrag ertragen (nich erschrecken vor dem bissl asm)

Wat macht eijentlich SetKeyboardLED?
Da stell'n mer uns ma janz dumm und sagen....

nen LED Status kann man beim Keyboard setzen, indem man einen zwei Byte-Code-Kommando an den Tastaturport sendet. (Bitte merken darauf komm ich nochmal zurück)

Also was passiert nu?

1. ne Schleife wartet, bis der Tastaturpuffer leer ist.
Code:
in    al,64h         ;
and   al,00000010b   ; den Keyboard inputbuffer prüfen
jz    makeLED        ; wenn der Leer ist ... loslegen
2. jetzt schicken wir ganz schnell ein $ED an $60
Code:
mov   al,0edh        ; Keyboard LED output Kommando $ED
out   60h,al         ; an die Adresse $60 schreiben
3. Prüfen, ob der Befehl von der Tastatur angenommen wurde

4. jetzt machen wir alle 3 LEDs an
Code:
mov   al,00000111b   ; Keyboard LED output Kommando 111
out   60h,al         ; an die Adresse $60 schreiben
ok, ok, ok... zwischendrin fehlen n paar Befehle aber das soll ja jetzt auch bloß als Anschauungsmaterial dienen.
Dem aufmerksamen Leser ist sicher aufgefallen, daß hier das Risiko besteht, daß zwischen dem Senden von $ED und 00000111 die Tastatur (also der Mensch durch drücken einer Taste) eine "Taste" in den Buffer schreibt, die dann als LED Kommando gewertet würde. Unter DOS und Win9x kann man das unterbinden indem man den Interrupt exklusiv für sich reserviert (asm -> cli) und nachher die Interruptkontrolle wieder freigibt (asm -> sti). Aber leider macht uns XP da nen Strich durch die Rechnung, da sowas nur möglich ist, wenn die Anwendung im Kernelmodus läuft.

Bitte Beachten
  • Das Risiko kann dadurch minimiert werden, daß Intervall zum setzen der LEDs zu verlängern (daß die Tastatur auch mal ne Chance bekommt)
  • ältere XT-Controller unterstützen dieses Vorgehen nicht
  • sehr neue Controller können auch spinnen
  • das Readme der Unit enthält ne Disclaimer-Section!!!

zur Beruhigung aller... chaosben ist immer noch dabei das irgendwie anders zu lösen (good luck man :thumb:)

Aenogym 14. Okt 2005 12:07

Re: KeyboardLED
 
auf jeden fall sehr nett das ganze.
ich sitz grade an nem programm, dass dieses geblinke auch halbwegs sinnvoll einsetzen kann (nein, kein traffic-monitor^^)

wenns fertig ist, stell ich's natürlich in die freeware-sparte. dauert aber nochn wenig, da ich nebenbei auch noch viele andere dinge zu tun habe ;)

aenogym

chaosben 14. Okt 2005 12:17

Re: KeyboardLED
 
Bin schon gespannt.
Zitat:

Zitat von Aenogym
wenns fertig ist, stell ich's natürlich in die freeware-sparte. dauert aber nochn wenig, da ich nebenbei auch noch viele andere dinge zu tun habe ;)

Es geht den Menschen wie den Leuten. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz