約 1,890,742 件
https://w.atwiki.jp/pspprogram/pages/50.html
int sceCtrlSetSamplingCycle(int cycle); int sceCtrlGetSamplingCycle(int *pcycle); int sceCtrlSetSamplingMode(int mode); int sceCtrlGetSamplingMode(int *pmode); int sceCtrlPeekBufferPositive(SceCtrlData *pad_data, int count); int sceCtrlPeekBufferNegative(SceCtrlData *pad_data, int count); int sceCtrlReadBufferPositive(SceCtrlData *pad_data, int count); int sceCtrlReadBufferNegative(SceCtrlData *pad_data, int count); int sceCtrlPeekLatch(SceCtrlLatch *latch_data); int sceCtrlReadLatch(SceCtrlLatch *latch_data); 簡単な使い方
https://w.atwiki.jp/pspprogram/pages/53.html
機能 コントローラーのモードを設定します。 方向キーorアナログのスティック API int sceCtrlSetSamplingMode(int mode); in pspctrl.h 第一引数 PspCtrlModeの中の一つを指定 enum PspCtrlMode { /* デジタル. */ PSP_CTRL_MODE_DIGITAL = 0, /* アナログ. */ PSP_CTRL_MODE_ANALOG }; 戻り値 変更する前のモードの番号
https://w.atwiki.jp/tomy_dj/pages/18.html
【メイン】 Ctrl2Cap プログラミング中はキーボードからなるべく手を離さずに作業を進めるために、 積極的にキーボードショートカットを活用します。 そのため、Ctrlキーを多用するのですが、109キーボードのCtrlは大変押しにくい場所にあります。 そこで、あまり使わないCapsLockとCtrlを入れ替えると便利です。 上記ファイルを実行すれば一発で入れ替え可能です。 【参考資料】 【外部リンク】
https://w.atwiki.jp/pspprogram/pages/56.html
サンプルのメイン部分抜粋 #define printfpspDebugScreenPrintfint main(void){ //コントローラーの状態を保存する構造体SceCtrlData pad;pspDebugScreenInit();SetupCallbacks();sceCtrlSetSamplingCycle(0);//アナログパットの方つかうよsceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);while(1){pspDebugScreenSetXY(0, 2);//押されてるボタン調べる sceCtrlReadBufferPositive( pad, 1); //アナログスティックのx座標printf("Analog X = %d ", pad.Lx);//アナログのy座標printf("Analog Y = %d \n", pad.Ly);if (pad.Buttons != 0){if (pad.Buttons PSP_CTRL_SQUARE){//四角ボタン押されてるときの処理printf("Square pressed \n");}if (pad.Buttons PSP_CTRL_TRIANGLE){//三角ボタン押されてるときの処理 以下同じprintf("Triangle pressed \n");} if (pad.Buttons PSP_CTRL_CIRCLE){printf("Cicle pressed \n");} if (pad.Buttons PSP_CTRL_CROSS){printf("Cross pressed \n");} if (pad.Buttons PSP_CTRL_UP){printf("Up pressed \n");} if (pad.Buttons PSP_CTRL_DOWN){printf("Down pressed \n");} if (pad.Buttons PSP_CTRL_LEFT){printf("Left pressed \n");} if (pad.Buttons PSP_CTRL_RIGHT){printf("Right pressed \n");} if (pad.Buttons PSP_CTRL_START){printf("Start pressed \n");}if (pad.Buttons PSP_CTRL_SELECT){printf("Select pressed \n");}if (pad.Buttons PSP_CTRL_LTRIGGER){printf("L-trigger pressed \n");}if (pad.Buttons PSP_CTRL_RTRIGGER){printf("R-trigger pressed \n");} }}sceKernelExitGame();return 0; } } typedef struct SceCtrlData { /** The current read frame. */ unsigned int TimeStamp; /** Bit mask containing zero or more of PspCtrlButtons. */ unsigned int Buttons; /** Analogue stick, X axis. */ unsigned char Lx; /** Analogue stick, Y axis. */ unsigned char Ly; /** Reserved. */ unsigned char Rsrv[6]; } SceCtrlData; の構造体のメンバbuttonsにボタン押下情報が入っています。 各ビットに押されてるか押されてないかの情報がはいってます。 unsigned intで32bitで32個分のキーの情報が入れられますが、 enum PspCtrlButtonsによると22個分しか使われていないようです。 (実際はわかりません。) たとえばセレクトボタンだけが押されると、 00000000000000000000000000000001 16進数だと0x00000001 となります。 セレクトとスタートだと 00000000000000000000000000001001 16進数だと0x00000009 となります。 enum PspCtrlButtons { /** Select button. */ PSP_CTRL_SELECT = 0x000001, /** Start button. */ PSP_CTRL_START = 0x000008, /** Up D-Pad button. */ PSP_CTRL_UP = 0x000010, /** Right D-Pad button. */ PSP_CTRL_RIGHT = 0x000020, /** Down D-Pad button. */ PSP_CTRL_DOWN = 0x000040, /** Left D-Pad button. */ PSP_CTRL_LEFT = 0x000080, /** Left trigger. */ PSP_CTRL_LTRIGGER = 0x000100, /** Right trigger. */ PSP_CTRL_RTRIGGER = 0x000200, /** Triangle button. */ PSP_CTRL_TRIANGLE = 0x001000, /** Circle button. */ PSP_CTRL_CIRCLE = 0x002000, /** Cross button. */ PSP_CTRL_CROSS = 0x004000, /** Square button. */ PSP_CTRL_SQUARE = 0x008000, /** Home button. */ PSP_CTRL_HOME = 0x010000, /** Hold button. */ PSP_CTRL_HOLD = 0x020000, /** Music Note button. */ PSP_CTRL_NOTE = 0x800000, /** Screen button. */ PSP_CTRL_SCREEN = 0x400000, /** Volume up button. */ PSP_CTRL_VOLUP = 0x100000, /** Volume down button. */ PSP_CTRL_VOLDOWN = 0x200000, /** Wlan switch up. */ PSP_CTRL_WLAN_UP = 0x040000, /** Remote hold position. */ PSP_CTRL_REMOTE = 0x080000, /** Disc present. */ PSP_CTRL_DISC = 0x1000000, /** Memory stick present. */ PSP_CTRL_MS = 0x2000000, }; で論理積演算で判定。 //buttunsのセレクトキーのbitが1ならば //この論理積計算は1になるので判定式は真でifの中が実行される if(pad.Buttuns PSP_CTRL_SELECT){ ... } セレクトとスタート if((pad.Buttuns (PSP_CTRL_START|PSP_CTRL_SELECT))==(PSP_CTRL_START|PSP_CTRL_SELECT)){ .. } 簡単な説明でした。 間違ってたらだれか直してね。
https://w.atwiki.jp/is01rebuild/pages/89.html
現在の状況 初期化時の ioctl コマンドが判明したので、内部情報を可視化する作業中 ソースコード kernel/arch/arm/mach-msm/qdsp6/msm8k_audio_dev_ctrl.c 初期化シーケンス cmd=4004610a AUDIO_SET_VOLUME vol=100 コード例 unsigned int vol=100; ioctl( fd_madc1 , AUDIO_SET_VOLUME , vol ); cmd=40046120 AUDIO_SWITCH_DEVICE new_device=0x30 I2S_RX_SPKR コード例 unsigned int dev=0x30; ioctl( fd_madc1 , AUDIO_SWITCH_DEVICE, dev ); cmd=4004610a AUDIO_SET_VOLUME vol=100 cmd=40046120 AUDIO_SWITCH_DEVICE new_device=0x06 SPKR_PHONE_MIC cmd=40046121 AUDIO_SET_MUTE mute=0 path=1 コード例 // msm_audio.h で定義 struct msm_mute_info { uint32_t mute; uint32_t path; }; struct msm_mute_info mute; // msm_audio.h より // #define SND_MUTE_UNMUTED 0 // #define SND_MUTE_MUTED 1 mute.mute=0; // msm8k_cad_devices.h より // #define CAD_RX_DEVICE 0x00 // #define CAD_TX_DEVICE 0x01 // #define CAD_AUXPGA_DEVICE 0x02 mute.path=1; ioctl( fd_madc1 , AUDIO_SET_MUTE , mute ); dmesgによる情報 msm8k_audio_dev_ctrl_open() msm8k_audio_dev_ctrl_open msm8k_audio_dev_ctrl_ioctl() msm8k_audio_dev_ctrl_ioctl() cmd=4004610a 7e860c6c audio_set_device_volume() audio_set_device_volume audio_set_device_volume_path() audio_set_device_volume_path msm8k_audio_dev_ctrl_release() msm8k_audio_dev_ctrl_release msm8k_audio_dev_ctrl_open() msm8k_audio_dev_ctrl_open msm8k_audio_dev_ctrl_ioctl() msm8k_audio_dev_ctrl_ioctl() cmd=40046120 2b0b3bcc audio_switch_device() audio_switch_device new_device=30 get_cad_hw_device_id() get_cad_hw_device_id new_device=00000030 get_cad_hw_device_id() [audio_switch_device] case I2S_RX_SPKR msm8k_audio_dev_ctrl_open() msm8k_audio_dev_ctrl_open msm8k_audio_dev_ctrl_ioctl() msm8k_audio_dev_ctrl_ioctl() cmd=4004610a 2b0b3b9c audio_set_device_volume() audio_set_device_volume audio_set_device_volume_path() audio_set_device_volume_path msm8k_audio_dev_ctrl_release() msm8k_audio_dev_ctrl_release msm8k_audio_dev_ctrl_ioctl() msm8k_audio_dev_ctrl_ioctl() cmd=40046120 2b0b3bc8 audio_switch_device() audio_switch_device new_device=6 get_cad_hw_device_id() get_cad_hw_device_id new_device=00000006 msm8k_audio_dev_ctrl_ioctl() msm8k_audio_dev_ctrl_ioctl() cmd=40046121 2b0b3bc0 audio_set_device_mute() audio_set_device_mute msm8k_audio_dev_ctrl_release() msm8k_audio_dev_ctrl_release ioctlの定義 kernel/include/linux/msm_audio.h /* PCM Audio */ #define AUDIO_IOCTL_MAGIC a #define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned) #define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned) #define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned) #define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned) #define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned) #define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned) #define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned) #define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned) #define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned) #define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned) #define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned) #define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned) #define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned) #define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, unsigned) #define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned) #define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned) #define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned) #define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, unsigned) #define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, unsigned) #define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode) #define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned) #define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, \ struct msm_snd_device_list) #define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned) #define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned) #define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, \ struct msm_audio_route_config) #define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned) #define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned) #define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned) #define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned) #define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 34, \ struct msm_audio_bitstream_info) #define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned) #define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned) #define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 37, unsigned) #define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 38, \ struct msm_vol_info) #define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned) #define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 40, \ struct msm_audio_stream_config) #define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 41, \ struct msm_audio_stream_config) #define AUDIO_SET_MUTE_EX _IOW(AUDIO_IOCTL_MAGIC, 42, unsigned) #defineAUDIO_MAX_COMMON_IOCTL_NUM100 /* CONFLICTING ioctls added by Google. */ #define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned) #define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned) #define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 13, unsigned) #define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned) /* End conflicts. */ デバイス定義 kwrnel/include/linux/msm_audio.h #define HANDSET_MIC0x01 #define HANDSET_SPKR0x02 #define HEADSET_MIC0x03 #define HEADSET_SPKR_MONO0x04 #define HEADSET_SPKR_STEREO0x05 #define SPKR_PHONE_MIC0x06 #define SPKR_PHONE_MONO0x07 #define SPKR_PHONE_STEREO0x08 #define BT_SCO_MIC0x09 #define BT_SCO_SPKR0x0A #define BT_A2DP_SPKR0x0B #define TTY_HEADSET_MIC0x0C #define TTY_HEADSET_SPKR0x0D #define I2S_RX_SPKR 0x30 #define I2S_RX_HEADSET 0x31 #define HANDSETMIC_HEADSET_MIC 0x32 #define I2S_RX_HANDSETMIC_HEADSET 0x33 #define LINE_IN_MIC 0x34 #define I2S_RX_FAREND_TERMINAL 0x35 #define LOOPBACK_SPKR_MIC0x50 #define LOOPBACK_HEADSET_MIC0x51 #define LOOPBACK_EAR0x52 #define LOOPBACK_HEADPHONE0x53 #define LOOPBACK_SPKR0x54 間違いが多く含まれているかもしれません、何かお気づきの点が有りましたら、Twitterか下記まで。 コメント 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/suzu_notes/pages/13.html
リスト表示 ■メインビュー(CxxxView)の場合 BOOL CxxxView PreCreateWindow(CREATESTRUCT cs) { // TODO この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを // 修正してください。 cs.style |= LVS_REPORT;// スタイルの指定 return CListView PreCreateWindow(cs); } void CxxxView OnInitialUpdate() { CxxxView OnInitialUpdate(); // TODO GetListCtrl() メンバ関数の呼び出しをとおして直接そのリスト コントロールに // アクセスすることによって ListView をアイテムで固定できます。 CListCtrl myLV = GetListCtrl(); myLV.InsertColumn(0, _T("テスト"), LVCFMT_LEFT, 100, -1);// 表示テスト用カラム myLV.InsertColumn(1, _T("テスト2"), LVCFMT_LEFT, 300, -1);// 表示テスト用カラム } ■ドッキングウィンドウ上に表示 CDockablePaneの派生クラス(CxxxWnd)のOnCreate関数 int CxxxWnd OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDockablePane OnCreate(lpCreateStruct) == -1) return -1; // TODO ここに特定な作成コードを追加してください。 CRect rectDummy; rectDummy.SetRectEmpty(); const DWORD dwViewStyle = LVS_REPORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL;// リストのスタイル指定 if ( !m_ListCtrl.Create(dwViewStyle, rectDummy, this, 1) ) return -1;// リストコントロールの生成 m_ListCtrl.InsertColumn( 1, _T("テスト"), LVCFMT_LEFT, 100);// カラムを追加 return 0; } これだけだと、ウィンドウは白いままなので再描画を行う必要がある。 CDockablePaneの派生クラス(CxxxWnd)のOnSize関数 void CxxxViewWnd OnSize(UINT nType, int cx, int cy) { CDockablePane OnSize(nType, cx, cy); // TODO ここにメッセージ ハンドラ コードを追加します。 AdjustLayout();// リストコントロール部分の再描画 } CDockablePaneの派生クラス(CxxxWnd)にリストコントロールを再描画する関数(AdjustLayout)を追加 void CxxxViewWnd AdjustLayout() { if(GetSafeHwnd() == NULL) return; CRect rectClient; GetClientRect(rectClient); m_ListCtrl.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(), SWP_NOACTIVATE | SWP_NOZORDER); }
https://w.atwiki.jp/northblue/pages/70.html
これは知ってる人は知ってる。お得な知識です。 例)お店でアイテムを売る際、アイテムを売る欄に持っていく時に「Ctrl」キーを押すと・・・ というように、アイテムのMAX数を一瞬で売りさばくことが出来ます。 例)「Ctrl」キーを押しながらスキルLvの「←」「→」を押すと・・・ スキルLvがMIN数まで一瞬で設定出来ます! スキルLvがMAX数まで一瞬で設定出来ます!
https://w.atwiki.jp/ctrl/pages/2.html
Main Link Ctrl Top イベント一覧 よくある質問 ? 。_ 不完全なリンク 掲示板 雑談・質問 フレンド交換 関連サイト Wiki管理人 その他 meny 更新履歴 編集
https://w.atwiki.jp/pspprogram/pages/52.html
機能 コントローラーの押されてるボタンを調べます。 API int sceCtrlReadBufferPositive(SceCtrlData *pad_data, int count); pspctrl.hより 第一引数 pspctrl.h内で定義されてるSceCtrlDataのポインタを わたす。 /** Returned controller data */ typedef struct SceCtrlData { /** The current read frame. */ unsigned int TimeStamp; /** 押されてるボタンのデータPspCtrlButtonsのフラグを使う */ unsigned int Buttons; /** アナログスティックの X 軸. */ unsigned char Lx; /** アナログスティックの Y 軸. */ unsigned char Ly; /** 予約してある つかうなこのやろー */ unsigned char Rsrv[6]; } SceCtrlData; 第二引数 たぶん第一引数の個数 普通は1でつかうよね
https://w.atwiki.jp/little_lamb/pages/14.html
■Ctrl + K 2ストロークキーの割り当て キー メニュー表示 @ 編集中のファイルをマクロとして実行 C 貼り付け D 行の複写 E 擬似コンソール G ファイルから検索 (Vz では read tag タグ情報の取得) H インデント変更 K コピー M マクロメニュー P 印刷 U 削除文字バッファをクリア (Vz では Undo ペーストのアンドゥ) X テキストの比較 Y テキストスタックをクリア Z 全角半角変換 0 現在位置をマーク 1 ブックマークトグル 2 ブックマーククリア