###やりたい事
マウスのクリックイベントを実装するためのエスケープシーケンスコードが知りたい。
###質問内容
マウスの座標を取得を有効化する方法は下記のコードで実装したのですがマウスのクリックイベント実装する方法が知りたいです。
※提示コードは Entry.cpp内でEditクラスを利用しています。
###調べたこと
参考サイトA: https://teratail.com/questions/358815
参考サイトB: https://ja.osdn.net/projects/drdeamon64/wiki/12.%E3%83%9E%E3%82%A6%E3%82%B9%E6%93%8D%E4%BD%9C
参考サイトC: https://kmiya-culti.github.io/RLogin/ctrlcode.html#OPT
###環境
OS: ubuntu 64ビット
利用ライブラリ:ncurses
cpp
1#include <string.h> 2#include <iostream> 3#include <fstream> 4#include <memory> 5#include "../lib/ncurses/include/curses.h" 6 7#include "../header/Entry.hpp" 8 9 10 11int main() 12{ 13 14 std::cout<<"\033[?1003h\n"; //マウス座標を有効化 15 initscr(); //初期化 16 17 noecho(); //入力した文字を非表示 18 cbreak(); //Enterキー不要のキー入力 19 keypad(stdscr,TRUE); // 特殊キーを有効化 20 mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION | BUTTON1_CLICKED | BUTTON1_PRESSED ,NULL); // マウスイベントを取得 21 22 std::unique_ptr<Entry> entry = std::make_unique<Entry>(); //Entry 23 24 while (true) 25 { 26 entry->Update(); //更新 27 entry->Renderer(); //描画 28 29 if(entry->getChangeScene() == Scene::SceneType::Exit) 30 { 31 break; 32 } 33 } 34 35 36 std::cout<<"\033[?1003l\n"; //マウス座標を無効化 37 endwin(); //終了 38 39 return 0; 40} 41
cpp
1//計算 2void Edit::Update() 3{ 4 5 int key = getch(); 6 if(getmouse(&event) == OK) 7 { 8 if(event.bstate & REPORT_MOUSE_POSITION) 9 { 10 mousePosition.x = event.x; 11 mousePosition.y = event.y; 12 } 13 14 if(event.bstate & BUTTON1_PRESSED) 15 { 16 std::cout<<"あああ"<<std::endl; 17 file << "BUTTON1_CLICKED"<<std::endl; 18 } 19 20 } 21 22 23 24 25 26 27 28 //ESCで終了 29 if(key == 27) 30 { 31 changeScene = Scene::SceneType::Exit; 32 file.close(); 33 } 34} 35 36//描画 37void Edit::Renderer()const 38{ 39 erase(); 40 move(mousePosition.y,mousePosition.x); 41 42// addstr("AAAA"); 43 44 45 46 47 48 refresh(); 49} 50
あなたの回答
tips
プレビュー