/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
taste tryk....?
Fra : Kristian Iversen


Dato : 29-03-01 13:55

hvordan for man JAVA til at fange at der bliver tryket på flere kanpper
samtidig?

jeg er igang med at lave et spil hvor man skal sidde to ved samme maskine..
og spille imod hinanden, her støtte jeg på problemet, for keyevent kan jeg
kun få til at fange en kanp adgangen

plz help....



 
 
Bertel Lund Hansen (29-03-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 29-03-01 17:20

Kristian Iversen skrev:

>hvordan for man JAVA til at fange at der bliver tryket på flere kanpper
>samtidig?

Jeg ved det ikke, men jeg vil tro at det ikke kan lade sig gøre.
Men er nemlig nødt til at tilgå hardwaren (næsten) direkte. Man
skal aflæse den bytekode som keyboardet sender, afmaske hvilke
fysiske taster det svarer til og derefter slå disses tegnkode op
i en tabel. Jeg tvivler på at det er implementeret i Java. Det er
hverken med i Pascal eller C, men der kan man indlejre
maskinkode.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jacob Møller (29-03-2001)
Kommentar
Fra : Jacob Møller


Dato : 29-03-01 17:54


> >hvordan for man JAVA til at fange at der bliver tryket på flere kanpper
> >samtidig?
>
> Jeg ved det ikke, men jeg vil tro at det ikke kan lade sig gøre.
> Men er nemlig nødt til at tilgå hardwaren (næsten) direkte. Man
> skal aflæse den bytekode som keyboardet sender, afmaske hvilke
> fysiske taster det svarer til og derefter slå disses tegnkode op
> i en tabel. Jeg tvivler på at det er implementeret i Java. Det er
> hverken med i Pascal eller C, men der kan man indlejre
> maskinkode.

Hver gang en tast bliver trykket/sluppet bliver en event naturligvis
afsendt. Lav på denne måde en tabel over hvilke taster, der holdes nede.

-Jacob
www.kiloo.dk





Jan Uhre (29-03-2001)
Kommentar
Fra : Jan Uhre


Dato : 29-03-01 23:55


Bertel Lund Hansen <nospamto@lundhansen.dk> skrev i en
nyhedsmeddelelse:rvn6ctsvueks8gm2p0h7qriepo82saorrv@sunsite.auc.dk...
> Kristian Iversen skrev:
>
> >hvordan for man JAVA til at fange at der bliver tryket på flere kanpper
> >samtidig?
>
> Jeg ved det ikke, men jeg vil tro at det ikke kan lade sig gøre.
> Men er nemlig nødt til at tilgå hardwaren (næsten) direkte. Man
> skal aflæse den bytekode som keyboardet sender, afmaske hvilke
> fysiske taster det svarer til og derefter slå disses tegnkode op
> i en tabel. Jeg tvivler på at det er implementeret i Java. Det er
> hverken med i Pascal eller C, men der kan man indlejre
> maskinkode.
>

Jo, da. Det er da både med i Pascal og C. Forstået på den måde, at
tastatur-bufferen opbevarer de tastetryk man ikke har nået at aflæse (op til
16 vist), og dem kan du til hver en tid hente.

Hvis det du tænker på, er f.eks. ved tryk på Ctrl + T for at få en anden
tegnværdi, så er det muligt, at du har ret. Det tvivler jeg godt nok på, og
det var i hvert fald ikke spørgsmålet.

Med venlig hilsen
Jan Uhre



Bertel Lund Hansen (30-03-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-03-01 18:01

Jan Uhre skrev:

>Jo, da. Det er da både med i Pascal og C.

Nej.

>Forstået på den måde, at tastatur-bufferen opbevarer de tastetryk man ikke har nået at aflæse

Ja, men man kan ikke aflæse at der trykkes på p og t *samtidig*.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jan Uhre (30-03-2001)
Kommentar
Fra : Jan Uhre


Dato : 30-03-01 22:48


Bertel Lund Hansen <nospamto@lundhansen.dk> skrev i en
nyhedsmeddelelse:3te9ctgtcf7f7kvpjgc51djd4t41tk8erj@sunsite.auc.dk...
> Jan Uhre skrev:
>
> >Jo, da. Det er da både med i Pascal og C.
>
> Nej.
>
> >Forstået på den måde, at tastatur-bufferen opbevarer de tastetryk man
ikke har nået at aflæse
>
> Ja, men man kan ikke aflæse at der trykkes på p og t *samtidig*.
>

Nej, det er sandt... men det er jo netop det, jeg skrev, i det du kom til at
klippe ud...
Du kan ikke se, at de er trykket ned samtidig... og det kan du ikke gøre i
noget som helst system simpelthen fordi hardware'n ikke kan skelne - altså
heller ikke ved at "aflæse hardware'n direkte", som du foreslog. Der vil
være enten en stribe p'er eller t'er - eller måske blandet...

De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med andre
taster, er de taster, der er beregnet til netop det - Ctrl, Shift, Alt
etc...

Jan Uhre



Bertel Lund Hansen (31-03-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 31-03-01 17:31

Jan Uhre skrev:

>Du kan ikke se, at de er trykket ned samtidig... og det kan du ikke gøre i
>noget som helst system

Jo, naturligvis kan jeg det. Det har jeg lavet flere gange i
maskinkode.

>simpelthen fordi hardware'n ikke kan skelne

Det kan den.

>- altså heller ikke ved at "aflæse hardware'n direkte", som du foreslog.

Jeg ved hvad jeg snakker om.

>De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med andre
>taster, er de taster, der er beregnet til netop det

Alle tasterne er fuldstændig ens.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jan Uhre (31-03-2001)
Kommentar
Fra : Jan Uhre


Dato : 31-03-01 18:58


Bertel Lund Hansen <nospamto@lundhansen.dk> skrev i en
nyhedsmeddelelse:ke1cct82dpguo0ld0pjaq20sn8ilkuedd5@sunsite.auc.dk...
> Jan Uhre skrev:
>
> >Du kan ikke se, at de er trykket ned samtidig... og det kan du ikke gøre
i
> >noget som helst system
>
> Jo, naturligvis kan jeg det. Det har jeg lavet flere gange i
> maskinkode.
>

Tja, det nytter næppe at diskutere det yderligere, men jeg har meget svært
ved at tro på det.

Men da jeg nødig vil kalde dig en løgner uden hårde beviser på det modsatte,
vil jeg i stedet bede dig poste den stump maskinkode, der skal til at aflæse
2 eller flere vilkårlige taster, der er trykket ned på samme tid.

Det er måske ikke ret tit, man vil få brug for den slags, men det kan da
være brugbart.

Jan Uhre



Bertel Lund Hansen (31-03-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 31-03-01 21:21

Jan Uhre skrev:

>Men da jeg nødig vil kalde dig en løgner uden hårde beviser på det modsatte,
>vil jeg i stedet bede dig poste den stump maskinkode, der skal til at aflæse
>2 eller flere vilkårlige taster, der er trykket ned på samme tid.

Jeg har ikke den maskinkode liggende til en pc, og jeg gider ikke
lave det fordi jeg har travlt med andre ting.

Hvis du ikke vil lære noget af mig så spring mine indlæg over.

Løgner kan du kalde mig den dag du *ved* at jeg tager fejl og at
jeg *med vilje* har påstået noget forkert. Indtil da vil jeg råde
dig til at stikke piben ind.

>Det er måske ikke ret tit, man vil få brug for den slags, men det kan da
>være brugbart.

Det brugtes (bruges?) i spil på 64'eren til hemmelige koder. I
spillet "Spring" skulle man holde s p r i n og g nede samtidig
for at få uendeligt mange liv.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jan Uhre (01-04-2001)
Kommentar
Fra : Jan Uhre


Dato : 01-04-01 01:03


Bertel Lund Hansen <nospamto@lundhansen.dk> skrev i en
nyhedsmeddelelse:8pecctc5vfjp3aj0mnaqr66jqmdmd90ns5@sunsite.auc.dk...
> Jan Uhre skrev:
>
> >Men da jeg nødig vil kalde dig en løgner uden hårde beviser på det
modsatte,
> >vil jeg i stedet bede dig poste den stump maskinkode, der skal til at
aflæse
> >2 eller flere vilkårlige taster, der er trykket ned på samme tid.
>
> Jeg har ikke den maskinkode liggende til en pc, og jeg gider ikke
> lave det fordi jeg har travlt med andre ting.

Nej, det regnede jeg heller ikke med. Der er mange her, der har lavet de
mest utrolige ting i assembler og meget andet, men det er altid forsvundet,
eller ikke konverterbart, når det skal bruges.


> Hvis du ikke vil lære noget af mig så spring mine indlæg over.
>
> Løgner kan du kalde mig den dag du *ved* at jeg tager fejl og at
> jeg *med vilje* har påstået noget forkert. Indtil da vil jeg råde
> dig til at stikke piben ind.

Jeg skrev jo også netop, at jeg ikke ville kalde dig løgner, uden hårde
beviser... jeg har ingen hårde beviser, altså kaldte jeg dig ikke en løgner,
selv om jeg formulerede mig dårligt (provokerende).


> >Det er måske ikke ret tit, man vil få brug for den slags, men det kan da
> >være brugbart.
>
> Det brugtes (bruges?) i spil på 64'eren til hemmelige koder. I
> spillet "Spring" skulle man holde s p r i n og g nede samtidig
> for at få uendeligt mange liv.

Hmmm... ja, det er jo sandt. Nu havde jeg en Spectrum, da alle andre havde
64'eren, men der er jo også M I L koden i Wolfenstein. Den slags ville jo
ikke kunne laves, hvis man ikke kunne aflæse, at tasterne var trykket ned
samtidig.

Jeg må jo bøje mig og erkende, at jeg tog fejl, selv om jeg for en halv dag
siden ville have svoret på, at det er en umulighed. Selv de allerbedste kan
jo tage fejl, men det kunne jeg også.

Tak for din stædighed (læses vedholdenhed . Nu vil jeg prøve at søge lidt
mere ihærdigt efter information om dette emne.

Jan Uhre



Kristian Iversen (01-04-2001)
Kommentar
Fra : Kristian Iversen


Dato : 01-04-01 20:14


"Jan Uhre" <uhreNOSP@Memail.dk> skrev i en meddelelse
news:9a5rb6$1mha$1@news.cybercity.dk...
>
> Bertel Lund Hansen <nospamto@lundhansen.dk> skrev i en
> nyhedsmeddelelse:8pecctc5vfjp3aj0mnaqr66jqmdmd90ns5@sunsite.auc.dk...
> > Jan Uhre skrev:
> >
> > >Men da jeg nødig vil kalde dig en løgner uden hårde beviser på det
> modsatte,
> > >vil jeg i stedet bede dig poste den stump maskinkode, der skal til at
> aflæse
> > >2 eller flere vilkårlige taster, der er trykket ned på samme tid.
> >
> > Jeg har ikke den maskinkode liggende til en pc, og jeg gider ikke
> > lave det fordi jeg har travlt med andre ting.
>
> Nej, det regnede jeg heller ikke med. Der er mange her, der har lavet de
> mest utrolige ting i assembler og meget andet, men det er altid
forsvundet,
> eller ikke konverterbart, når det skal bruges.
>
>
> > Hvis du ikke vil lære noget af mig så spring mine indlæg over.
> >
> > Løgner kan du kalde mig den dag du *ved* at jeg tager fejl og at
> > jeg *med vilje* har påstået noget forkert. Indtil da vil jeg råde
> > dig til at stikke piben ind.
>
> Jeg skrev jo også netop, at jeg ikke ville kalde dig løgner, uden hårde
> beviser... jeg har ingen hårde beviser, altså kaldte jeg dig ikke en
løgner,
> selv om jeg formulerede mig dårligt (provokerende).
>
>
> > >Det er måske ikke ret tit, man vil få brug for den slags, men det kan
da
> > >være brugbart.
> >
> > Det brugtes (bruges?) i spil på 64'eren til hemmelige koder. I
> > spillet "Spring" skulle man holde s p r i n og g nede samtidig
> > for at få uendeligt mange liv.
>
> Hmmm... ja, det er jo sandt. Nu havde jeg en Spectrum, da alle andre havde
> 64'eren, men der er jo også M I L koden i Wolfenstein. Den slags ville
jo
> ikke kunne laves, hvis man ikke kunne aflæse, at tasterne var trykket ned
> samtidig.
>
> Jeg må jo bøje mig og erkende, at jeg tog fejl, selv om jeg for en halv
dag
> siden ville have svoret på, at det er en umulighed. Selv de allerbedste
kan
> jo tage fejl, men det kunne jeg også.
>
> Tak for din stædighed (læses vedholdenhed . Nu vil jeg prøve at søge
lidt
> mere ihærdigt efter information om dette emne.
>
> Jan Uhre

det vil altså sige der skal noget langhåret kode til at løse det problem....

æv jeg trode lige der var en nem smut vej..



Jacob Møller (01-04-2001)
Kommentar
Fra : Jacob Møller


Dato : 01-04-01 21:14



> det vil altså sige der skal noget langhåret kode til at løse det
problem....
>
> æv jeg trode lige der var en nem smut vej..

Nej, det skal der ikke... Du skal bare lave en passende keyhandler, der
styrer hvilke taster, der er trykket ned og sluppet. Event.KEY_PRESS og
Event.KEY_RELEASE bliver kaldt HVER gang en ny tast trykkes ned/slippes.
Fejlen som mange begår er at udføre én handling for hver gang en
keypress-event bliver kaldt istedet for at lagre den i en tabel. Du kan med
fordel lave nogle små tests med det, så du får en fornemmelse af hvordan det
fungerer.

-Jacob
www.kiloo.dk




Kristian Iversen (01-04-2001)
Kommentar
Fra : Kristian Iversen


Dato : 01-04-01 21:31


"Jacob Møller" <jacob@jvector.dk> skrev i en meddelelse
news:9a827l$1rkc$1@news.cybercity.dk...
>
>
> > det vil altså sige der skal noget langhåret kode til at løse det
> problem....
> >
> > æv jeg trode lige der var en nem smut vej..
>
> Nej, det skal der ikke... Du skal bare lave en passende keyhandler, der
> styrer hvilke taster, der er trykket ned og sluppet. Event.KEY_PRESS og
> Event.KEY_RELEASE bliver kaldt HVER gang en ny tast trykkes ned/slippes.
> Fejlen som mange begår er at udføre én handling for hver gang en
> keypress-event bliver kaldt istedet for at lagre den i en tabel. Du kan
med
> fordel lave nogle små tests med det, så du får en fornemmelse af hvordan
det
> fungerer.
>
> -Jacob
> www.kiloo.dk

takker jeg tror jeg ved hvad det er du snakker om... takker endnu engang
hvorfor gøre det svære end det er

; )
takker igen.



Bertel Lund Hansen (02-04-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-04-01 06:22

Jacob Møller skrev:

>Fejlen som mange begår er at udføre én handling for hver gang en
>keypress-event bliver kaldt istedet for at lagre den i en tabel.

Hvordan kan man så se forskel på om de trykkes én ad gangen eller
på én gang?

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jacob Møller (02-04-2001)
Kommentar
Fra : Jacob Møller


Dato : 02-04-01 09:34


> >Fejlen som mange begår er at udføre én handling for hver gang en
> >keypress-event bliver kaldt istedet for at lagre den i en tabel.
>
> Hvordan kan man så se forskel på om de trykkes én ad gangen eller
> på én gang?

Det kan du aflæse ved et opslag i din tabel. I kraftigt simpliceret udgave
er tabellen 65536 boolean enheder stor.

if (KeyTabel[ integer værdien af 'a'] && KeyTabel[ integer værdien af 'b'])
A og B er trykket ned samtidigt...

Et array med 65536 pladser er for ressourcekrævende... Det kan gøres
smartere :)

-Jacob
www.kiloo.dk




Jan Oksfeldt Jonasen (07-04-2001)
Kommentar
Fra : Jan Oksfeldt Jonasen


Dato : 07-04-01 22:45

Bertel Lund Hansen <nospamto@lundhansen.dk> wrote:

> Hvordan kan man så se forskel på om de trykkes én ad gangen eller
> på én gang?

Når der kommer en KEYPRESSED event registrere du denne i en table eller
hhvad som helst, når den tilsvarende KEYRELEASED kommer, fjerner du den
tidligere fra tabellen. Samtidigt med at du modtager pressed eventen,
kigger du fluks tabellen igennnem for at se, om der sammenlagt er de
pressed events, du har brug for, for at aktivere den
"tryk-på-alle-disse-taster"-kode.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

You'll get two operating systems in one! (Kommende reklame slogan)

Peter Lind (02-04-2001)
Kommentar
Fra : Peter Lind


Dato : 02-04-01 09:37


"Bertel Lund Hansen" <nospamto@lundhansen.dk> wrote in message
news:8pecctc5vfjp3aj0mnaqr66jqmdmd90ns5@sunsite.auc.dk...
> Jan Uhre skrev:
>
> >Men da jeg nødig vil kalde dig en løgner uden hårde beviser på det
modsatte,
> >vil jeg i stedet bede dig poste den stump maskinkode, der skal til at
aflæse
> >2 eller flere vilkårlige taster, der er trykket ned på samme tid.
>
> Jeg har ikke den maskinkode liggende til en pc, og jeg gider ikke
> lave det fordi jeg har travlt med andre ting.
>
> Hvis du ikke vil lære noget af mig så spring mine indlæg over.
>
> Løgner kan du kalde mig den dag du *ved* at jeg tager fejl og at
> jeg *med vilje* har påstået noget forkert. Indtil da vil jeg råde
> dig til at stikke piben ind.

Nu ville Jan jo netop ikke kalde dig for løgner, men det vil jeg da gerne...
Man kan IKKE aflæse om to taster er trykket ned samtidigt på en pc ! Heller
ikke i maskinkode.

Du, Bertel, skrev også nogle andre ting tidligere i debatten, som jeg vil
tillade mig at betvivle:

>Jeg ved hvad jeg snakker om.

og

>Alle tasterne er fuldstændig ens.

Tillad mig at uddybe:

> Det brugtes (bruges?) i spil på 64'eren til hemmelige koder. I
> spillet "Spring" skulle man holde s p r i n og g nede samtidig
> for at få uendeligt mange liv.

Se nu er Commodore64 jo noget helt andet, der kan man nemlig godt, men på
pcen kan man ikke.

På alle maskiner er tastaturet opdelt i en matrix, hvor hver tast så
forbinder et krydspunkt i denne matrix. Med den gode gamle Commodore64 er
denne matrix på 8x8 ledninger, altså ialt 64 taster (pudsigt nok).
For at aflæse hvilken tast (eller hvilke taster) der er trykket ned, sender
man forskellige bitmønstre ud på de 8 ledninger ( 1, 2, 4, 8 osv ) og
aflæser resultatet på de 8 andre ledninger.
Som regel styrede 64'erens operativsystem (kernal) det for en, så man ikke
skulle bekymre sig, men hvis man ønskede lidt mere specielle ting (såsom at
checke om nogle taster blev holdt nede samtidig) så måtte man selv skrive
denne scan-rutine. Og det gjorde man så.

Men på pc'en fungerer det lidt anderledes. Tasterne er stadig delt op i en
matrix, og den skal stadig scannes, men denne scanning foretages af en
microcontroller indbygget i keyboardet, der efterfølgende sender en kode for
den sidst trykkede eller slupne tast. Den scanning kan man ikke ændre på.

Hvis to taster bliver trykket ned samtidig bliver der sendt to koder fra
keyboardet til pc'en. Når den ene bliver sluppet bliver der sendt en kode
mere. Så for at undersøge om flere taster er trykket ned samtidig er man
nødt til at opsamle alle disse key-events, og checke om der er kommet flere
koder for taster der er trykket, end for taster der er sluppet - så er der
nemlig flere på en gang !

Hvis en tast er trykket ned samtidig med Shift, så sendes koden for Shift
efterfulgt af koden for tasten, så simpelt er det. Det er pc'ens keyboard
bios der tager sig af at håndtere shift, ctrl og Caps Lock, så på det punkt
har du selvfølgelig ret i at alle tasterne er fuldstændig ens, men hvis
f.eks et p er holdt nede, så vil keyboardet sende koden for p gentagne
gange, hvorimod f.eks pause-tasten ikke bliver sendt mere end en gang.

Den gode gamle Amiga havde iøvrigt Shift, Ctrl og de andre special-taster i
en lille matrix for sig selv, så de altid kunne trykkes ned samtidig med
hinanden og med alle mulige andre taster, men det lader ikke til at være
tilfældet med pc-keyboards.

I de fleste sprog som skal virke bare nogenlunde under forskellige
operativ-systemer kan man ikke tilgå tastaturet direkte, men må nøjes med
BIOSen, eller operativsystemets keyboard-handler, så der er endnu mindre
mulighed for selv at lave ekstra sjove kode-muligheder...

Så nej, man kan ikke lave noget kode der ser at to taster trykkes ned
samtidig, men man kan lave noget kode der undersøger om en anden tast bliver
trykket ned, inden den første bliver sluppet, ganske som Jacob Møller
skriver senere i denne tråd.

Så lad være med at være så påståelig, og svine andre til, når du åbenbart
ikke ved hvad du snakker om !

med venlig hilsen
Peter Lind
-ex. hardwarenørd



Thorbjørn Ravn Ander~ (02-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 02-04-01 18:36

Peter Lind wrote:

> Nu ville Jan jo netop ikke kalde dig for løgner, men det vil jeg da gerne...
> Man kan IKKE aflæse om to taster er trykket ned samtidigt på en pc ! Heller
> ikke i maskinkode.

Tillad mig at rette: Man kan IKKE konstatere om to _vilkårlige_ taster
er trykket ned samtidig på et PC-tastatur hvis dette tastatur er
designet som de var dengang du satte dig ind i tingene.

Jeg mener, uden at have noget at have det i udover empiriske data, at
moderne tastaturer ikke har denne begrænsning.

--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Bertel Lund Hansen (03-04-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-04-01 14:16

Peter Lind skrev:

>Nu ville Jan jo netop ikke kalde dig for løgner, men det vil jeg da gerne...

Så vil jeg gerne lære dig forskellen på løgn og fejltagelser. En
løgn fremsættes bevidst med en skummel hensigt. Det er ikke
tilfældet med en fejltagelse.

Hvis det ikke er nok forklaring, så skriv en mail, så skal jeg
uddybe. Du kan evt. også forhøre dig i dk.kultur.sprog.

>Man kan IKKE aflæse om to taster er trykket ned samtidigt på en pc ! Heller
>ikke i maskinkode.

Jeg forskede lidt i det i går, og jeg har åbenbart husket forkert
og blandet 64'eren sammen med pc'en - inspireret af det faktum at
man kan checke skiftetasterne uafhængigt, og at man kan checke
Ctrl-Alt-Del separat. Jeg har på pc kun benyttet Dos-metoder,
kaldt via Pascal eller maskinkode, og derved kan man åbenbart
ikke aflæse flere taster på én gang. Jeg beklager og undskylder
min fejltagelse.

>Så lad være med at være så påståelig

Taget til efterretning (omend en så dybt indgroet vane kan være
svær at lægge af)

>og svine andre til

Vis mig venligst præcis hvor jeg har svinet nogen til.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jan Oksfeldt Jonasen (07-04-2001)
Kommentar
Fra : Jan Oksfeldt Jonasen


Dato : 07-04-01 22:45

Peter Lind <pl@edimatic.dk> wrote:

> Nu ville Jan jo netop ikke kalde dig for løgner, men det vil jeg da gerne...
> Man kan IKKE aflæse om to taster er trykket ned samtidigt på en pc ! Heller
> ikke i maskinkode.
>
Hvordan genereres keypressed events så? Med disse vil det være
forholdsvist enkelt at holde styr på, hvilke taster der er trykket ned i
øjeblikket.

--
Mvh/re Jan Jonasen (en anden Jan)
jonasen (at) it (dot) dk

You'll get two operating systems in one! (Kommende reklame slogan)

Thorbjoern Ravn Ande~ (02-04-2001)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 02-04-01 16:17

On Fri, 30 Mar 2001, Jan Uhre wrote:

> De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med andre
> taster, er de taster, der er beregnet til netop det - Ctrl, Shift, Alt
> etc...

Har du tænkt over hvordan fx et bilspil holder styr på at man trykker på
højre-venstre imens man har pil-op i bund?

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk


Jan Uhre (02-04-2001)
Kommentar
Fra : Jan Uhre


Dato : 02-04-01 22:46


Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk> skrev i en
nyhedsmeddelelse:Pine.LNX.4.21.0104021716200.11064-100000@mimer.null.dk...
> On Fri, 30 Mar 2001, Jan Uhre wrote:
>
> > De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med andre
> > taster, er de taster, der er beregnet til netop det - Ctrl, Shift, Alt
> > etc...
>
> Har du tænkt over hvordan fx et bilspil holder styr på at man trykker på
> højre-venstre imens man har pil-op i bund?
>
> --
> Thorbjørn Ravn Andersen
> http://unixsnedkeren.dk
>

Ja, nu kommer du jo lidt sent med dette spørgsmål, eftersom jeg senere har
måtte erkende, at jeg *muligvis* tog fejl.

....og ja, naturligvis har jeg tænkt over det. Hver tast har jo stadig sin
egen funktion. Op sætter farten op, og højre drejer rattet til højre. Og det
kan lige så nemt ske ved at hhv. pil op og pil højre skiftevis sendes til
operativ-systemet.

Derimod har jeg lidt svært ved at forklare, hvordan man f.eks. i det gamle
Wolfenstein kunne få uendeligt whatever ved at trykke M I og L ned
samtidig... for jeg har skam prøvet at trykke dem ned efter hinanden, og det
virkede ikke.

Men nu er Peter Lind jo heldigvis sprunget mig til undsætning med en
forklaring, der - uden at jeg ved det - vil kunne betyde, at keyboards godt
kan være styret, som jeg hidtil har antaget, men hvor funktionaliteten kan
omgåes til at udlede at ovenstående taste-kombination er trykket ned
samtidig og ikke i sekvens.

Men tro mig, jeg har søgt vidt og bredt på nettet for at be- eller afkræfte
min antagelse, og mærkeligt har jeg ikke fundet noget om dette specifikke
spørgsmål. Men det er heller ikke en let søgning.

Hvis det er nogen, der kan foretage en bedre søgning og finde noget (gerne
halv-officielt eller mere) materiale, der beskriver styring af et
pc-tastaturs hardware, så må de meget gerne poste et link eller 2. Det ville
spare denne NG for en dobbelt så lang tråd som dette, der forlængst har nået
det stadie, hvor det kun er påstande og fornærmelser, der slynges ud.

Med venlig hilsen
Jan Uhre



Thorbjørn Ravn Ander~ (03-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 03-04-01 18:03

Jan Uhre wrote:
>
> Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk> skrev i en
> nyhedsmeddelelse:Pine.LNX.4.21.0104021716200.11064-100000@mimer.null.dk...
> > On Fri, 30 Mar 2001, Jan Uhre wrote:
> >
> > > De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med andre
> > > taster, er de taster, der er beregnet til netop det - Ctrl, Shift, Alt
> > > etc...
> >
> > Har du tænkt over hvordan fx et bilspil holder styr på at man trykker på
> > højre-venstre imens man har pil-op i bund?
> >
> > --
> > Thorbjørn Ravn Andersen
> > http://unixsnedkeren.dk
> >
>
> Ja, nu kommer du jo lidt sent med dette spørgsmål, eftersom jeg senere har
> måtte erkende, at jeg *muligvis* tog fejl.

Du tager fejl. Accepter det venligst.

> Hvis det er nogen, der kan foretage en bedre søgning og finde noget (gerne
> halv-officielt eller mere) materiale, der beskriver styring af et
> pc-tastaturs hardware, så må de meget gerne poste et link eller 2. Det ville
> spare denne NG for en dobbelt så lang tråd som dette, der forlængst har nået
> det stadie, hvor det kun er påstande og fornærmelser, der slynges ud.

Gerne. Følgende tog 30 sekunder at finde ved at give Google søgeordene
"keyboard interface hardware". Det ser forholdsvist udtømmende ud.

http://webster.cs.ucr.edu/Page_asm/ArtofAssembly/CH20/CH20-2.html

Hvis der er nogen Windowsprogrammører som vil finde noget tilsvarende
for Windows32 vil det være fint. Hvis du har adgang til et Linuxsystem
så leg lidt med "xev".

Herudover er der ingenting der siger at alle computerarkitekturers
tastaturer opfører sig ligesom et PC-tastatur...

--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Martin Moller Peders~ (03-04-2001)
Kommentar
Fra : Martin Moller Peders~


Dato : 03-04-01 18:49

In <3ACA0229.5E1280D1@bigfoot.com> =?iso-8859-1?Q?Thorbj=F8rn?= Ravn Andersen <thunderbear@bigfoot.com> writes:

>Gerne. Følgende tog 30 sekunder at finde ved at give Google søgeordene
>"keyboard interface hardware". Det ser forholdsvist udtømmende ud.

>http://webster.cs.ucr.edu/Page_asm/ArtofAssembly/CH20/CH20-2.html

>Hvis der er nogen Windowsprogrammører som vil finde noget tilsvarende
>for Windows32 vil det være fint. Hvis du har adgang til et Linuxsystem
>så leg lidt med "xev".

xev ? xev - print contents of X events ?

/Martin


Thorbjørn Ravn Ander~ (03-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 03-04-01 18:54

Martin Moller Pedersen wrote:

>
> xev ? xev - print contents of X events ?

Ja. Tastetryk er hændelser under X.

Prøøøv de', prøøøv de'.
--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Jan Uhre (04-04-2001)
Kommentar
Fra : Jan Uhre


Dato : 04-04-01 23:24


Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> skrev i en
nyhedsmeddelelse:3ACA0229.5E1280D1@bigfoot.com...
> Jan Uhre wrote:
> >
> > Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk> skrev i en
> >
nyhedsmeddelelse:Pine.LNX.4.21.0104021716200.11064-100000@mimer.null.dk...
> > > On Fri, 30 Mar 2001, Jan Uhre wrote:
> > >
> > > > De eneste du kan aflæse, hvorvidt de er trykket ned "samtidig" med
andre
> > > > taster, er de taster, der er beregnet til netop det - Ctrl, Shift,
Alt
> > > > etc...
> > >
> > > Har du tænkt over hvordan fx et bilspil holder styr på at man trykker

> > > højre-venstre imens man har pil-op i bund?
> > >
> > > --
> > > Thorbjørn Ravn Andersen
> > > http://unixsnedkeren.dk
> > >
> >
> > Ja, nu kommer du jo lidt sent med dette spørgsmål, eftersom jeg senere
har
> > måtte erkende, at jeg *muligvis* tog fejl.
>
> Du tager fejl. Accepter det venligst.

Jamen, det har jeg som sagt ikke tænkt mig bare at acceptere med mindre jeg
ser noget konkret. Men trods min opfordring vælger du altså at fortsætte med
påstande of fornærmelser.


> > Hvis det er nogen, der kan foretage en bedre søgning og finde noget
(gerne
> > halv-officielt eller mere) materiale, der beskriver styring af et
> > pc-tastaturs hardware, så må de meget gerne poste et link eller 2. Det
ville
> > spare denne NG for en dobbelt så lang tråd som dette, der forlængst har
nået
> > det stadie, hvor det kun er påstande og fornærmelser, der slynges ud.
>
> Gerne. Følgende tog 30 sekunder at finde ved at give Google søgeordene
> "keyboard interface hardware". Det ser forholdsvist udtømmende ud.
>
> http://webster.cs.ucr.edu/Page_asm/ArtofAssembly/CH20/CH20-2.html
>

Tog det kun 30 sekunder? ...iihhh, hvor er du altså dygtig. Den fandt jeg
også på omtrent lige så kort tid med søgeordene "+hardware +keyboard
+simultaneous +key". Men hvis du havde orket at se, hvad du havde fundet,
ville du nok ikke spille lige så smart, som du nu gør! Der står nemlig intet
om, at du kan aflæse om flere vilkårlige taster er trykket ned samtidig.


> Hvis der er nogen Windowsprogrammører som vil finde noget tilsvarende
> for Windows32 vil det være fint. Hvis du har adgang til et Linuxsystem
> så leg lidt med "xev".
>
> Herudover er der ingenting der siger at alle computerarkitekturers
> tastaturer opfører sig ligesom et PC-tastatur...
>

Til gengæld fandt jeg nu i min stædighed en side, der bekræfter det
modsatte. Den siger nemlig, at et keyboard sagtens kan håndtere, at flere
taster trykkes ned samtidig, men koderne sendes stadig sekventielt, og så er
vi jo lige vidt. Er det så valid information? Tja, det ved jeg ikke. Men det
ser mere sagligt ud end din "Du tager fejl. Accepter det venligst."
kommentar.

Du kan jo læse lidt her, hvis det ikke er for meget information.

http://physinfo.ulb.ac.be/cit_courseware/hf100/hf100m6.htm
****************************************************
The encoder enables each row in turn, and checks for a change in state in
the column lines. If there is a change in state, this means a key has been
depressed. The row and column values are used to look up a table which
returns the key value.

The encoder continually repeats the scanning cycle for all the rows in the
matrix. Problems occur when more than one key in a column is depressed
simultaneously. These situations are handled in the following manner,

n key lockout
the first key depressed is detected and any others pressed before it is
released are ignored. Ignored keys need to be pressed again.


n key roll-over
Keys pressed one after the other are detected in the correct sequence as
long as they are depressed in different scanning cycles. A key depressed and
recognised in one scanning cycle will not be recognised again in a
subsequent scanning cycle unless it is first released.
If more than one key is depressed during the same scanning cycle, the first
scanned key is returned, then ignored till it is released. The second key is
picked up on the next scanning cycle, then ignored till it is released.

n key roll-over is essential for handling multiple simultaneous key presses.
****************************************************





Thorbjørn Ravn Ander~ (05-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-04-01 03:42

Jan Uhre wrote:

> Jamen, det har jeg som sagt ikke tænkt mig bare at acceptere med mindre jeg
> ser noget konkret. Men trods min opfordring vælger du altså at fortsætte med
> påstande of fornærmelser.

Så siger vi det.

> Tog det kun 30 sekunder? ...iihhh, hvor er du altså dygtig. Den fandt jeg
> også på omtrent lige så kort tid med søgeordene "+hardware +keyboard
> +simultaneous +key". Men hvis du havde orket at se, hvad du havde fundet,
> ville du nok ikke spille lige så smart, som du nu gør! Der står nemlig intet
> om, at du kan aflæse om flere vilkårlige taster er trykket ned samtidig.

Du kan ikke spørge tastaturet direkte hvilke taster der netop nu er
trykket ned, men du kan holde styr på hvilke taster der er blevet
trykket ned og ikke sluppet igen. Herved er det muligt at holde styr på
den information du ønsker at have.

Den sektion jeg selv havde set som jeg mente skulle være nok til at
besvare dit spørgsmål, bestod i:


The keyboard microcontroller also sends data to the on-board
microcontroller for processing and release to the system through port
60h. Most of these values are
key press scan codes (up or down codes), but the keyboard transmits
several other values as well. A well designed keyboard interrupt service
routine should be
able to handle (or at least ignore) the non-scan code values. Any
particular, any program that sends commands to the keyboard needs to be
able to handle the
resend and acknowledge commands that the keyboard microcontroller
returns in port 60h. The keyboard microcontroller sends the following
values to the system:


Bemærk henvisningen til "scan codes (up or down codes)", som netop er
disse "tast sænket", "tast løftet" informationer...

Herudover vil jeg gerne henvise til den bog der lærte mig en hel del om
hardware

   Andrew S. Tanenbaum: Structured Computer Organization


http://www.amazon.com/exec/obidos/ASIN/0130959901/o/qid=986437957/sr=2-3/107-5171503-9924518

Det er længe siden jeg har læst den og jeg kan ikke huske hvordan det
netop du gerne vil vide er dækket. Derfor må du nøjes med at "jeg mener
tastaturinterfaces er beskrevet her".

> Til gengæld fandt jeg nu i min stædighed en side, der bekræfter det
> modsatte. Den siger nemlig, at et keyboard sagtens kan håndtere, at flere
> taster trykkes ned samtidig, men koderne sendes stadig sekventielt, og så er
> vi jo lige vidt. Er det så valid information? Tja, det ved jeg ikke. Men det
> ser mere sagligt ud end din "Du tager fejl. Accepter det venligst."
> kommentar.

_Selvfølgelig_ sendes koderne sekventielt - det er en computer vi
snakker om her, hvor informationerne går over et sekventielt interface.
Spørgsmålet er hvor kort en "scanning cycle" er, og det aner jeg ikke.
Det nærmeste jeg hurtigt kunne finde var

   http://www.arne.si/~mauricio/Kbdfaq.htm

hvor der antydes at i 3.2 at det sker adskillige tusind gange i
sekundet.

"This keyboard sends data not just of occurence of a key press and
release but it scans the keyboard keys thousands of times a second and
sends data to the computer as to whether a key has been pressed and
whether it has been released, and in the order these occurred, and it
stores this change data in a buffer waiting to send it as soon as the
computer will accept it. This makes this keyboard extremely
configurable, as we always know then what has occurred and the key
presses and releases can be noted with great complexity and interpreted
to our heart's content."

Spørgsmålet er så om tidsopløsningen er stor nok til at det dækker dit
"samtidig"-begreb? Det kan kun du svare på.


>
> Du kan jo læse lidt her, hvis det ikke er for meget information.

Næh nej, altid klar til at blive klogere.

--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Jan Uhre (05-04-2001)
Kommentar
Fra : Jan Uhre


Dato : 05-04-01 17:52


Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> skrev i en
nyhedsmeddelelse:3ACBDB86.C21341D4@bigfoot.com...
> Jan Uhre wrote:
<SNIP>
>
> Du kan ikke spørge tastaturet direkte hvilke taster der netop nu er
> trykket ned, men du kan holde styr på hvilke taster der er blevet
> trykket ned og ikke sluppet igen. Herved er det muligt at holde styr på
> den information du ønsker at have.

Ja, sådan har jeg også tolket informationen.


> Den sektion jeg selv havde set som jeg mente skulle være nok til at
> besvare dit spørgsmål, bestod i:
>
> The keyboard microcontroller also sends data to the on-board
> microcontroller for processing and release to the system through port
> 60h. Most of these values are
> key press scan codes (up or down codes), but the keyboard transmits
> several other values as well. A well designed keyboard interrupt service
> routine should be
> able to handle (or at least ignore) the non-scan code values. Any
> particular, any program that sends commands to the keyboard needs to be
> able to handle the
> resend and acknowledge commands that the keyboard microcontroller
> returns in port 60h. The keyboard microcontroller sends the following
> values to the system:

Altså ikke det samme som at aflæse hardware'n direkte for at se, om 2 taster
trykkes ned samtidig. Men nok til at kunne udlede at de øvrige taster ikke
blev sluppet inden. Det er klart tilstrækkeligt, men har stadig ikke
sammenhæng med, hvad Bertel påstod.


> Bemærk henvisningen til "scan codes (up or down codes)", som netop er
> disse "tast sænket", "tast løftet" informationer...
>
> Herudover vil jeg gerne henvise til den bog der lærte mig en hel del om
> hardware
>
> Andrew S. Tanenbaum: Structured Computer Organization

Tak, men jeg har skam læst adskillige af hans bøger allerede under min
uddannelse (og efter). Den mand ved, hvad han taler om.

<SNIP>

> Spørgsmålet er så om tidsopløsningen er stor nok til at det dækker dit
> "samtidig"-begreb? Det kan kun du svare på.

Tja, tusindvis af scans i sekundet... det er alligevel en smule hurtigere
end mit 10-finger system


> > Du kan jo læse lidt her, hvis det ikke er for meget information.
>
> Næh nej, altid klar til at blive klogere.

Jep. Men vi har jo heller ikke noget valg, hvis vi også vil være med om bare
5 år.

Med venlig hilsen
Jan Uhre



Thorbjørn Ravn Ander~ (05-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-04-01 18:24

Jan Uhre wrote:

> Altså ikke det samme som at aflæse hardware'n direkte for at se, om 2 taster
> trykkes ned samtidig. Men nok til at kunne udlede at de øvrige taster ikke
> blev sluppet inden. Det er klart tilstrækkeligt, men har stadig ikke
> sammenhæng med, hvad Bertel påstod.

Hvad har Bertel påstået som ikke giver mening?

Bemærk at vi nu har været i bund i PC-tastaturer for at overbevise dig
om at et sådant sender "op"+"ned" hændelser som driveren så skal holde
styr på.

Det oprindelige spørgsmål var ikke PC-specifikt men Java-specifikt, hvor
mere vidende personer end jeg meldte at modellen er den samme.
Hæve+sænke.

> > Herudover vil jeg gerne henvise til den bog der lærte mig en hel del om
> > hardware
> >
> > Andrew S. Tanenbaum: Structured Computer Organization
>
> Tak, men jeg har skam læst adskillige af hans bøger allerede under min
> uddannelse (og efter). Den mand ved, hvad han taler om.

I så fald synes jeg du skulle overveje at læse den igen. Dine indlæg i
denne debat tyder på at den viden du derved opnåede, er blevet mere end
en anelse rusten.

Hvis du også har "Operating Systems" bogen stående fra fordums tid, kan
du kigge på Minix-tastaturdriveren, og se hvordan den behandler de
scancoder og hvordan den holder styr på Shift-taster med videre. Jeg
går ud fra du godt kan læse C-kode selv om den er skrevet af Tanenbaum
(Minixkildeteksten er noget af det styggeste jeg nogensinde har set, og
jeg har nok sat mig mere ind i den end de fleste).

--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Kristian Iversen (05-04-2001)
Kommentar
Fra : Kristian Iversen


Dato : 05-04-01 19:08


"Thorbjørn Ravn Andersen" <thunderbear@bigfoot.com> skrev i en meddelelse
news:3ACCAA41.160D974E@bigfoot.com...
> Jan Uhre wrote:
>
> > Altså ikke det samme som at aflæse hardware'n direkte for at se, om 2
taster
> > trykkes ned samtidig. Men nok til at kunne udlede at de øvrige taster
ikke
> > blev sluppet inden. Det er klart tilstrækkeligt, men har stadig ikke
> > sammenhæng med, hvad Bertel påstod.
>
> Hvad har Bertel påstået som ikke giver mening?
>
> Bemærk at vi nu har været i bund i PC-tastaturer for at overbevise dig
> om at et sådant sender "op"+"ned" hændelser som driveren så skal holde
> styr på.
>
> Det oprindelige spørgsmål var ikke PC-specifikt men Java-specifikt, hvor
> mere vidende personer end jeg meldte at modellen er den samme.
> Hæve+sænke.

jeps og det virker som det skal.... og tak skal i have for hjælpen

BTW: hvorfor smutte ud se på hardwaren...?? når man kan styre tasternes
tilstande med JAVA's egne funktioner ; )






Thorbjørn Ravn Ander~ (05-04-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-04-01 19:24

Kristian Iversen wrote:

> BTW: hvorfor smutte ud se på hardwaren...?? når man kan styre tasternes
> tilstande med JAVA's egne funktioner ; )

Fordi der skulle tunge argumenter på bordet.

Har du bemærket nogen begrænsninger i hvilke taster du kan have trykket
ned samtidig?
--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Kristoffer Sørensen (05-04-2001)
Kommentar
Fra : Kristoffer Sørensen


Dato : 05-04-01 20:30


> Har du bemærket nogen begrænsninger i hvilke taster du kan have trykket
> ned samtidig?

Nu ved jeg ikke om det var et retorisk spørgsmål..

Java har generelt en elendig styring af taster,. Så vidt jeg husker vil tre
taster på samme tid, få den til at gå helt i spåner, og sende keycode 65535
som event. Eller også var det med Ctrl + 2 taster. Uanset hvad, så er det
ret dårlig support, også taget i betragtning at den ikke supporter events
til de såkaldte "meta"-knapper.

Mvh
Kristoffer Sørensen
www.kiloo.dk



Kristian Iversen (05-04-2001)
Kommentar
Fra : Kristian Iversen


Dato : 05-04-01 20:26


"Thorbjørn Ravn Andersen" <thunderbear@bigfoot.com> skrev i en meddelelse
news:3ACCB85A.641BE210@bigfoot.com...
> Kristian Iversen wrote:
>
> > BTW: hvorfor smutte ud se på hardwaren...?? når man kan styre tasternes
> > tilstande med JAVA's egne funktioner ; )
>
> Fordi der skulle tunge argumenter på bordet.
>
> Har du bemærket nogen begrænsninger i hvilke taster du kan have trykket
> ned samtidig?

nej ikke endnu... jeg har 2 spiller til at drøne rundt på skærmen hver
spiller har 6 taster nord syd øst vest... Skyd og løb.... og det kører
ganske pænt ; )



Thorbjoern Ravn Ande~ (02-04-2001)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 02-04-01 16:16

On Fri, 30 Mar 2001, Bertel Lund Hansen wrote:

> Jan Uhre skrev:
>
> >Jo, da. Det er da både med i Pascal og C.
>
> Nej.

Den af Jan Uhre beskrevne funktionalitet er implementeret i BIOS på
PC'ere. Alle programmer der benytter BIOS-kald på en PC til at tilgå
tastaturet vil derfor have en 16-tegns buffer.

>
> >Forstået på den måde, at tastatur-bufferen opbevarer de tastetryk man ikke har nået at aflæse
>
> Ja, men man kan ikke aflæse at der trykkes på p og t *samtidig*.

Ikke med mindre man hægter sig på tastaturets IRQ-rutine. Så kan man
godt.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste