Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XSetDeviceModifierMapping(3XI) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XSetDeviceButtonMapping(3XI)

XGetDeviceModifierMapping(3XI)  —  NEWS-OS Programmer’s Manual

名称

XGetDeviceModifierMapping, XSetDeviceModifierMapping − デバイスモディファイアマッピングを要求または変更する

形式

XSetDeviceModifierMapping(display, device, modmap)

      Display ∗display;
      XDevice ∗device;
      XModifierKeymap  ∗modmap;
 XModifierKeymap ∗XGetDeviceModifierMapping(display, device)
      Display ∗display;
      XDevice ∗device;

引数

display X サーバとの接続を指定する。

device 要求または変更するモディファイアマッピングの デバイスを指定する。

modmap XModifierKeymap 構造体へのポインタを指定する。

解説

XSetDeviceModifierMapping リクエストは指定デバイスの モディファイアとして使用するキー(もしあれば) の KeyCode を指定します。 成功した場合、X サーバは DeviceMappingNotify イベントを生成し、 XSetDeviceModifierMapping は MappingSuccess を返します。 X は最大 8 個のモディファイアキーを認めています。 XModifierKeymap 構造体に 9 個以上指定した場合、 BadLength エラーとなります。

XModifierKeymap 構造体のmodifiermapメンバは、 各モディファイアにつき max_keypermod 個の KeyCode を 8 セット 保持いています。 この8個のモディファイアの順番は以下に示す通りです。 Shift、 Lock、 Control、 Mod1、 Mod2、 Mod3、 Mod4 および Mod5。 ゼロ以外の KeyCode のみセット毎に意味を持ち、 ゼロの KeyCode は無視されます。 さらに、 ゼロ以外の全ての KeyCode は XListInputDevices が返す min_keycode および max_keycode で指定する範囲になければなりません。 そうでなければ、 BadValue エラーとなります。 マップ全体で 同じKeyCode が 2 回現われてはいけません。 現れた場合には BadValue エラーとなります。

X サーバはモディファイアをどのように 変更するかについて制限を設けることができます。 例えば、あるキーがハードウェア内に変化を起こさせない、 またはオートリピートがあるキーで不可にできない、 または複数モディファイキーをサポートしない というような制限です。 そのような制限を破ろうとした場合、 返されるステータスは MappingFailed となり、 どのモディファイアも変更されません。 あるモディファイアに指定された 新しい KeyCode が現在定義されているものと異なったり、 そのモディファイアに対する どのキー(現在または新たに指定した)が論理的には押された状態では、 XSetDeviceModifierMapping は MappingBusy を返し、 どのモディファイアも変更されません。

XSetDeviceModifierMapping は BadLengthP、 BadDevice、 BadMatch、 BadAlloc、 および BadValue エラーを返すことがあります。

XGetDeviceModifierMapping リクエストは, XModifierKeymap 構造体を新たに生成し, 現在モディファイアとして 使用されているキーを格納し, この構造体へのポインタを返します。 構造体は、 XFreeModifierMapping を呼び出すことで、使用後に開放する必要があります。 あるモディファイアのセットで, KeyCode がすべて 0 なら そのモディファイアは無効であることを示しています. 

XGetDeviceModifierMapping は BadDevice および BadMatch エラーを 生成します。

構造体

XModifierKeymap 構造体を以下に示します:

typedef struct {
int max_keypermod;
KeyCode ∗modifiermap;
} XModifierKeymap;

自己診断

BadLength XModifierKeymap 構造体に 8 つ以上のキーが指定された。

BadAlloc サーバがリクエストした資源または サーバメモリの割り当てに失敗した。

BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice 経由にてクライアントからオープンされていない。 指定デバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。

BadMatch キーを持たないデバイスを指定することで XGetDeviceModifierMapping または XChangeDeviceModifierMapping リクエストが実行される場合、 このエラーが発生します。

BadValue いくつかの数値が、 リクエストによって認められる範囲外である。 指定範囲が引数に対してでなければ、 引数のタイプで定義した範囲全てが認められます。 二者択一のセットで定義された引数の場合、 このエラーが発生します。

関連事項

XSetDeviceButtonMapping(3XI)
Programming With Xlib

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026