KeyName - SCAN-koodeista näppäinten nimet

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

KeyName - SCAN-koodeista näppäinten nimet

Post by axu »

Oletko tehnyt/tekemässä peliisi keyconfiggia? Pelaajalle kannattaa näyttää suoraan, mitkä näppäimet hän on valinnut sen sijaan, että näytetään kyseisten näppäinten SCAN-koodi.
Tämä funktio ottaa parametriksi näppäimen SCAN-koodin ja palauttaa vastaavan näppäimen nimen. Tein tämän alunperin SkiDown-peliä varten, mutta uskon tästä olevan hyötyä muillekkin.

Code: Select all

Function KeyName$(Key)
    Select Key
        Case 1 : Return "Escape"
        Case 2 : Return "1"
        Case 3 : Return "2"
        Case 4 : Return "3"
        Case 5 : Return "4"
        Case 6 : Return "5"
        Case 7 : Return "6"
        Case 8 : Return "7"
        Case 9 : Return "8"
        Case 10 : Return "9"
        Case 11 : Return "0"
        Case 12 : Return "+"
        Case 13 : Return "´"
        Case 14 : Return "Backspace"
        Case 15 : Return "Tab"
        Case 16 : Return "Q"
        Case 17 : Return "W"
        Case 18 : Return "E"
        Case 19 : Return "R"
        Case 20 : Return "T"
        Case 21 : Return "Y"
        Case 22 : Return "U"
        Case 23 : Return "I"
        Case 24 : Return "O"
        Case 25 : Return "P"
        Case 26 : Return "Å"
        Case 27 : Return "^"
        Case 28 : Return "Enter"
        Case 29 : Return "Left control"
        Case 30 : Return "A"
        Case 31 : Return "S"
        Case 32 : Return "D"
        Case 33 : Return "F"
        Case 34 : Return "G"
        Case 35 : Return "H"
        Case 36 : Return "J"
        Case 37 : Return "K"
        Case 38 : Return "L"
        Case 39 : Return "Ö"
        Case 40 : Return "Ä"
        Case 41 : Return "§"
        Case 42 : Return "Left Shift"
        Case 43 : Return "'"
        Case 44 : Return "Z"
        Case 45 : Return "X"
        Case 46 : Return "C"
        Case 47 : Return "V"
        Case 48 : Return "B"
        Case 49 : Return "N"
        Case 50 : Return "M"
        Case 51 : Return ","
        Case 52 : Return "."
        Case 53 : Return "-"
        Case 54 : Return "Right shift"
        Case 55 : Return "Num *"
        Case 56 : Return "Left alt"
        Case 57 : Return "Space"
        Case 58 : Return "Caps lock"
        Case 59 : Return "F1"
        Case 60 : Return "F2"
        Case 61 : Return "F3"
        Case 62 : Return "F4"
        Case 63 : Return "F5"
        Case 64 : Return "F6"
        Case 65 : Return "F7"
        Case 66 : Return "F8"
        Case 67 : Return "F9"
        Case 68 : Return "F10"
        Case 69 : Return "Pause"
        Case 70 : Return "Scroll lock"
        Case 71 : Return "Num 7"
        Case 72 : Return "Num 8"
        Case 73 : Return "Num 9"
        Case 74 : Return "Num -"
        Case 75 : Return "Num 4"
        Case 76 : Return "Num 5"
        Case 77 : Return "Num 6"
        Case 78 : Return "Num +"
        Case 79 : Return "Num 1"
        Case 80 : Return "Num 2"
        Case 81 : Return "Num 3"
        Case 82 : Return "Num 0"
        Case 83 : Return "Num ,"

        Case 87 : Return "F11"
        Case 88 : Return "F12"

        Case 156 : Return "Num enter"
        Case 157 : Return "Right control"
        Case 181 : Return "Num /"
        Case 184 : Return "Right alt"
        Case 197 : Return "Num lock"
        Case 199 : Return "Home"
        Case 200 : Return "Up"
        Case 201 : Return "Page up"
        Case 203 : Return "Left"
        Case 205 : Return "Right"
        Case 207 : Return "End"
        Case 208 : Return "Down"
        Case 209 : Return "Page down"
        Case 210 : Return "Insert"
        Case 211 : Return "Delete"
        Case 219 : Return "Left windows"
        Case 220 : Return "Right windows"
        Case 221 : Return "Special"
'        Case  : Return ""
        Default : Return "SC: " + Key
    End Select
End Function
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by esa94 »

axu wrote:Oletko tehnyt/tekemässä peliisi keyconfiggia? Pelaajalle kannattaa näyttää suoraan, mitkä näppäimet hän on valinnut sen sijaan, että näytetään kyseisten näppäinten SCAN-koodi.
Tämä funktio ottaa parametriksi näppäimen SCAN-koodin ja palauttaa vastaavan näppäimen nimen. Tein tämän alunperin SkiDown-peliä varten, mutta uskon tästä olevan hyötyä muillekkin.

Code: Select all

Function KeyName$(Key)
    Select Key
        Case 1 : Return "Escape"
        Case 2 : Return "1"
        Case 3 : Return "2"
        Case 4 : Return "3"
        Case 5 : Return "4"
        Case 6 : Return "5"
        Case 7 : Return "6"
        Case 8 : Return "7"
        Case 9 : Return "8"
        Case 10 : Return "9"
        Case 11 : Return "0"
        Case 12 : Return "+"
        Case 13 : Return "´"
        Case 14 : Return "Backspace"
        Case 15 : Return "Tab"
        Case 16 : Return "Q"
        Case 17 : Return "W"
        Case 18 : Return "E"
        Case 19 : Return "R"
        Case 20 : Return "T"
        Case 21 : Return "Y"
        Case 22 : Return "U"
        Case 23 : Return "I"
        Case 24 : Return "O"
        Case 25 : Return "P"
        Case 26 : Return "Å"
        Case 27 : Return "^"
        Case 28 : Return "Enter"
        Case 29 : Return "Left control"
        Case 30 : Return "A"
        Case 31 : Return "S"
        Case 32 : Return "D"
        Case 33 : Return "F"
        Case 34 : Return "G"
        Case 35 : Return "H"
        Case 36 : Return "J"
        Case 37 : Return "K"
        Case 38 : Return "L"
        Case 39 : Return "Ö"
        Case 40 : Return "Ä"
        Case 41 : Return "§"
        Case 42 : Return "Left Shift"
        Case 43 : Return "'"
        Case 44 : Return "Z"
        Case 45 : Return "X"
        Case 46 : Return "C"
        Case 47 : Return "V"
        Case 48 : Return "B"
        Case 49 : Return "N"
        Case 50 : Return "M"
        Case 51 : Return ","
        Case 52 : Return "."
        Case 53 : Return "-"
        Case 54 : Return "Right shift"
        Case 55 : Return "Num *"
        Case 56 : Return "Left alt"
        Case 57 : Return "Space"
        Case 58 : Return "Caps lock"
        Case 59 : Return "F1"
        Case 60 : Return "F2"
        Case 61 : Return "F3"
        Case 62 : Return "F4"
        Case 63 : Return "F5"
        Case 64 : Return "F6"
        Case 65 : Return "F7"
        Case 66 : Return "F8"
        Case 67 : Return "F9"
        Case 68 : Return "F10"
        Case 69 : Return "Pause"
        Case 70 : Return "Scroll lock"
        Case 71 : Return "Num 7"
        Case 72 : Return "Num 8"
        Case 73 : Return "Num 9"
        Case 74 : Return "Num -"
        Case 75 : Return "Num 4"
        Case 76 : Return "Num 5"
        Case 77 : Return "Num 6"
        Case 78 : Return "Num +"
        Case 79 : Return "Num 1"
        Case 80 : Return "Num 2"
        Case 81 : Return "Num 3"
        Case 82 : Return "Num 0"
        Case 83 : Return "Num ,"

        Case 87 : Return "F11"
        Case 88 : Return "F12"

        Case 156 : Return "Num enter"
        Case 157 : Return "Right control"
        Case 181 : Return "Num /"
        Case 184 : Return "Right alt"
        Case 197 : Return "Num lock"
        Case 199 : Return "Home"
        Case 200 : Return "Up"
        Case 201 : Return "Page up"
        Case 203 : Return "Left"
        Case 205 : Return "Right"
        Case 207 : Return "End"
        Case 208 : Return "Down"
        Case 209 : Return "Page down"
        Case 210 : Return "Insert"
        Case 211 : Return "Delete"
        Case 219 : Return "Left windows"
        Case 220 : Return "Right windows"
        Case 221 : Return "Special"
'        Case  : Return ""
        Default : Return "SC: " + Key
    End Select
End Function
Jos saan sanoa, aika ruma rakenne. Laita ne mieluummin taulukkoon.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by koodaaja »

koodillisesti kompakteinta olisi tehdä nappuloista merkkijono tyyliin st$= "Escape,1,2,3,4,..." ja sitten kutsua GetWord(st, scancode, ",") mutta case-systeemi toimii aivan hyvin. Ja ajatus on hyvä, tämmöiset mukavat yksityiskohdat parantavat pelin laatuvaikutelmaa suunnattomasti.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by Koodiapina »

koodaaja wrote:koodillisesti kompakteinta olisi tehdä nappuloista merkkijono tyyliin st$= "Escape,1,2,3,4,..." ja sitten kutsua GetWord(st, scancode, ",")
Oletko varma, että tuollainen pitkän merkkijonon käsitteleminen on nopeaa?
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by Ilmuri »

Grandi wrote: Oletko varma, että tuollainen pitkän merkkijonon käsitteleminen on nopeaa?
koodaaja wrote:koodillisesti kompakteinta
Luetun ymmärtäminen.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by Koodiapina »

Ilmuri wrote:
Grandi wrote:Oletko varma, että tuollainen pitkän merkkijonon käsitteleminen on nopeaa?
koodaaja wrote:koodillisesti kompakteinta
Luetun ymmärtäminen.
Eli kun koodi on kompaktia, niin nopeudesta ei saa kysyä. Tämä selvä.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by koodaaja »

Olen varma, että se ei ole kovin nopeaa, mutta eipä pientä viivettä juuri huomaa kun funktiota kutsutaan vain uutta näppäintä valittaessa. Esan ehdottama taulukointi lienee nopein tapa toteuttaa tämä, axun alkuperäinen kenties selkein.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by axu »

Juu taulukkoakin mietin silloin kun systeemiä väsäsin, mutta en kyllä tiiä olisiko siitä hienompaa tullut. Varmasti nopeampi kyllä, mutta kuten sanottu, ei ole käytössä missään nopeuden kannalta kriittisessä tilanteessa. Tietääkö kukaan muuten tuon "Special"-näppäimen oikeaa nimeä? Siis sen huomaamattoman napin, josta avautuu hiiren valikko (kakkosklikkaus).
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by valscion »

axu wrote:Tietääkö kukaan muuten tuon "Special"-näppäimen oikeaa nimeä? Siis sen huomaamattoman napin, josta avautuu hiiren valikko (kakkosklikkaus).
Application key? Ainakin tuollaiseen englanninkieliseen termiin olen törmännyt kyseisen näppäimen kanssa. Myös Menu-näppäin on tuttu termi.

EDIT: Ettei mene offiksi, niin taulukossa olisi se hyvä puoli että silloin ei välttämättä edes tarvitsisi funktiota, kun halutaan selvittää tietyn näppäimen nimi.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: KeyName - SCAN-koodeista näppäinten nimet

Post by axu »

VesQ wrote:EDIT: Ettei mene offiksi, niin taulukossa olisi se hyvä puoli että silloin ei välttämättä edes tarvitsisi funktiota, kun halutaan selvittää tietyn näppäimen nimi.
Ja juuri tästä se nopeus tulisi. Oikeastaan voisi kokeilla tehdä tuon taulukkosysteemin, ei pitäisi koodiakaan muuttaa, kun tekee siitä taulukosta KeyName-nimisen (taulukoista kun haetaan dataa samanlailla kuin funktiolle annetaan parametrejä).
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Post Reply