Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/jproot/othersrc/mgl/mgl2/MGLAPI.doc,v retrieving revision 1.4 retrieving revision 1.8 diff -u -p -r1.4 -r1.8 --- othersrc/mgl/mgl2/MGLAPI.doc 2000/09/09 03:33:57 1.4 +++ othersrc/mgl/mgl2/MGLAPI.doc 2000/11/13 13:36:00 1.8 @@ -369,11 +369,111 @@ void vk_detach(struct virtual_key *vk,in clean_mode が true の場合は、再帰的に free します。 +void mgl_set_key_mode(int mode) + +mode に MGL_SK_RAW を指定することで、get_key を RAW モード +にすることができます。 + +RAW モードでは、get_key() で得られる コードは、ASCII コードではなく、 +キーそのものに対応した 7bit の キーコード と 1bit の状態 +が 得られます。 + +例: + ESC を 押した -> 0x01 + ESC を 離した -> 0x81 + +元のモードにするには、 + +mode に MGL_SK_TRANSLATED + +を指定します。 + +また、MGL_SK_EXTRANSLATED を指定すると、 +ASCII コード に モデファイヤー情報を付加した値が得られます。 + +得られるモデファイヤーは、 + MGL_SKM_CAPS + MGL_SKM_SHIFT + MGL_SKM_CTRL + MGL_SKM_ALT +です。 + +また、モデファイヤーを取り除くには、 + +~MGL_SKM_MASK で & を取ってください。 + +例: + c = get_key(-1); + val = c & ~MGL_SKM_MASK; + shift = c & MGL_SKM_SHIFT; + +注意) モデファイヤーを単独で押し/離した 場合 + モディファイヤー情報 | MGL_SKM_NOTICE + が得られます。MGL_SKM_NOTICE が立っている場合は、キーコードは + 意味を持ちません。 + +新API) + MGL_SKM_RSHIFT + MGL_SKM_RCTRL + MGL_SKM_RALT + + MGL_SKM_MENU + MGL_SKM_RMENU + +が追加になりました。R 付きの モデファイヤーはデフォルトでは得ることが +できません。mgl_set_keymode(MGL_SK_EXMODIFIER_EVENT) +で 拡張できるようにする予定です。 ge_key_im で使われる 入力メソッド(以下 im) とのインターフェイス 単純に get_key_im を呼ぶだけで、変換ウインドウが適当に出ますが 場所を多少コントロールできるようになりました。 + +マウスイベントに関するモードを次のフラグで設定できます。 + + MGL_SK_EXMOUSE_EVENT + +いままで、ボタンを押している状態でないと マウス移動イベントは得られません +でしたが、このフラグがセットされた場合、ボタンを離していても +マウス移動イベントが得られます。 + + + +キーマップのための関数群。( 対応済は、netbsd+emcons のみ) + +void mgl_get_keymap(int code, char *sym1, char *sym2); + +mgl_get_keymap は、RAW_CODE(code) がどのように 変換されるかを返します。 +sym1 に 通常の 変換シンボル (文字列) +sym2 に シフトされたときの 変換シンボル (文字列) + +が返ります。シンボルの実際のコードが何かを調べるためには、mgl_get_keysym() +を使います。 + +int mgl_get_keysym(char *name); + +シンボルのコードを返します。設定されていない場合 (-1) が返ります。 + +int mgl_set_keysym(char *name, int code); + +一部のシンボルは、mgl_set_keysym を呼ばないと得ることができません。 +code には、任意のコード を指定できます。( virtual_key と同じように +MK_VX を指定することを推奨 ) + +現在この対象になる シンボルは、 + F13 - F24 KP_0 - KP_9 KP_plus KP_minus KP_mult KP_div + KP_delete KP_insert KP_home KP_end KP_up KP_down KP_left KP_right + KP_pageup KP_pagedown KP_begin KP_return KP_execute + break pause print hanzen kanji nuhenkan numlock scrlock select +です。 + +int mgl_set_keymap(int key,char *sym1,char *sym2); + +シンボルを使って keymap を設定します。 +ただし、定義されていない シンボルを指定することはできません。 + +成功した場合: 0 失敗した場合: -1 が返ります。 + void im_avoid_point(int x,int y,int clean) im に対し、避けて欲しい矩形領域を通知します。 @@ -459,9 +559,3 @@ void mgl2_draw_string(struct screen *s,i 2. virtual_key 多分 API が少し変わります。 ---- ここでおしまい。 - - - - - -