Keystroke handling is a very complicated business! There are so many layers
between the physical keyboard and the application; in this case THE. These
layers can be best described with the following diagrams:
キーストローク操作は、とても複雑なビジネスです!フィジカル・キーボードとアプリケーションの間にとても多くの層がいます;このケースTHEで。これらの層は、最もよく以下のダイヤグラムで述べることができます:
Text-mode Version of THE using terminal ターミナルを利用したTHEのテキスト-モード・バージョン |
---|
Physical Keyboard フィジカル・キーボード | | [terminal emulator] [端末エミュレータ] | | Termcap/Terminfo Termcap / Terminfo | | Curses カーソルコントロール | | THE THE |
Text-mode Version of THE using xterm xtermを利用したTHEのテキスト-モード・バージョン |
---|
Physical Keyboard フィジカル・キーボード | | X11 server X11サーバー [xmodmap] [ xmodmap ] | | xterm xterm [translations] [翻訳] | | Termcap/Terminfo Termcap / Terminfo | | Curses カーソルコントロール | | THE THE |
X11 Version of THE THEのX11バージョン |
---|
Physical Keyboard フィジカル・キーボード | | X11 server X11サーバー [xmodmap] [ xmodmap ] | | PDCurses PDCurses [translations] [翻訳] | | THE THE |
Each layer is described below
それぞれの層は下に述べられます
Physical keyboard
フィジカル・キーボード
Each keyboard is potentially different from every other. The similarity that
they do posess is that when a key is pressed, a unique code is generated.
The state of the Shift, Control, Num Lock, Alt modifiers either alter the
unique code generated or a seperate code is generated to identify to the next
layer that the key pressed should be modified.
それぞれのキーボードは、潜在的にその他すべてと違います。posessがキーが押されるときに、独特のコードが発生させられるということである彼(それ)らがする類似。Shift、管理、Numロック、Alt修飾子の状態どちらか発生させられた独特のコード、あるいはコードが発生させられるseperateを変えてキーが押すところでは、変更されるべき次の層に識別して下さい。
terminal emulator
端末エミュレータ
This is a required layer if the user is connected to the host via some emulation
software. eg a PC connected to a U*ix host requires a terminal emulator of
one sort or another.
もしユーザーがあるエミュレーション・ソフトウェア経由でホストとつながっていれば、これは要求された層です。PCがU*
ixホストに結んだegは、なんらかのソートに端末エミュレータを要求します。
The terminal emulator translates the unique codes generated by the keyboard
usually into physical escape sequences that are passed to the U*ix shell.
These escape sequences can be seen by running the U*ix command cat -v .
When you press a key on the keyboard while in cat -v , the escape sequences
that the terminal emulator has generated are displayed. Some systems require
the Enter key to be pressed before the escape sequence is displayed. The term
"escape sequence" is used because in most cases, the first character generated
is an Escape character (hex 1B). Following the escape is any number of other
characters, which together form a unique sequence of characters.
端末エミュレータは、U* ixシェルにフィジカルパスされるエスケープ・シーケンスへ通常キーボードによって発生させられた独特のコードを訳します。これらのエスケープ・シーケンスは、U*
ixコマンド・ネコ- vを走らせることによって見ることができます。ネコ- vで(いる)、あなたがキーボードでキーを押すときに、端末エミュレータが発生させたエスケープ・シーケンスは、表示されます。いくつかのシステムは、エスケープ・シーケンスの前に押される(べき)エンター・キーが表示されることが必要です。(
hexの1B)たいていの場合は、文字が発生させた最初であるもの(人)がエスケープ・キャラクタであるという理由で、期間「エスケープ・シーケンス」は、使われます。エスケープの後を追うことは、かなり多くの他の文字です、(共に文字の独特のシーケンスを形づくる)。
When using a terminal directly, firmware on the terminal does the generation
of the escape sequences. Some terminals allow the user to specify what escape
sequence will be generated when particular keys are pressed.
直接に端末を使うときに、端末のファームウェアは、エスケープ・シーケンスの世代をします。いくつかの端末は、ユーザーに何を(に)特定のキーが押されるときに、エスケープ・シーケンスが発生させられるだろうかを示すことを可能にします。
Termcap/Terminfo
Termcap / Terminfo
Each terminal that connects to a U*ix host is identified by the value of
the TERM environment variable. The value of TERM is used to setup various
settings for the terminal. These settings are stored in a database; either
in a flat file termcap or in a compiled format terminfo . Which
one a particular system uses is dependant on the version of the U*ix Operating
System being run.
U* ixホストに接続するそれぞれの端末は、期間環境変数の値によって識別されます。期間の値を使って端末のためのいろいろな設定をセットアップします。これらの設定は、データベースで保存されます;平らなファイルtermcapで、またはコンパイルされたフォーマットterminfoで。特定のシステムが使うどちらの1(人)は、動かされるU*
ixオペレーティングシステムのバージョンで依存しています。
One of the capabilites of the termcap/terminfo databases is to translate
an escape sequence into a keyboard mnemonic that is used by the Curses library
functions. This translation can also be changed by the user.
termcap / terminfoデータベースのcapabilitesの1つは、エスケープ・シーケンスをカーソルコントロールライブラリー機能によって使われるキーボード・ニーモニックに訳すはず(こと,予定)です。この翻訳は、また、ユーザーによって変えることができます。
An example of this is:
これの例は:
Termcap: ku=\E[A
Termcap :ku = \ E[ A
Terminfo: kcuu1=\E[A
Terminfo :kcuu1= \ E[ A
This translates the escape sequence ESC [ A into the mnemonic ku or kccu1.
これは、エスケープ・シーケンスESCを訳します[ニーモニックku、あるいはkccu1へのA。
Curses
カーソルコントロール
The Curses library contains definitions of many keys. These can be seen by
looking in the Curses header file; usually /usr/include/curses.h Here you
will see defintions like:
カーソルコントロールライブラリーは、多くのキーの定義を含みます。これらは、カーソルコントロールヘッダー・ファイルをのぞいて見ることによって見ることができます;通常あなたがdefintionsが好きなのを見るだろうここでの/usr/include/curses.h
:
#define KEY_UP 0403 /* up arrow key */
#は、矢キー*上へKEY _ UP0403/*を定義します/
THE
THE
As THE is a Curses-based application, it recognises the Curses key definitions
defined in curses.h. As not all escape sequences are usually defined in the
Termcap/Terminfo databases, or are defined in curses.h, THE also has special
code to decipher other escape sequences.
THEがカーソルコントロールベースのアプリケーションであるので、それは、カーソルコントロールキー定義がcurses.hで定義したことを認めます。必ずしもすべてのエスケープ・シーケンスがTermcap
/ Terminfoデータベースで通常定義されるかあるいはcurses.hで定義されないので、THEは、他のエスケープ・シーケンスを判読するために、また特別のコードを持っています。
When a key is pressed, and is interpreted by THE, the first action is to
check if the value passed to THE is a known curses key. If it is THE
carries out any command associated with the key. If the value is not a known
curses key, THE assumes that an escape sequence is forthcoming. The module
getch.c has code for deciphering many escape sequences that are not normally
defined in the Termcap/Terminfo database. Later in this document is a table
of escape sequences and its associated curses key.
キーが押されてTHEによって解釈されるときに、最初の活動は、THEにパスされた値が知られたカーソルコントロールキーかどうか確かめるはず(こと,予定)です。もしそれがキャリーなら、外へ、いくらかの(どんな)コマンドは、キーに関連しました。もし値が知られたカーソルコントロールキーでなければ、THEは、エスケープ・シーケンスがまさに現れようとすると仮定します。getch.cにTermcapで多くの通常定義されないエスケープ・シーケンスを判読するためのコードがあるモジュール/
TERMINFOデータベース。後で、このドキュメントで、エスケープ・シーケンスおよびその連合させられたカーソルコントロールのテーブルはキーです。
X11 Server
X11サーバー
When THE is run in a X environemnt, the X server acts in a similar way to
terminal emulation software. The principal difference is that there are more
layers within the X server. The translation of physical keyboard codes to
an X mnemonic is the first layer. The code generated is called a keycode.
This keycode is then translated into another higher level mnemonic; a keysym.
The keysym is usually a name that resembles the label on the physical keyboard.
THEがX environemntで走らせられるときに、Xサーバーは、ターミナル・エミュレーション・ソフトウェアへの同様の道に出演します。主な違いは、Xサーバーの中により多くの層がいるということです。Xニーモニックへのフィジカル・キーボード・コードの翻訳は、初層です。発生させられたコードは、keycodeと呼ばれます。このkeycodeは、もう一つのより高度なレベル・ニーモニックへその時訳されます;keysym。keysymは、通常フィジカル・キーボードでラベルに似ている名前です。
The X environment provides a mechanism to assign keycodes to keysyms. This
is done with the xmodmap command, and any assignment of keycode to keysym
is done for all applications within the current X environemnt.
X環境は、keycodesをkeysymsに割り当てるために、機構を提供します。これは、keysymへのkeycodeのコマンド、およびいくらかの(どんな)割り当てが現在のx
environemntの中にすべてのアプリケーションのために終わったxmodmapを完全に終えています。
xterm
xterm
The xterm program is a terminal emulation program, and as such has many of
the properties of the terminal emulator described above. The xterm program
takes keysyms from the X11 server and generates escape sequences, which are
defined in the xterm entry in the Termcap/ Terminfo database.
xtermプログラムは、ターミナル・エミュレーション・プログラムです、そして、そのようなものがターミナルの多くの資産を持っているので、エミュレーターは上について述べました。xtermプログラムは、X11サーバーからkeysymsを取って、エスケープ・シーケンスを発生させます、(Termcap
/ Terminfoデータベースでxtermエントリーで定義される)。
One of the features of xterm is the ability to alter the standard keysym
to escape sequence translation. Surprisingly this is via a feature called
translations . Not only do these translations enable the user to specify
a different escape sequences to be generated, but internal xterm commands
can also be assigned. These are beyond the scope of this description. An example
of an xterm translation follows:
xtermの特徴の1つは、シーケンス翻訳から逃げるためにスタンダードのkeysymを変える能力です。驚くほど、これは、翻訳と呼ばれる特徴経由でです。これらの翻訳はユーザーが異なるエスケープが発生させられることを順番にならべることを示すことを可能にするというだけではなく、内部のxtermコマンドは、また割当てることができます。これらは、この記述の範囲を越えてです。xterm翻訳の例が後を追うAn
:
*VT100.Translations: #override\n\
* VT100.Translations : #手数料\ n \
<Key>F1: string(0x1b) string("[192z")\n\
<キー> F1:ストリング(0x1b )ストリング( " [192z " ) \ n \
<Key>F2: string(0x1b) string("[193z")\n
<キー> F2:ストリング(0x1b )ストリング( " [193z " ) \ n
This specification is typically part of your own $HOME/.Xdefaults file. This
file is usually read dynamically by the xterm program on startup. On some
systems, the .Xdefaults file is ignored. To ensure the entries are incorporated
into the X server resource database, run the command:
この規格が一般的に一部分は自分自身のものですHOMEの/.Xdefaultsがファイルする$。このファイルは、スタートアップでxtermプログラムによって通常動的に読まれます。いくつかのシステムで、その。Xdefaultsファイルは無視されます。エントリーがXサーバー・リソース・データベースへ編入されるということを確認するために、コマンドを走らせて下さい:
xrdb -merge .Xdefaults
xrdb -マージします。Xdefaults
The above example will generate the escape sequence ESC [ 1 9 2 z when the
F1 key is pressed. The trailing "\" is a continuation character.
上記の例は、エスケープ・シーケンスESCを発生させるでしょう[192つのF1キーが押されるz。後から追っている「\」は、継続文字です。
So, if you had the above translation in effect, and were running THE in an
xterm, and ran the SHOWKEY command, pressing the F1 key would result in THE
responding with F11.
したがって、もしあなたがF1を押して、上記の事実上の翻訳をしてxtermの走っているTHEであってSHOWKEYコマンドを動かしたらキーは、F11で答えるTHEの結果になるでしょう。
PDCurses
PDCurses
The actions performed by PDCurses in the X environment combine the xterm,
Termcap/Terminfo and curses actions. This results in fewer layers to be traversed.
X環境でPDCursesによってされた活動は、xterm、Termcap / Terminfo、およびカーソルコントロール活動を結び合わせます。これは、横ぎられる(べき)よりわずかな層の結果になります。
PDCurses takes a keysym from the X server and converts it into a Curses key
code. PDCurses also has the same translation capabilities as does xterm. The
xterm example above would look like:
PDCursesは、Xサーバーからkeysymを取って、カーソルコントロールキー・コードへそれを変えます。PDCursesは、また、雌xtermと同じ翻訳能力を持っています。上記の例が似ているだろうxterm
:
*the.Translations: #override\n\
* the.Translations : #手数料\ n \
<Key>F1: string(0x1b) string("[192z")\n\
<キー> F1:ストリング(0x1b )ストリング( " [192z " ) \ n \
<Key>F2: string(0x1b) string("[193z")\n
<キー> F2:ストリング(0x1b )ストリング( " [193z " ) \ n
All the details described in xterm as far as translations are concerned hold
for translations in PDCurses.
翻訳に関する限りxtermで述べられたすべての詳細は、PDCursesで翻訳のために保持します。
Another capability that translations offer is the ability to assign international
characters to alphabetic characters, while still having the alphabetic characters
available. For example, the translations below assigns the action of the Shifted
Meta key and A, giving a capital A with a grave accent, and the unshifted
Meta key and A giving a small A with a grave accent.
翻訳が提供するもう一つの能力は、アルファベットの文字にとってインターナショナルの文字を割当てる能力です、まだ持っている間にアルファベットの文字あります.例えば、以下の翻訳は、Shifted
Metaキー、およびA、墓のアクセント、およびunshiftedのMetaキーがある首都Aを与えることおよび墓のアクセントをもつ小さいAを与えることの活動を割当てます。
*the.Translations: #override\n\
* the.Translations : #手数料\ n \
!Shift Meta <Key>a: string(0xc0) \n\
!ShiftMeta <キー> a:ストリング(0xc0) \n\
!Meta <Key>a: string(0xe0) \n
!Meta <キー> a:ストリング(0xe0) \n
The examples above assume you are using a font with a character set that
is compatible with ISO 8859-1.
上記の例は、あなたがISOと互換性があるキャラクタ・セット8859-1をもつフォントを使っていると仮定します。
THE Escape Sequence to Key Name Mapping
キー名前マッピングへのエスケープ・シーケンス
Escape Sequence エスケープ・シーケンス |
Curses Key カーソルコントロールキー |
THE Key Name キー名前 |
---|---|---|
(pre) 1 ~ ( pre )1つの~ (pre) 2 ~ ( pre )2~ (pre) 3 ~ ( pre )3~ (pre) 4 ~ ( pre )4~ (pre) 5 ~ ( pre )5~ (pre) 6 ~ ( pre )6~ (pre) 1 1 ~ ( pre )11つの~ (pre) 1 2 ~ ( pre )12~ (pre) 1 3 ~ ( pre )13~ (pre) 1 4 ~ ( pre )14~ (pre) 1 5 ~ ( pre )15~ (pre) 1 7 ~ ( pre )17~ (pre) 1 8 ~ ( pre )18~ (pre) 1 9 ~ ( pre )19~ (pre) 2 0 ~ ( pre )20~ (pre) 2 1 ~ ( pre )21つの~ (pre) 2 3 ~ ( pre )23~ (pre) 2 4 ~ ( pre )24~ (pre) 2 5 ~ ( pre )25~ (pre) 2 6 ~ ( pre )26~ (pre) 2 8 ~ ( pre )28~ (pre) 2 9 ~ ( pre )29~ (pre) 3 1 ~ ( pre )31つの~ (pre) 3 2 ~ ( pre )32~ (pre) 3 3 ~ ( pre )33~ (pre) 3 4 ~ ( pre )34~ (pre) 3 7 ~ ( pre )37~ (pre) 3 8 ~ ( pre )38~ (pre) 3 9 ~ ( pre )39~ (pre) 4 0 ~ ( pre )40~ (pre) 4 1 ~ ( pre )41つの~ (pre) 4 2 ~ ( pre )42~ (pre) 4 3 ~ ( pre )43~ (pre) 4 4 ~ ( pre )44~ (pre) 4 5 ~ ( pre )45~ (pre) 4 6 ~ ( pre )46~ (pre) 4 7 ~ ( pre )47~ (pre) 4 8 ~ ( pre )48~ (pre) 4 9 ~ ( pre )49~ (pre) 5 0 ~ ( pre )50~ (pre) 5 1 ~ ( pre )51つの~ (pre) 5 2 ~ ( pre )52~ (pre) 5 3 ~ ( pre )53~ (pre) 5 4 ~ ( pre )54~ (pre) 5 5 ~ ( pre )55~ (pre) 5 6 ~ ( pre )56~ (pre) 5 7 ~ ( pre )57~ (pre) 5 8 ~ ( pre )58~ (pre) 5 9 ~ ( pre )59~ (pre) 6 0 ~ ( pre )60~ (pre) A ( pre ) A (pre) B ( pre ) B (pre) C ( pre ) C (pre) D ( pre ) D (pre) F ( pre ) F (pre) G ( pre ) G (pre) H ( pre ) H (pre) I ( pre )私 (pre) L ( pre ) L (pre) M ( pre ) M (pre) N ( pre ) N (pre) O ( pre ) O (pre) P ( pre ) P (pre) Q ( pre ) Q (pre) R ( pre ) R (pre) S ( pre ) S (pre) T ( pre ) T (pre) U ( pre ) U (pre) V ( pre ) V (pre) W ( pre ) W (pre) X ( pre ) X (pre) Z ( pre ) Z (pre) l ( pre ) l (pre) m ( pre ) m (pre) n ( pre ) n (pre) o ( pre ) o (pre) p ( pre ) p (pre) q ( pre ) q (pre) r ( pre ) r (pre) s ( pre ) s (pre) t ( pre ) t (pre) u ( pre ) u (pre) v ( pre ) v (pre) w ( pre ) w (pre) x ( pre ) x (pre) y ( pre ) y (pre) 1 z ( pre )1つのz (pre) 2 z ( pre )2z (pre) 3 z ( pre )3z (pre) 4 z ( pre )4z (pre) 5 z ( pre )5z (pre) 6 z ( pre )6z (pre) 1 9 5 z ( pre )195z (pre) 2 1 4 z ( pre )214z (pre) 2 1 5 z ( pre )215z (pre) 2 1 6 z ( pre )216z (pre) 2 1 7 z ( pre )217z (pre) 2 1 9 z ( pre )219z (pre) 2 2 0 z ( pre )220z (pre) 2 2 1 z ( pre )221つのz (pre) 2 2 2 z ( pre )222z (pre) 2 2 4 z ( pre )224z (pre) 2 2 5 z ( pre )225z (pre) 2 2 6 z ( pre )226z (pre) 2 2 7 z ( pre )227z (pre) 2 2 8 z ( pre )228z (pre) 2 2 9 z ( pre )229z (pre) 2 3 0 z ( pre )230z (pre) 2 3 1 z ( pre )231つのz (pre) 2 3 2 z ( pre )232z (pre) 2 3 3 z ( pre )233z (pre) 2 3 4 z ( pre )234z (pre) 2 3 5 z ( pre )235z (pre) 3 2 4 z ( pre )324z (pre) 3 2 5 z ( pre )325z (pre) 3 2 6 z ( pre )326z (pre) 3 2 7 z ( pre )327z (pre) 3 2 8 z ( pre )328z (pre) 3 2 9 z ( pre )329z (pre) 3 3 0 z ( pre )330z (pre) 3 3 1 z ( pre )331つのz (pre) 3 3 2 z ( pre )332z (pre) 3 3 3 z ( pre )333z (pre) 3 3 4 z ( pre )334z (pre) 3 3 5 z ( pre )335z (pre) 4 1 4 z ( pre )414z (pre) 4 1 5 z ( pre )415z (pre) 4 1 6 z ( pre )416z (pre) 4 1 7 z ( pre )417z (pre) 4 1 9 z ( pre )419z (pre) 4 2 0 z ( pre )420z (pre) 4 2 1 z ( pre )421つのz (pre) 4 2 2 z ( pre )422z (pre) 4 2 3 z ( pre )423z (pre) 4 2 4 z ( pre )424z (pre) 4 2 5 z ( pre )425z (pre) 4 2 6 z ( pre )426z (pre) 4 2 7 z ( pre )427z (pre) 4 2 8 z ( pre )428z (pre) 4 2 9 z ( pre )429z (pre) 4 3 0 z ( pre )430z (pre) 4 3 1 z ( pre )431つのz (pre) 4 3 2 z ( pre )432z (pre) 4 3 3 z ( pre )433z (pre) 4 3 4 z ( pre )434z (pre) 4 3 5 z ( pre )435z (pre) 1 9 2 z ( pre )192z (pre) 1 9 3 z ( pre )193z (pre) 2 9 2 z ( pre )292z (pre) 2 9 3 z ( pre )293z (pre) [ A ( pre ) [ A (pre) [ B ( pre ) [ B (pre) [ C ( pre ) [ C (pre) [ D ( pre ) [ D (pre) [ E ( pre ) [ E (pre) 0 q ( pre )0q (pre) 1 q ( pre )1つのq (pre) 2 q ( pre )2q (pre) 3 q ( pre )3q (pre) 4 q ( pre )4q (pre) 5 q ( pre )5q (pre) 6 q ( pre )6q (pre) 7 q ( pre )7q (pre) 8 q ( pre )8q (pre) 9 q ( pre )9q (pre) 1 0 q ( pre )10q (pre) 1 1 q ( pre )11つのq (pre) 1 2 q ( pre )12q (pre) 1 3 q ( pre )13q (pre) 1 4 q ( pre )14q (pre) 1 5 q ( pre )15q (pre) 1 6 q ( pre )16q (pre) 1 7 q ( pre )17q (pre) 1 8 q ( pre )18q (pre) 1 9 q ( pre )19q (pre) 2 0 q ( pre )20q (pre) 2 1 q ( pre )21つのq (pre) 2 2 q ( pre )22q (pre) 2 3 q ( pre )23q (pre) 2 4 q ( pre )24q (pre) 2 5 q ( pre )25q (pre) 2 6 q ( pre )26q (pre) 2 7 q ( pre )27q (pre) 2 8 q ( pre )28q (pre) 2 9 q ( pre )29q (pre) 3 0 q ( pre )30q (pre) 3 1 q ( pre )31つのq (pre) 3 2 q ( pre )32q (pre) 3 3 q ( pre )33q (pre) 3 4 q ( pre )34q (pre) 3 5 q ( pre )35q (pre) 3 6 q ( pre )36q (pre) 1 3 9 q ( pre )139q (pre) 1 5 0 q ( pre )150q (pre) 1 4 6 q ( pre )146q (pre) 1 5 4 q ( pre )154q ESC P ESC P ESC Q ESC Q ESC R ESC R ESC S ESC S |
KEY_Find _が見つけるキー KEY_InsertHere 基本的な_ InsertHere KEY_Remove 基本的な_リムーブ KEY_Select 基本的な_セレクト KEY_PrevScreen 基本的な_ PrevScreen KEY_NextScreen 基本的な_ |