Motifのイベント制御について

このQ&Aのポイント
  • Motifのイベント制御方法について教えてください。
  • LinuxでMotifを使用してプログラムを作成していますが、フォーカスがあたっているボタンにEnterキーが反応せず、代わりにSpaceキーが反応する問題が発生しています。
  • また、スクロールウインドウ内での図形描画時にスクロールバーが最終端まで移動してしまう問題も発生しており、対処方法を教えてください。
回答を見る
  • ベストアンサー

Motifのイベントの制御について教えてください

LinuxでMotifを使用してプログラムを作成しています。 言語は、C言語です。 Motifのウィンドウを起動して、ボタンにフォーカスがあたっている状態でEnterキーを押しても反応しません。 その代わりにSpaceキーだとマウスでクリックした時と同じ状態となります。 Enterキーでボタンを実行したいのですが制御する方法があるのでしょうか? また、スクロールウインドウを表示させそこに図形描画で表を描画しています。 その上にポップアップウィンドウを表示させて、その状態でスクロールバーをマウスの左ボタンで1度だけクリックしても最終端まで移動してしまいます。 原因がよくわかりません何か対処方法があれば教えてください。表示しているポップアップウィンドウは、最前面に固定で表示するようにしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

プログラム中からの変更する場合、widgetをcreateする時に Argに同様の設定を追加します。 こんな感じ。 static char trnsdef[] = "#override \n" " <Key>Return: ArmAndActivate() "; XtTranslations trns; Arg arg[32]; int argno = 0; trns = XtParseTranslationTable( trnsdef ); XtSetArg( arg[argno], XmNtranslations, trns ); argno++;

peacenik
質問者

お礼

大変有り難う御座います。 これで解決できます。

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

>Enterキーでボタンを実行したいのですが制御する方法があるのでしょうか? Enter(Returrn)キーは別の機能に割り当てられていますが、リソースの設定で変更可能です。 PushButton widgetで全てのボタンを変更するなら、 *XmPushButton.translations: #override \ <Key>Return: ArmAndActivate() だと思います。 ArmAndActivateってのがSPACE押した時に実行されるので、Returnでも同じ処理を実行させるように設定しています。 .Xdefaultにでも入れてください。 プログラム中からも変更可能ですが、こっちのが簡単ですので。 後半の質問は、プログラムそのものを見ないとけんとうつきません。 ウインドウの作り方に問題があるような気はしますが。

peacenik
質問者

お礼

ご回答有り難う御座います。 プログラム中からも変更できるのであればそちらの方が望ましいです。 もし、よければプログラム中からの変更方法を教えていただけないでしょうか?

関連するQ&A

  • ダイアログのデフォルトフォーカス

    XPの時はボタンなどにフォーカスが当たっていてENTERキーを押していました win7になってから、ボタンにフォーカスがあたってなく、どうしてもマウスでクリックしなければならず、スピード感が鈍ります。 XPの時代のようなフォーカスの当たり方ができるようにする方法がわかれば教えてください

  • イベントの内容が書かれているサイト又は書籍

    vb.netでイベントの詳細が記載されているホームページ またはマニュアル等ありませんでしょうか Click       クリック        マウスの左ボタンでクリックしたとき DoubleClick   ダブルクリック     マウスの左ボタンでダブルクリックしたとき TextChange  テキストチェンジド テキストの内容が変化したとき Load       ロード        作成されたとき Resize   リサイズ      大きさが変わったとき Closing   クロージング    破棄されるとき Enter       エンター    フォーカスを取得したとき Leave   リーブ        フォーカスを失ったとき KeyPress   キープレス    キーボードを押したとき Tick       ティック      時間が経ったとき 例えば上記のようなイベントの内容が書かれたサイト、書籍 等あれば教えてください ありとあらゆるイベントの内容が網羅されていると助かります ※わかりやすく書かれているのがベターです

  • C#のKeyDownイベント?で

    プログラムやり始めたばかりの初心者です。 電卓を作ってみようとやっているのですが、 一応ボタンを押しては動くようになりました。 キーボードからも入力できるようにKeyDownで設定したのですが 数字キー、+ - * /などは反応するのですがEnterキーだけは フォーカスされてるボタンがクリックされた状態になってしまいます。 どのようにすればよいのでしょうか? プログラムはこんな感じです! private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.D1: case Keys.NumPad1: this.button_1.Focus(); this.button_1.PerformClick(); break; case Keys.D2: case Keys.NumPad2: this.button_2.Focus(); this.button_2.PerformClick(); break; . . . case Keys.Enter: this.button_kei.Focus(); this.button_kei.PerformClick(); break; }

  • マウスの制御

    マウス制御をする時、 左クリック、右クリック、スクロール以外のボタンがあるマウスがありますよね? JavaScript上でどうやってひろったらよろしいでしょうか? なんとかして、あのボタンを使えないようにしたいのですが・・・

  • AutoHotKeyで ユーザーアカウント制御を!

    制限の厳しいPCを使っていると、システムに関わる処理をしようとすると、「ユーザー アカウント制御」の画面が表示され、いちいち ユーザー名とパスワードの入力を求められます。 このダイアログウィンドウがポップアップされてきたら、それを WinWaitActive で検出し、Sendを使ってユーザー名とパスワードを自動的に入力できる AutoHotKeyのスクリプトを動かしたいです。 ; ダイアログが表示されるまで待つ WinWaitActive, ユーザー アカウント制御 で引っ掛けようとしているのですが、ポップアップされてくるダイアログウィンドウに反応してくれません。 AutoHotKeyで、 ユーザー アカウント制御 に 自分の ユーザー名・パスワード を入力できる スクリプトの作り方を教えて頂けますと助かります。 自分で試したスクリプトは、以下の通りです。実際に、ダイアログウィンドウがポップアップしてきても、無反応でした(勿論AutoHotKeyは起動され、下記ahkファイルは常駐された状態です)。 インストールしているAutoHotKeyは、「1.1.37.01 」です。 ----------------------------------------------- #Persistent SetTimer, CheckDialog, 1000 ; 1秒ごとにダイアログをチェック CheckDialog: IfWinExist, ユーザー アカウント制御 { WinActivate ; ウィンドウをアクティブにする WinWaitActive ; ウィンドウがアクティブになるまで待つ ; ダイアログ内のテキストをチェックし、必要な条件が一致するか確認 if (WinActive("管理者のユーザー名とパスワードを入力してください") ) { ; ユーザーIDとパスワードを入力する。 Send, ★ここに自分のユーザー名文字列 Send, {Tab} ; タブキーでフォーカスをパスワードフィールドに移動 Send, ★ここに自分のパスワード文字列 Send, {Enter} ; Enterキーでログインボタンをクリック SetTimer, CheckDialog, Off ; ダイアログの自動入力が完了したらタイマーをオフにする } } Return ----------------------------------------------- どうぞ宜しくお願い致します。

  • WindowsXPから7に移行したものですが、

    WindowsXPから7に移行したものですが、 XP時代はボタンなどにフォーカスが当たっている時はボタンのキャプション周辺に 点線の四角い枠が出来て、いかにもフォーカスが当たっていますとわかり易かったのですが Windows7は若干色が濃くなる程度でどうもジミです。 マウスでボタンをクリックする時は良いですが、私はキーボード(この場合ENTERかSPACE)でボタンを押すくせがあり どこが選択されているかわかりにくて、どうしてもキーボードから手を離してマウスでクリックし、スピード感が鈍ります。 選択されているフォーカスを目立たせる方法など御座いませんでしょうか? 宜しくお願いいたします。

  • enterキーでCGI起動

    度々質問をさせていただいております。 javascript、HTMLにお詳しい方教えてください。 HTMLでボタンを複数作りました。それぞれのボタン(aボタン、bボタン、cボタン)には、違うCGIが動くようにしています。マウスでクリックされずに、enterキーが押された時は、aボタンがクリックされたかのようにしたいのですが、どうコード作ればいいのか皆目検討がつかずに困っております。ボタンにフォーカスをあわしたりしてみたのですが、どうも上手くできません。ご回答よろしくお願いいたします。

  • キーを離した際、、、

    超初心者です。 ムービークリップタイプのA、B、C、D、4つのボタンを作成しました。 マウスを各ボタン上に乗せると、色が変わります。 選ばれたボタンを、クリックすると、イベントが発生します。 これをTABキーと連動したいです。 TABキーが離された瞬間、次のボタンへフォーカスが移動する形で、ボタンを選び、そして、決めたボタン上でEnterキーを押したら、イベントを発生させたいです。 例として、最初TABキーを押したら、フォーカスがAボタンへ行きます。 次に、TABキーを離したら、AからBボタンへ行きます。 また、TABキーを離したら、今度は、BボタンからCボタンへ行きます。 この過程中、TABキーをずっと押したまま離さないと、フォーカスが移動しません。 アクションスクリプトのバージョンは2.0です。 こういうのって可能ですか? 可能ならば、ぜひよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • DL開始時のポップアップを非表示にしたい

    Firefox(現在は99.0.1)を使用していますが、少し前から画像などのダウンロードを開始した時に邪魔なポップアップが出るようになってしまいました。それを非表示にする方法を知りたいです。 問題のポップアップは添付画像のものです。右上にあるボタンの下に表示されます。 このボタンは、マウスオーバーすると「ダウンロードの進行状況を表示します(Ctrl+J)」というツールチップが表示されるものです。 このポップアップは以前にも見た覚えがありますが、Firefoxの更新によって、ダウンロード開始時に表示されるように変更されたようです。 このポップアップはページをスクロールさせるなどの操作で消えるようにできており、「クリックしなくても消える」ように配慮されているのだとは思いますが、それでも十分に邪魔です。 以前のように、見ようと思った時以外は一切表示されないようにしたいです。

  • VB2005 のイベントについて

    いつもお世話になっています。 OS:Windows 2000 言語:VB2005 Express Edition で作成しているのですが、イベントの質問があります。 TextBoxのフォーカスを取得した時に、 そのTextBoxに設定されている文字列を選択させようと思い TextBoxのEnterイベントでSelectAllをしているのですが、 この場合ですと、マウスでクリック選択した時には文字列が選択されません。 Private Sub txt_id_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txt_id.Enter txt_id.SelectAll() End Sub VB6.0 では Private Sub txt_id_GotFocus txt_id.SelStart = 0 txt_id.SelLength = Len(ob_Textbox.Text) End Sub 上記の通り、GotFocusイベントを使用しており、Tabキーでフォーカス取得していた時も マウスで選択している時も変わらず文字列は選択されていました。 VB2005のGotFocusイベントでは、一旦選択されるのですが すぐに選択は解除されてしまうのです。 他にVB6.0のGotFocusと同等のイベントや、対応策などありませんでしょうか? よろしくおねがいいたします。