スキャンコード
■毎日更新無料動画!
■未公開流出画像満載

[Wikipedia|▼Menu]

スキャンコード (scancode) とは、コンピュータキーボードのキーが押されたり離されたりしたときに、キーボードからCPUに送られるコード(符号)のこと。走査コード(そうさコード)ともいう。
目次

1 概要

2 キー配列とスキャンコード

3 PC/AT・PS/2キーボードのスキャンコード

4 Macintosh ADBキーボードのスキャンコード

5 PC-9800キーボードのスキャンコード

6 USBキーボードのUsage

7 関連項目

8 外部リンク

//


概要

コンピュータのキーボードでは、たとえば「A」のキーを押した場合、「A」という文字の文字コードASCIIコードなど)が直接送られるわけではない。

キーボードコントローラは、キーの押下あるいは解放を検出すると、そのキーに固有のスキャンコードをCPUに送る。 スキャンコードは、キーボードのキーを物理的に識別するものであり、そのキーの表す文字や機能とは関係ない。 CPUはスキャンコードを受け取ると、キー配列の設定や修飾キー・ロックキーなどの状態を参照して、該当する文字の入力として受理したり、修飾キーやファンクションキーの処理を実行したりする。

キーが押されたときに発生するスキャンコードをメイク (make) コード、離されたときに発生するものをブレイク (break) コードという。同じキーのメイクとブレイクはMSBやプレフィクスコードによって区別されることが多い。オートリピート(タイプマティック)の処理をキーボード側で行う場合、キーが押されている間、メイクコードを周期的に発生する。

スキャンコードの体系はコンピュータの機種によって異なる。また、インタフェース規格によって決まっていることもある。さらに、同じ機種・インタフェースであっても、複数の体系をもっている場合もある。 そのため、オペレーティングシステム (OS) は受け取ったスキャンコードをOS独自の仮想キーコードに変換・統一してから扱うのが一般的である。


キー配列とスキャンコード

キーボードには、国や言語によってJIS配列・US配列などさまざまなキー配列があるが、同じ機種用・同じインタフェースのキーボードであれば、キートップの刻印にかかわらず、物理的に同じ位置にあるキーは同じスキャンコードを発生するのが普通である(たとえば、パーソナルコンピュータ (PC) のキーボードでは、「1」の左のキーはJIS配列では「半角/全角」、US配列では「` ~」であるが、スキャンコードは同じ)。

すなわち、キートップの刻印の違いは多くの場合表面的なもので、物理的な配列が類似していれば、スキャンコードのレベルではほとんど変わりがない(特に欧州各国のキーボードのように、物理的なキー配列に差がない場合は、刻印を無視すればまったく同一のキーボードとみなせる)。

したがって、JIS配列キーボードにUS配列の設定を適用するなどしても、ほとんどのキーは問題なくUS配列として動作する(一部、物理的にキーの有無や位置が異なるものについては、この限りではない)。


PC/AT・PS/2キーボードのスキャンコード

PC/AT互換機のスキャンコードは、歴史的な経緯により複雑な体系となっている。

以下、スキャンコードの値を16進数2桁で表す。
83キーボード (IBM PC, PC/XT)


最初の製品であるためスキャンコードは整然としている(01?53)。ブレイクはMSBを立てることで示す。

84キーボード (PC/AT)


物理的な配置は一部変更されたが、スキャンコードは変わっていない。SysReqキーが追加された(54)。

101拡張キーボード (PC/AT)


キーが大幅に追加された。

右Ctrl・右Alt・テンキーのEnter・テンキーの/は、それぞれ左Ctrl(1D)・左Alt(38)・Enter(1C)・/(35)にプレフィクスE0がつく。

従来テンキーと兼用していたカーソルキー、Insert、Delete、Home、End、PageUp、PageDownが独立した。それぞれ対応するテンキーのコードにプレフィクスE0がつく。

F11(57)、F12(58)は新規のコード。

PrintScreenキーは83/84キーボードではShift(2A)+テンキーの*(37)だったため、E0 2A E0 37を発生する。

SysReqキー(54)がなくなり、Alt+PrintScreenとなったため、Alt+PrintScreenで54を発生する。

Pauseキーは83/84キーボードではCtrl(1D)+NumLock(45)だったため、E1 1D 45を発生する。また、オートリピートの対象外であり、すぐにブレイクコード(E1 9D C5)を発生する。

Ctrl+Pause(Break)キーは83/84キーボードのScroll Lock(46)にならってE0 46を発生する。また、オートリピートの対象外であり、すぐにブレイクコード(E0 C6)を発生する。

101拡張キーボード (PS/2)


従来のコード体系をコードセット1とし、新たにコードセット2と3が定義された。

コードセット2は、コードの値は一新されているものの、コードセット1のプレフィクスや歴史的特例などは保たれており、セット2からセット1に機械的に変換可能。ただしブレイクはプレフィクスF0で表す。

コードセット3はさらに整然とした体系として再定義されており、コードセット1/2のプレフィクスや特例は廃止され、すべてのキーがシンプルな1バイトのメイクコードを発生する。コードの値はセット2とおおむね共通(一部異なる)。ブレイクはプレフィクスF0で表す。

今日のPC/AT互換機では、キーボードはスキャンコードセット2を発生し、キーボードコントローラがこれをセット1に変換してCPUに送るのが一般的である。ただし、ノートPCではセット1を発生するものがある。セット3は使われていない(UNIXワークステーションのキーボードでセット3を発生するものがあるが、このようなものはPCのBIOSやOSでは通常使うことができない)。


Macintosh ADBキーボードのスキャンコード

(スタブ)


PC-9800キーボードのスキャンコード

PC-9800/9821シリーズのキーボードは、いくつかのキーが追加された程度で大きな変化がなかったため、スキャンコードも整然としている。


話題の着エロボイス!
今なら無料ダウンロード♪

[次ページ]
[オプション/リンク一覧]
[記事の検索]
[この項目を更新]
[おまかせ表示]
[トップページ]
[ニュースをチェック!]
[列車運行情報]
Size:15 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:Mamenoki