Difference between revisions of "Keyboard"
m (link repair) |
(→References) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Hardware]] | [[Category:Hardware]] | ||
− | The '''keyboard''' is attached to the [[slow bus]] and accessed by the [[system VIA]]. | + | The '''keyboard''' is attached to the [[slow bus]] and accessed by the [[system VIA]]. On the BBC there are 74 keys including BREAK, 93 including BREAK on the Master series. On the BBC 73 keys and 8 keyboard links are wired in a 10 × 8 matrix; on the Master 92 keys are a 13 × 8 matrix. The two SHIFT keys are connected to one cell and cannot be told apart. The BREAK key is on a separate circuit and resets the computer. |
+ | |||
+ | The Electron has a superficially similar keyboard, but with a reduced number of keys with many sharing functions. The Electron keyboard is accessed via hardware addressed in sideways ROM space. | ||
All keys except CTRL and SHIFT cause an interrupt when pressed, which makes the BBC scan the keyboard to identify the key(s) that are held down. | All keys except CTRL and SHIFT cause an interrupt when pressed, which makes the BBC scan the keyboard to identify the key(s) that are held down. | ||
− | The keyboard | + | The keyboard is an ECMA-23<ref>[https://en.wikipedia.org/wiki/ECMA-23 Wikipedia: ECMA-23 Keyboard standard]</ref> ''bit-paired'' layout<ref>[https://en.wikipedia.org/wiki/Bit-paired_keyboard Wikipedia: Bit-paired keyboards]</ref>, previously common on programming-orientated computer systems, unlike the ''typewriter-paired'' layout that is standard on mechanical typewriters and modern PCs. Pressing SHIFT or CTRL neatly adds or subtracts a power of two from the [[ASCII]] value of the base character, except for the singleton keys space, 0, @ and [[VDU 127|DELETE]]; and the _ £ key. The layout is shown in Chapter 1 of the User Guide. |
There is a circuit diagram of the keyboard on page 489 of ''The Advanced User Guide''. | There is a circuit diagram of the keyboard on page 489 of ''The Advanced User Guide''. | ||
Line 64: | Line 66: | ||
The number under each key is the scan code in hexadecimal. | The number under each key is the scan code in hexadecimal. | ||
− | <table style="font-family:sans-serif;text-align:center;"> | + | <table style="font-family:sans-serif;text-align:center;" class="mw-widebody"> |
<tr><td style="border-spacing:0px;"><div style="display:table-cell;text-align:center;"> | <tr><td style="border-spacing:0px;"><div style="display:table-cell;text-align:center;"> | ||
<div style="display:inline-block;"> | <div style="display:inline-block;"> | ||
Line 236: | Line 238: | ||
===Scan Code Matrix=== | ===Scan Code Matrix=== | ||
− | Columns 10 to 12 contain the Master keypad scan codes. Columns 12 to 15 with scan codes in (brackets) are keys on RISC OS/Archimedes and other systems.<ref>[http://mdfs.net/System/C/Lib/console.txt Keyboard scan codes.]</ref> Note that in the diagram rows 0 and 7 are swapped to be similar to the physical keyboard layout. | + | Columns 10 to 12 contain the Master keypad scan codes. Columns 12 to 15 with scan codes in (brackets) are keys on RISC OS/ Archimedes and other systems.<ref>[http://mdfs.net/System/C/Lib/console.txt Keyboard scan codes.]</ref> Note that in the diagram rows 0 and 7 are swapped to be similar to the physical keyboard layout. |
− | <table style="font-family:sans-serif;text-align:center;"> | + | <table style="font-family:sans-serif;text-align:center;" class="mw-widebody" cellspacing="0"> |
<tr><th><th>C0<th>C1<th>C2<th>C3<th>C4<th>C5<th>C6<th>C7<th>C8<th>C9<th>C10<th>C11<th>C12<th>C13<th>C14<th>C15<tr><th>R7 | <tr><th><th>C0<th>C1<th>C2<th>C3<th>C4<th>C5<th>C6<th>C7<th>C8<th>C9<th>C10<th>C11<th>C12<th>C13<th>C14<th>C15<tr><th>R7 | ||
<td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:x-small;">ESCAPE</div></div><br><span style="font-size:x-small">&70</span> | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:x-small;">ESCAPE</div></div><br><span style="font-size:x-small">&70</span> | ||
Line 338: | Line 340: | ||
<td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;">*</div></div><br><span style="font-size:x-small">&5B</span> | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;">*</div></div><br><span style="font-size:x-small">&5B</span> | ||
<td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;">,</div></div><br><span style="font-size:x-small">&5C</span> | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;">,</div></div><br><span style="font-size:x-small">&5C</span> | ||
− | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;">+<br>=</div></div><br><span style="font-size:x-small">(&5D)</span> | + | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;line-height:1.1em;">+<br>=</div></div><br><span style="font-size:x-small">(&5D)</span> |
<td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;line-height:1.1em;">|<br>\</div></div><br><span style="font-size:x-small">(&5E)*</span> | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;line-height:1.1em;">|<br>\</div></div><br><span style="font-size:x-small">(&5E)*</span> | ||
<td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;line-height:1.1em;">_<br>\</div></div><br><span style="font-size:x-small">(&5F)*</span> | <td><div style="display:inline-block;"><div style="width:3rem;height:3rem;border-style:solid;border-width:1px;text-align:center;display:table-cell;vertical-align:middle;color:white;background-color:#222222;border-color:#444444 #000000 #000000 #444444;font-size:large;line-height:1.1em;">_<br>\</div></div><br><span style="font-size:x-small">(&5F)*</span> | ||
Line 392: | Line 394: | ||
Notes: | Notes: | ||
* &20: keyboards with 'Print' generate f0 keypress | * &20: keyboards with 'Print' generate f0 keypress | ||
+ | * &2D: key to the left of 1 on PC layout keyboard | ||
* &5E: key between left shift and Z on PC layout keyboard<ref name="iyonix">[https://web.archive.org/web/20130401185753/http://www.iyonix.com/32bit/2205203-02.htm RISC OS Japanese Support Functional Specification]</ref> | * &5E: key between left shift and Z on PC layout keyboard<ref name="iyonix">[https://web.archive.org/web/20130401185753/http://www.iyonix.com/32bit/2205203-02.htm RISC OS Japanese Support Functional Specification]</ref> | ||
* &5F: key between ? and right shift on PC layout keyboard<ref name="iyonix"/> | * &5F: key between ? and right shift on PC layout keyboard<ref name="iyonix"/> | ||
+ | |||
+ | ==See also== | ||
+ | * [[INKEY numbers]] | ||
+ | * [[Key codes]] | ||
==References== | ==References== | ||
<references /> | <references /> | ||
− | -- [[User:Beardo|beardo]] 00:01, 18 October 2007 (BST) | + | |
+ | ---- | ||
+ | [[User:Beardo|beardo]] 00:01, 18 October 2007 (BST) | ||
+ | [[User:JGharston|jgharston]] 00:19, 30 December 2020 (GMT) |
Latest revision as of 01:20, 30 December 2020
The keyboard is attached to the slow bus and accessed by the system VIA. On the BBC there are 74 keys including BREAK, 93 including BREAK on the Master series. On the BBC 73 keys and 8 keyboard links are wired in a 10 × 8 matrix; on the Master 92 keys are a 13 × 8 matrix. The two SHIFT keys are connected to one cell and cannot be told apart. The BREAK key is on a separate circuit and resets the computer.
The Electron has a superficially similar keyboard, but with a reduced number of keys with many sharing functions. The Electron keyboard is accessed via hardware addressed in sideways ROM space.
All keys except CTRL and SHIFT cause an interrupt when pressed, which makes the BBC scan the keyboard to identify the key(s) that are held down.
The keyboard is an ECMA-23[1] bit-paired layout[2], previously common on programming-orientated computer systems, unlike the typewriter-paired layout that is standard on mechanical typewriters and modern PCs. Pressing SHIFT or CTRL neatly adds or subtracts a power of two from the ASCII value of the base character, except for the singleton keys space, 0, @ and DELETE; and the _ £ key. The layout is shown in Chapter 1 of the User Guide.
There is a circuit diagram of the keyboard on page 489 of The Advanced User Guide.
8bs.com Type[3] | Seen on | Key legends | Key sound | PCB colour | Chassis plate | Key switches | Space bar support | DIP switch orientation |
---|---|---|---|---|---|---|---|---|
Type 1 | B, ? | Large | Flat | Beige | Narrow margins, lip at front and rear | White, round body, square-edged shoulder, cross head | Plastic tabs and wire rod (concealed) | East-west (under DELETE) |
Type 2 | B, B+ | Small | Echoing | Tawny brown | Wide margins, deep skirt | Black, square body, chamfered shoulder, cross head | Wire rod support | North-south |
Type 3 | ? | Large | Flat | Tawny brown | Wide margins, shallow skirt | Dark grey, deep bevelled shoulder, square cup head | Plastic guides? | North-south |
Type 4 | ? | Large | Echoing | Beige | Narrow margins, lip at front | Black, square body, chamfered shoulder, cross head | Wire rod support | East-west (between SHIFT and DELETE) |
Keyboard Scan Codes
The number under each key is the scan code in hexadecimal.
f0 &20 f1 &71 f2 &72 f3 &73 f4 &14 f5 &74 f6 &75 f7 &16 f8 &76 f9 &77 BREAK |
ESCAPE &70 ! 1 &30 " 2 &31 # 3 &11 $ 4 &12 % 5 &13 & 6 &34 ' 7 &24 ( 8 &15 ) 9 &26 Ø &27 = - &17 ~ ^ &18 | \ &78 ← &19 → &79 |
TAB &60 Q &10 W &21 E &22 R &33 T &23 Y &44 U &35 I &25 O &36 P &37 @ &47 { [ &38 £ — &28 ↑ &39 ↓ &29 |
CAPS LOCK &40 CTRL &01 A &41 S &51 D &32 F &43 G &53 H &54 J &45 K &46 L &56 + ; &57 * : &48 } ] &58 RETURN &49 |
SHIFT LOCK &50 SHIFT &00 Z &61 X &42 C &52 V &63 B &64 N &55 M &65 < , &66 > . &67 ? / &68 SHIFT &00 DELETE &59 COPY &69 |
SPACE &62 bit 7 &02 bit 6 &03 bit 5 &04 bit 4 &05 bit 3 &06 bit 2 &07 bit 1 &08 bit 0 &09 |
Scan Code Matrix
Columns 10 to 12 contain the Master keypad scan codes. Columns 12 to 15 with scan codes in (brackets) are keys on RISC OS/ Archimedes and other systems.[4] Note that in the diagram rows 0 and 7 are swapped to be similar to the physical keyboard layout.
C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R7 | ESCAPE &70 | f1 &71 | f2 &72 | f3 &73 | f5 &74 | f6 &75 | f8 &76 | f9 &77 | | \ &78 | → &79 | 4 &7A | 5 &7B | 2 &7C | Win Left (&7D) | Win Right (&7E) | Win Menu (&7F) |
R1 | Q &10 | # 3 &11 | $ 4 &12 | % 5 &13 | f4 &14 | ( 8 &15 | f7 &16 | = - &17 | ~ ^ &18 | ← &19 | 6 &1A | 7 &1B | f11 (&1C) | f12 (&1D) | f10 (&1E) | Scroll Lock (&1F) |
R2 | f0 &20* | W &21 | E &22 | T &23 | ' 7 &24 | I &25 | ) 9 &26 | Ø &27 | £ _ &28 | ↓ &29 | 8 &2A | 9 &2B | Pause Break (&2C) | ~ ¬ ' ` (&2D) | ¤ | £ ¥ (&2E) | Back Space (&2F) |
R3 | ! 1 &30 | " 2 &31 | D &32 | R &33 | & 6 &34 | U &35 | O &36 | P &37 | { [ &38 | ↑ &39 | + &3A | - &3B | KEYPAD RETURN &3C | Insert (&3D) | Home (&3E) | Page Up (&3F) |
R4 | CAPS LOCK &40 | A &41 | X &42 | F &43 | Y &44 | J &45 | K &46 | @ &47 | * : &48 | RETURN &49 | / &4A | KEYPAD DELETE &4B | . &4C | Num Lock (&4D) | Page Down (&4E) | " @ ' ' (&4F) |
R5 | SHIFT LOCK &50 | S &51 | C &52 | G &53 | H &54 | N &55 | L &56 | + ; &57 | } ] &58 | DELETE &59 | # ~ # &5A | * &5B | , &5C | + = (&5D) | | \ (&5E)* | _ \ (&5F)* |
R6 | TAB &60 | Z &61 | SPACE &62 | V &63 | B &64 | M &65 | < , &66 | > . &67 | ? / &68 | COPY &69 | Ø &6A | 1 &6B | 3 &6C | No Conv (&6D) | Conv (&6E) | Kana (&6F) |
R0 | SHIFT &00 | CTRL &01 | bit 7 &02 | bit 6 &03 | bit 5 &04 | bit 4 &05 | bit 3 &06 | bit 2 &07 | bit 1 &08 | bit 0 &09 | ||||||
R0 | SHIFT &00 | CTRL &01 | ALT &02 | Left Shift &03 | Left Ctrl &04 | Left Alt &05 | Right Shift &06 | Right Ctrl &07 | Right Alt &08 | Mouse Select &09 | Mouse Menu &0A | Mouse Adjust &0B |
Notes:
- &20: keyboards with 'Print' generate f0 keypress
- &2D: key to the left of 1 on PC layout keyboard
- &5E: key between left shift and Z on PC layout keyboard[5]
- &5F: key between ? and right shift on PC layout keyboard[5]
See also
References
beardo 00:01, 18 October 2007 (BST) jgharston 00:19, 30 December 2020 (GMT)