Kody klawiszy

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 21:47, 22 kwi 2010
Mikey (Dyskusja | wkład)

← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(inverse / atari logo)
Linia 1: Linia 1:
 +"Surowe" kody klawiszy generowane przez klawiaturę. W dalszej fazie obróbki system operacyjny przetwarza większość z nich na kody [[ATASCII]].
 +
<table border=1 cellpadding=5> <table border=1 cellpadding=5>
-<tr><td><b>Kod (dec)</b></td><td><b>Klawisz</b></td></tr>+<tr><td><b>Kod dec</b></td><td><b>Kod hex</b></td><td><b>Klawisz</b></td><td><b>Klawisz<br/>z SHIFT</b></td><td><b>Klawisz<br/>z CONTROL</b></td><td><b>Klawisz<br/>z SHIFT+CONTROL</b></td></tr>
-<tr><td>0</td><td>L</td></tr>+<tr><td>0</td><td>$00</td><td>l</td><td>L</td><td></td><td>niedostępne</td></tr>
-<tr><td>1</td><td>J</td></tr>+<tr><td>1</td><td>$01</td><td>j</td><td>J</td><td></td><td>niedostępne</td></tr>
-<tr><td>2</td><td>;</td></tr>+<tr><td>2</td><td>$02</td><td>;</td><td>:</td><td></td><td>niedostępne</td></tr>
-<tr><td>5</td><td>K</td></tr>+<tr><td>3</td><td>$03</td><td>F1 - kursor w górę (w 1200XL)</td><td>kursor do górnego marginesu (w 1200XL)</td><td>przełączanie blokady klawiatury (w 1200XL)</td><td>niedostępne</td></tr>
-<tr><td>6</td><td>+</td></tr>+<tr><td>4</td><td>$04</td><td>F2 - kursor w dół (w 1200XL)</td><td>kursor do dolnego marginesu (w 1200XL)</td><td>przełączanie wyświetlania obrazu (w 1200XL)</td><td>niedostępne</td></tr>
-<tr><td>7</td><td>*</td></tr>+<tr><td>5</td><td>$05</td><td>k</td><td>K</td><td></td><td>niedostępne</td></tr>
-<tr><td>8</td><td>O</td></tr>+<tr><td>6</td><td>$06</td><td>+</td><td>\</td><td>strzałka w lewo</td><td>niedostępne</td></tr>
-<tr><td>10</td><td>P</td></tr>+<tr><td>7</td><td>$07</td><td>*</td><td>^</td><td>strzałka w prawo</td><td>niedostępne</td></tr>
-<tr><td>11</td><td>U</td></tr>+<tr><td>8</td><td>$08</td><td>o</td><td>O</td><td></td><td></td></tr>
-<tr><td>12</td><td>RETURN</td></tr>+<tr><td>9</td><td>$09</td><td></td><td></td><td></td><td></td></tr>
-<tr><td>13</td><td>I</td></tr>+<tr><td>10</td><td>$0a</td><td>p</td><td>P</td><td></td><td></td></tr>
-<tr><td>14</td><td>-</td></tr>+<tr><td>11</td><td>$0b</td><td>u</td><td>U</td><td></td><td></td></tr>
-<tr><td>15</td><td>=</td></tr>+<tr><td>12</td><td>$0c</td><td>RETURN</td><td></td><td></td><td></td></tr>
-<tr><td>16</td><td>V</td></tr>+<tr><td>13</td><td>$0d</td><td>i</td><td>I</td><td></td><td></td></tr>
-<tr><td>18</td><td>C</td></tr>+<tr><td>14</td><td>$0e</td><td>-</td><td>_</td><td>strzałka w górę</td><td></td></tr>
-<tr><td>21</td><td>B</td></tr>+<tr><td>15</td><td>$0f</td><td>=</td><td>|</td><td>strzałka w dół</td><td></td></tr>
-<tr><td>22</td><td>X</td></tr>+<tr><td>16</td><td>$10</td><td>v</td><td>V</td><td></td><td>niedostępne</td></tr>
-<tr><td>23</td><td>Z</td></tr>+<tr><td>17</td><td>$11</td><td>HELP (brak w 400/800)</td><td>przełączanie zestawów znaków (w arabskim 65XE, brak w 400/800)</td><td>(brak w 400/800)</td><td>niedostępne</td></tr>
-<tr><td>24</td><td>4</td></tr>+<tr><td>18</td><td>$12</td><td>c</td><td>C</td><td></td><td>niedostępne</td></tr>
-<tr><td>26</td><td>3</td></tr>+<tr><td>19</td><td>$13</td><td>F3 - kursor w lewo (w 1200XL)</td><td>kursor do lewego marginesu (w 1200XL)</td><td>przełączanie kliku klawiatury (w 1200XL)</td><td>niedostępne</td></tr>
-<tr><td>27</td><td>6</td></tr>+<tr><td>20</td><td>$14</td><td>F4 - kursor w prawo (w 1200XL)</td><td>kursor do prawego marginesu (w 1200XL)</td><td>przełączanie zestawów znaków (w 1200XL)</td><td>niedostępne</td></tr>
-<tr><td>28</td><td>ESC</td></tr>+<tr><td>21</td><td>$15</td><td>b</td><td>B</td><td></td><td>niedostępne</td></tr>
-<tr><td>29</td><td>5</td></tr>+<tr><td>22</td><td>$16</td><td>x</td><td>X</td><td></td><td>niedostępne</td></tr>
-<tr><td>30</td><td>2</td></tr>+<tr><td>23</td><td>$17</td><td>z</td><td>Z</td><td></td><td>niedostępne</td></tr>
-<tr><td>31</td><td>1</td></tr>+<tr><td>24</td><td>$18</td><td>4</td><td>$</td><td></td><td></td></tr>
-<tr><td>32</td><td>,</td></tr>+<tr><td>25</td><td>$19</td><td></td><td></td><td></td><td></td></tr>
-<tr><td>35</td><td>N</td></tr>+<tr><td>26</td><td>$1a</td><td>3</td><td>#</td><td>EOF</td><td></td></tr>
-<tr><td>37</td><td>M</td></tr>+<tr><td>27</td><td>$1b</td><td>6</td><td>&</td><td></td><td></td></tr>
-<tr><td>38</td><td>/</td></tr>+<tr><td>28</td><td>$1c</td><td>ESC</td><td></td><td></td><td></td></tr>
-<tr><td>39</td><td>LOGO</td></tr>+<tr><td>29</td><td>$1d</td><td>5</td><td>%</td><td></td><td></td></tr>
-<tr><td>40</td><td>R</td></tr>+<tr><td>30</td><td>$1e</td><td>2</td><td>"</td><td>BELL</td><td></td></tr>
-<tr><td>42</td><td>E</td></tr>+<tr><td>31</td><td>$1f</td><td>1</td><td>!</td><td>przełączanie blokady przewijania ekranu</td><td></td></tr>
-<tr><td>43</td><td>Y</td></tr>+<tr><td>32</td><td>$20</td><td>,</td><td>[</td><td></td><td></td></tr>
-<tr><td>44</td><td>TAB</td></tr>+<tr><td>33</td><td>$21</td><td>SPACE</td><td></td><td></td><td></td></tr>
-<tr><td>45</td><td>T</td></tr>+<tr><td>34</td><td>$22</td><td>.</td><td>]</td><td></td><td></td></tr>
-<tr><td>46</td><td>W</td></tr>+<tr><td>35</td><td>$23</td><td>n</td><td>N</td><td></td><td></td></tr>
-<tr><td>47</td><td>Q</td></tr>+<tr><td>36</td><td>$24</td><td></td><td></td><td></td><td></td></tr>
-<tr><td>48</td><td>9</td></tr>+<tr><td>37</td><td>$25</td><td>m</td><td>M</td><td></td><td></td></tr>
-<tr><td>50</td><td>0</td></tr>+<tr><td>38</td><td>$26</td><td>/</td><td>?</td><td></td><td></td></tr>
-<tr><td>51</td><td>7</td></tr>+<tr><td>39</td><td>$27</td><td>INVERSE (ATARI LOGO w 400/800)</td><td></td><td></td><td></td></tr>
-<tr><td>52</td><td>BACKSPACE</td></tr>+<tr><td>40</td><td>$28</td><td>r</td><td>R</td><td></td><td></td></tr>
-<tr><td>53</td><td>8</td></tr>+<tr><td>41</td><td>$29</td><td></td><td></td><td></td><td></td></tr>
-<tr><td>54</td><td>&lt;</td></tr>+<tr><td>42</td><td>$2a</td><td>e</td><td>E</td><td></td><td></td></tr>
-<tr><td>55</td><td>&gt;</td></tr>+<tr><td>43</td><td>$2b</td><td>y</td><td>Y</td><td></td><td></td></tr>
-<tr><td>56</td><td>F</td></tr>+<tr><td>44</td><td>$2c</td><td>TAB</td><td>Set - ustawienie pozycji tabulacji</td><td>Clr - skasowanie pozycji tabulacji</td><td></td></tr>
-<tr><td>57</td><td>H</td></tr>+<tr><td>45</td><td>$2d</td><td>t</td><td>T</td><td></td><td></td></tr>
-<tr><td>58</td><td>D</td></tr>+<tr><td>46</td><td>$2e</td><td>w</td><td>W</td><td></td><td></td></tr>
-<tr><td>60</td><td>CAPS</td></tr>+<tr><td>47</td><td>$2f</td><td>q</td><td>Q</td><td></td><td></td></tr>
-<tr><td>61</td><td>G</td></tr>+<tr><td>48</td><td>$30</td><td>9</td><td>(</td><td></td><td></td></tr>
-<tr><td>62</td><td>S</td></tr>+<tr><td>49</td><td>$31</td><td></td><td></td><td></td><td></td></tr>
-<tr><td>63</td><td>A</td></tr>+<tr><td>50</td><td>$32</td><td>0</td><td>)</td><td></td><td></td></tr>
 +<tr><td>51</td><td>$33</td><td>7</td><td>'</td><td></td><td></td></tr>
 +<tr><td>52</td><td>$34</td><td>BACKSPACE</td><td>Delete</td><td></td><td></td></tr>
 +<tr><td>53</td><td>$35</td><td>8</td><td>@</td><td></td><td></td></tr>
 +<tr><td>54</td><td>$36</td><td>&lt;</td><td>Clear</td><td></td><td></td></tr>
 +<tr><td>55</td><td>$37</td><td>&gt;</td><td>Insert</td><td></td><td></td></tr>
 +<tr><td>56</td><td>$38</td><td>f</td><td>F</td><td></td><td></td></tr>
 +<tr><td>57</td><td>$39</td><td>h</td><td>H</td><td></td><td></td></tr>
 +<tr><td>58</td><td>$3a</td><td>d</td><td>D</td><td></td><td></td></tr>
 +<tr><td>59</td><td>$3b</td><td></td><td></td><td></td><td></td></tr>
 +<tr><td>60</td><td>$3c</td><td>CAPS</td><td>przełączenie uppercase</td><td>ustawienie znaków kontrolnych</td><td></td></tr>
 +<tr><td>61</td><td>$3d</td><td>g</td><td>G</td><td></td><td></td></tr>
 +<tr><td>62</td><td>$3e</td><td>s</td><td>S</td><td></td><td></td></tr>
 +<tr><td>63</td><td>$3f</td><td>a</td><td>A</td><td></td><td></td></tr>
</table> </table>
 +
 +Wciśnięcie odpowiedniego klawisza z klawiszem SHIFT zwiększa kod o 64 ($40), a z klawiszem CONTROL o 128 ($80). Niektóre klawisze są niedostępne w kombinacji z SHIFT+CONTROL wciśniętymi równocześnie.
 +
 +System operacyjny bada wciśnięcie klawisza HELP i w zależności od tego ustawia flagę HLPFLG (732, $02DC; zapisywany jest tam kod kombinacji klawisza HELP z ewentualnymi klawiszami SHIFT lub CONTROL). Klawisz ten, i związany z nim rejestr, nie występuje ani w modelu [[400|Atari 400]], ani w [[800|Atari 800]].
 +W [[Arabski 65XE|arabskim 65XE]] HLPFLG ustawiany jest wyłącznie po wciśnięciu samego klawisza HELP. Kombinacja SHIFT+HELP przełącza zestawy znaków, a CONTROL+HELP nie jest wykorzystana. Informacja o wciśnięciu jakiejkolwiek kombinacji klawisza HELP nigdy nie pojawia się w CH (764, $02FC).
 +
 +Podobnie rzecz ma się z detekcją kombinacji CONTROL+1 zatrzymującej lub wznawiającej przewijanie zawartości edytora - w przypadku wciśnięcia tej kombinacji zmieniana jest zawartość rejestru SSFLAG (767, $02FF) z $00 na $FF i na odwrót.
 +
 +Klawisze F1..F4 są dostępne w modelu [[1200XL]].
 +
 +Układ sprzętowy rozpoznaje wciśnięcie kombinacji klawiszy SHIFT+CONTROL+A, aczkolwiek system operacyjny rezerwuje jej kod (255, $FF) dla oznaczenia w rejestrze CH stanu, kiedy żaden klawisz nie został wciśnięty. W konsekwencji wciśnięcie tej kombinacji może być wykrywane jedynie bezpośrednio w rejestrze KBCODE (53769, $D209) lub przez własny handler przerwania klawiatury wektoryzowany przez VKEYBD (520, $0208). Praktycznie użycie tej kombinacji może służyć do "oszukania" systemu i anulowania informacji o ostatnio wciśniętej kombinacji klawiszy.
 +
 +Wciśnięcie klawisza BREAK powoduje wygenerowanie innego przerwania IRQ, niż pozostałe klawisze. Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKY (566, $236) wpisuje wartość 0 do rejestru BRKKEY (17, $11), procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80 po wciśnięciu BREAK, a $88 po wciśnięciu CONTROL+3), a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O.
 +
 +Dodatkowa informacja o wciśnięciu bądź zwolnieniu klawisza SHIFT lub dowolnego innego klawisza (prócz BREAK, CONTROL i klawiszy konsoli) może być sprawdzana w rejestrze [[Rejestry POKEY-a#SKSTAT|SKSTAT]] (53775, $D20F).
 +
 +Pozostałe klawisze: patrz [[Rejestry POKEY-a#KBCODE|KBCODE]] i [[Rejestry GTIA#CONSOL|CONSOL]].
 +
 +<table border=1 cellpadding=5>
 +<tr>
 +<th></th><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th><th>F</th>
 +</tr>
 +<tr>
 +<th>0</th><td style="background:#f0f0f0">L</td><td style="background:#f0f0f0">J</td><td style="background:#f0f0f0">;</td><td style="background:#f0f0f0"><b>F1</b></td><td style="background:#f0f0f0"><b>F2</b></td><td style="background:#f0f0f0">K</td><td style="background:#f0f0f0">+</td><td style="background:#f0f0f0">*</td><td>O</td><td> </td><td>P</td><td>U</td><td>RET</td><td>I</td><td>-</td><td>=</td>
 +</tr>
 +<tr>
 +<th>1</th><td style="background:#f0f0f0">V</td><td style="background:#f0f0f0"><b>HELP</b></td><td style="background:#f0f0f0">C</td><td style="background:#f0f0f0"><b>F3</b></td><td style="background:#f0f0f0"><b>F4</b></td><td style="background:#f0f0f0">B</td><td style="background:#f0f0f0">X</td><td style="background:#f0f0f0">Z</td><td>4</td><td></td><td>3</td><td>6</td><td>ESC</td><td>5</td><td>2</td><td>1</td>
 +</tr>
 +<tr>
 +<th>2</th><td>,</td><td>SPC</td><td>.</td><td>N</td><td></td><td>M</td><td>/</td><td>INV</td><td>R</td><td></td><td>E</td><td>Y</td><td>TAB</td><td>T</td><td>W</td><td>Q</td>
 +</tr>
 +<tr>
 +<th>3</th><td>9</td><td></td><td>0</td><td>7</td><td>BKSP</td><td>8</td><td>&lt;</td><td>&gt;</td><td>F</td><td>H</td><td>D</td><td></td><td>CAPS</td><td>G</td><td>S</td><td>A</td>
 +</tr>
 +</table>
 +
 +W modelu [[XEGS]] można odłączyć klawiaturę, a informację o tym uzyskać w rejestrze [[Rejestry GTIA#TRIG2|TRIG2]] (53266, $D012). Wszystkie klawisze obsługiwane przez POKEY (łącznie z HELP-em i BREAK) są wtedy niedostępne. Dostępne są jedynie te występujące na panelu konsoli, a obsługiwane przez GTIA - START, SELECT, OPTION i RESET.
 +
 += Linki =
 +
 +* [http://www.atari.org.pl/forum/viewtopic.php?id=7837 Wątek na AtariArea]
 +* [http://members.casema.nl/hhaydn/howel/logic/burched/b5_800xl_kbd.htm Układ klawiatury]
[[Kategoria:Niezb%C4%99dnik_kodera]] [[Kategoria:Niezb%C4%99dnik_kodera]]

Aktualna wersja

"Surowe" kody klawiszy generowane przez klawiaturę. W dalszej fazie obróbki system operacyjny przetwarza większość z nich na kody ATASCII.

Kod decKod hexKlawiszKlawisz
z SHIFT
Klawisz
z CONTROL
Klawisz
z SHIFT+CONTROL
0$00lLniedostępne
1$01jJniedostępne
2$02;:niedostępne
3$03F1 - kursor w górę (w 1200XL)kursor do górnego marginesu (w 1200XL)przełączanie blokady klawiatury (w 1200XL)niedostępne
4$04F2 - kursor w dół (w 1200XL)kursor do dolnego marginesu (w 1200XL)przełączanie wyświetlania obrazu (w 1200XL)niedostępne
5$05kKniedostępne
6$06+\strzałka w lewoniedostępne
7$07*^strzałka w prawoniedostępne
8$08oO
9$09
10$0apP
11$0buU
12$0cRETURN
13$0diI
14$0e-_strzałka w górę
15$0f=|strzałka w dół
16$10vVniedostępne
17$11HELP (brak w 400/800)przełączanie zestawów znaków (w arabskim 65XE, brak w 400/800)(brak w 400/800)niedostępne
18$12cCniedostępne
19$13F3 - kursor w lewo (w 1200XL)kursor do lewego marginesu (w 1200XL)przełączanie kliku klawiatury (w 1200XL)niedostępne
20$14F4 - kursor w prawo (w 1200XL)kursor do prawego marginesu (w 1200XL)przełączanie zestawów znaków (w 1200XL)niedostępne
21$15bBniedostępne
22$16xXniedostępne
23$17zZniedostępne
24$184$
25$19
26$1a3#EOF
27$1b6&
28$1cESC
29$1d5%
30$1e2"BELL
31$1f1!przełączanie blokady przewijania ekranu
32$20,[
33$21SPACE
34$22.]
35$23nN
36$24
37$25mM
38$26/?
39$27INVERSE (ATARI LOGO w 400/800)
40$28rR
41$29
42$2aeE
43$2byY
44$2cTABSet - ustawienie pozycji tabulacjiClr - skasowanie pozycji tabulacji
45$2dtT
46$2ewW
47$2fqQ
48$309(
49$31
50$320)
51$337'
52$34BACKSPACEDelete
53$358@
54$36<Clear
55$37>Insert
56$38fF
57$39hH
58$3adD
59$3b
60$3cCAPSprzełączenie uppercaseustawienie znaków kontrolnych
61$3dgG
62$3esS
63$3faA

Wciśnięcie odpowiedniego klawisza z klawiszem SHIFT zwiększa kod o 64 ($40), a z klawiszem CONTROL o 128 ($80). Niektóre klawisze są niedostępne w kombinacji z SHIFT+CONTROL wciśniętymi równocześnie.

System operacyjny bada wciśnięcie klawisza HELP i w zależności od tego ustawia flagę HLPFLG (732, $02DC; zapisywany jest tam kod kombinacji klawisza HELP z ewentualnymi klawiszami SHIFT lub CONTROL). Klawisz ten, i związany z nim rejestr, nie występuje ani w modelu Atari 400, ani w Atari 800. W arabskim 65XE HLPFLG ustawiany jest wyłącznie po wciśnięciu samego klawisza HELP. Kombinacja SHIFT+HELP przełącza zestawy znaków, a CONTROL+HELP nie jest wykorzystana. Informacja o wciśnięciu jakiejkolwiek kombinacji klawisza HELP nigdy nie pojawia się w CH (764, $02FC).

Podobnie rzecz ma się z detekcją kombinacji CONTROL+1 zatrzymującej lub wznawiającej przewijanie zawartości edytora - w przypadku wciśnięcia tej kombinacji zmieniana jest zawartość rejestru SSFLAG (767, $02FF) z $00 na $FF i na odwrót.

Klawisze F1..F4 są dostępne w modelu 1200XL.

Układ sprzętowy rozpoznaje wciśnięcie kombinacji klawiszy SHIFT+CONTROL+A, aczkolwiek system operacyjny rezerwuje jej kod (255, $FF) dla oznaczenia w rejestrze CH stanu, kiedy żaden klawisz nie został wciśnięty. W konsekwencji wciśnięcie tej kombinacji może być wykrywane jedynie bezpośrednio w rejestrze KBCODE (53769, $D209) lub przez własny handler przerwania klawiatury wektoryzowany przez VKEYBD (520, $0208). Praktycznie użycie tej kombinacji może służyć do "oszukania" systemu i anulowania informacji o ostatnio wciśniętej kombinacji klawiszy.

Wciśnięcie klawisza BREAK powoduje wygenerowanie innego przerwania IRQ, niż pozostałe klawisze. Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKY (566, $236) wpisuje wartość 0 do rejestru BRKKEY (17, $11), procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80 po wciśnięciu BREAK, a $88 po wciśnięciu CONTROL+3), a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O.

Dodatkowa informacja o wciśnięciu bądź zwolnieniu klawisza SHIFT lub dowolnego innego klawisza (prócz BREAK, CONTROL i klawiszy konsoli) może być sprawdzana w rejestrze SKSTAT (53775, $D20F).

Pozostałe klawisze: patrz KBCODE i CONSOL.

0123456789ABCDEF
0LJ;F1F2K+*O PURETI-=
1VHELPCF3F4BXZ436ESC521
2,SPC.NM/INVREYTABTWQ
3907BKSP8<>FHDCAPSGSA

W modelu XEGS można odłączyć klawiaturę, a informację o tym uzyskać w rejestrze TRIG2 (53266, $D012). Wszystkie klawisze obsługiwane przez POKEY (łącznie z HELP-em i BREAK) są wtedy niedostępne. Dostępne są jedynie te występujące na panelu konsoli, a obsługiwane przez GTIA - START, SELECT, OPTION i RESET.

Linki

Personal tools