From 1c91adefcc5979c08164f03cbecc099e0b7b3e16 Mon Sep 17 00:00:00 2001 From: rankun Date: Wed, 14 Nov 2018 14:08:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + {src => QtScrcpy}/QtScrcpy.pro | 0 {src => QtScrcpy}/adb/adb.pri | 0 {src => QtScrcpy}/adb/adbprocess.cpp | 0 {src => QtScrcpy}/adb/adbprocess.h | 0 {src => QtScrcpy}/android/android.pri | 0 {src => QtScrcpy}/android/input.h | 0 {src => QtScrcpy}/android/keycodes.h | 0 {src => QtScrcpy}/common/common.pri | 0 {src => QtScrcpy}/common/qscrcpyevent.h | 0 {src => QtScrcpy}/decoder/avframeconvert.cpp | 0 {src => QtScrcpy}/decoder/avframeconvert.h | 0 {src => QtScrcpy}/decoder/decoder.cpp | 0 {src => QtScrcpy}/decoder/decoder.h | 0 {src => QtScrcpy}/decoder/decoder.pri | 0 {src => QtScrcpy}/decoder/fpscounter.cpp | 0 {src => QtScrcpy}/decoder/fpscounter.h | 0 {src => QtScrcpy}/decoder/frames.cpp | 0 {src => QtScrcpy}/decoder/frames.h | 0 {src => QtScrcpy}/dialog.cpp | 0 {src => QtScrcpy}/dialog.h | 0 {src => QtScrcpy}/dialog.ui | 0 .../ffmpeg/include/libavcodec/ac3_parser.h | 0 .../ffmpeg/include/libavcodec/adts_parser.h | 0 .../ffmpeg/include/libavcodec/avcodec.h | 0 .../ffmpeg/include/libavcodec/avdct.h | 0 .../ffmpeg/include/libavcodec/avfft.h | 0 .../ffmpeg/include/libavcodec/d3d11va.h | 0 .../ffmpeg/include/libavcodec/dirac.h | 0 .../ffmpeg/include/libavcodec/dv_profile.h | 0 .../ffmpeg/include/libavcodec/dxva2.h | 0 .../ffmpeg/include/libavcodec/jni.h | 0 .../ffmpeg/include/libavcodec/mediacodec.h | 0 .../ffmpeg/include/libavcodec/qsv.h | 0 .../ffmpeg/include/libavcodec/vaapi.h | 0 .../ffmpeg/include/libavcodec/vdpau.h | 0 .../ffmpeg/include/libavcodec/version.h | 0 .../ffmpeg/include/libavcodec/videotoolbox.h | 0 .../ffmpeg/include/libavcodec/vorbis_parser.h | 0 .../ffmpeg/include/libavcodec/xvmc.h | 0 .../ffmpeg/include/libavformat/avformat.h | 0 .../ffmpeg/include/libavformat/avio.h | 0 .../ffmpeg/include/libavformat/version.h | 0 .../ffmpeg/include/libavutil/adler32.h | 0 .../ffmpeg/include/libavutil/aes.h | 0 .../ffmpeg/include/libavutil/aes_ctr.h | 0 .../ffmpeg/include/libavutil/attributes.h | 0 .../ffmpeg/include/libavutil/audio_fifo.h | 0 .../ffmpeg/include/libavutil/avassert.h | 0 .../ffmpeg/include/libavutil/avconfig.h | 0 .../ffmpeg/include/libavutil/avstring.h | 0 .../ffmpeg/include/libavutil/avutil.h | 0 .../ffmpeg/include/libavutil/base64.h | 0 .../ffmpeg/include/libavutil/blowfish.h | 0 .../ffmpeg/include/libavutil/bprint.h | 0 .../ffmpeg/include/libavutil/bswap.h | 0 .../ffmpeg/include/libavutil/buffer.h | 0 .../ffmpeg/include/libavutil/camellia.h | 0 .../ffmpeg/include/libavutil/cast5.h | 0 .../ffmpeg/include/libavutil/channel_layout.h | 0 .../ffmpeg/include/libavutil/common.h | 0 .../ffmpeg/include/libavutil/cpu.h | 0 .../ffmpeg/include/libavutil/crc.h | 0 .../ffmpeg/include/libavutil/des.h | 0 .../ffmpeg/include/libavutil/dict.h | 0 .../ffmpeg/include/libavutil/display.h | 0 .../ffmpeg/include/libavutil/downmix_info.h | 0 .../include/libavutil/encryption_info.h | 0 .../ffmpeg/include/libavutil/error.h | 0 .../ffmpeg/include/libavutil/eval.h | 0 .../ffmpeg/include/libavutil/ffversion.h | 0 .../ffmpeg/include/libavutil/fifo.h | 0 .../ffmpeg/include/libavutil/file.h | 0 .../ffmpeg/include/libavutil/frame.h | 0 .../ffmpeg/include/libavutil/hash.h | 0 .../ffmpeg/include/libavutil/hmac.h | 0 .../ffmpeg/include/libavutil/hwcontext.h | 0 .../ffmpeg/include/libavutil/hwcontext_cuda.h | 0 .../include/libavutil/hwcontext_d3d11va.h | 0 .../ffmpeg/include/libavutil/hwcontext_drm.h | 0 .../include/libavutil/hwcontext_dxva2.h | 0 .../include/libavutil/hwcontext_mediacodec.h | 0 .../ffmpeg/include/libavutil/hwcontext_qsv.h | 0 .../include/libavutil/hwcontext_vaapi.h | 0 .../include/libavutil/hwcontext_vdpau.h | 0 .../libavutil/hwcontext_videotoolbox.h | 0 .../ffmpeg/include/libavutil/imgutils.h | 0 .../ffmpeg/include/libavutil/intfloat.h | 0 .../ffmpeg/include/libavutil/intreadwrite.h | 0 .../ffmpeg/include/libavutil/lfg.h | 0 .../ffmpeg/include/libavutil/log.h | 0 .../ffmpeg/include/libavutil/lzo.h | 0 .../ffmpeg/include/libavutil/macros.h | 0 .../libavutil/mastering_display_metadata.h | 0 .../ffmpeg/include/libavutil/mathematics.h | 0 .../ffmpeg/include/libavutil/md5.h | 0 .../ffmpeg/include/libavutil/mem.h | 0 .../ffmpeg/include/libavutil/motion_vector.h | 0 .../ffmpeg/include/libavutil/murmur3.h | 0 .../ffmpeg/include/libavutil/opt.h | 0 .../ffmpeg/include/libavutil/parseutils.h | 0 .../ffmpeg/include/libavutil/pixdesc.h | 0 .../ffmpeg/include/libavutil/pixelutils.h | 0 .../ffmpeg/include/libavutil/pixfmt.h | 0 .../ffmpeg/include/libavutil/random_seed.h | 0 .../ffmpeg/include/libavutil/rational.h | 0 .../ffmpeg/include/libavutil/rc4.h | 0 .../ffmpeg/include/libavutil/replaygain.h | 0 .../ffmpeg/include/libavutil/ripemd.h | 0 .../ffmpeg/include/libavutil/samplefmt.h | 0 .../ffmpeg/include/libavutil/sha.h | 0 .../ffmpeg/include/libavutil/sha512.h | 0 .../ffmpeg/include/libavutil/spherical.h | 0 .../ffmpeg/include/libavutil/stereo3d.h | 0 .../ffmpeg/include/libavutil/tea.h | 0 .../ffmpeg/include/libavutil/threadmessage.h | 0 .../ffmpeg/include/libavutil/time.h | 0 .../ffmpeg/include/libavutil/timecode.h | 0 .../ffmpeg/include/libavutil/timestamp.h | 0 .../ffmpeg/include/libavutil/tree.h | 0 .../ffmpeg/include/libavutil/twofish.h | 0 .../ffmpeg/include/libavutil/version.h | 0 .../ffmpeg/include/libavutil/xtea.h | 0 .../ffmpeg/include/libswresample/swresample.h | 0 .../ffmpeg/include/libswresample/version.h | 0 .../ffmpeg/include/libswscale/swscale.h | 0 .../ffmpeg/include/libswscale/version.h | 0 .../inputcontrol/controlevent.cpp | 0 {src => QtScrcpy}/inputcontrol/controlevent.h | 0 {src => QtScrcpy}/inputcontrol/controller.cpp | 0 {src => QtScrcpy}/inputcontrol/controller.h | 0 .../inputcontrol/inputcontrol.pri | 0 .../inputcontrol/inputconvertbase.cpp | 0 .../inputcontrol/inputconvertbase.h | 0 .../inputcontrol/inputconvertgame.cpp | 920 +++++++++--------- .../inputcontrol/inputconvertgame.h | 172 ++-- .../inputcontrol/inputconvertnormal.cpp | 680 ++++++------- .../inputcontrol/inputconvertnormal.h | 44 +- {src => QtScrcpy}/main.cpp | 0 {src => QtScrcpy}/render/qyuvopenglwidget.cpp | 0 {src => QtScrcpy}/render/qyuvopenglwidget.h | 0 {src => QtScrcpy}/render/render.pri | 0 {src => QtScrcpy}/server/devicesocket.cpp | 0 {src => QtScrcpy}/server/devicesocket.h | 0 {src => QtScrcpy}/server/server.cpp | 0 {src => QtScrcpy}/server/server.h | 0 {src => QtScrcpy}/server/server.pri | 0 {src => QtScrcpy}/server/tcpserver.cpp | 0 {src => QtScrcpy}/server/tcpserver.h | 0 {src => QtScrcpy}/videoform.cpp | 0 {src => QtScrcpy}/videoform.h | 0 {src => QtScrcpy}/videoform.ui | 0 all.pro | 2 + 153 files changed, 911 insertions(+), 908 deletions(-) rename {src => QtScrcpy}/QtScrcpy.pro (100%) rename {src => QtScrcpy}/adb/adb.pri (100%) rename {src => QtScrcpy}/adb/adbprocess.cpp (100%) rename {src => QtScrcpy}/adb/adbprocess.h (100%) rename {src => QtScrcpy}/android/android.pri (100%) rename {src => QtScrcpy}/android/input.h (100%) rename {src => QtScrcpy}/android/keycodes.h (100%) rename {src => QtScrcpy}/common/common.pri (100%) rename {src => QtScrcpy}/common/qscrcpyevent.h (100%) rename {src => QtScrcpy}/decoder/avframeconvert.cpp (100%) rename {src => QtScrcpy}/decoder/avframeconvert.h (100%) rename {src => QtScrcpy}/decoder/decoder.cpp (100%) rename {src => QtScrcpy}/decoder/decoder.h (100%) rename {src => QtScrcpy}/decoder/decoder.pri (100%) rename {src => QtScrcpy}/decoder/fpscounter.cpp (100%) rename {src => QtScrcpy}/decoder/fpscounter.h (100%) rename {src => QtScrcpy}/decoder/frames.cpp (100%) rename {src => QtScrcpy}/decoder/frames.h (100%) rename {src => QtScrcpy}/dialog.cpp (100%) rename {src => QtScrcpy}/dialog.h (100%) rename {src => QtScrcpy}/dialog.ui (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/ac3_parser.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/adts_parser.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/avcodec.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/avdct.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/avfft.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/d3d11va.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/dirac.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/dv_profile.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/dxva2.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/jni.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/mediacodec.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/qsv.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/vaapi.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/vdpau.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/version.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/videotoolbox.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/vorbis_parser.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavcodec/xvmc.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavformat/avformat.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavformat/avio.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavformat/version.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/adler32.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/aes.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/aes_ctr.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/attributes.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/audio_fifo.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/avassert.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/avconfig.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/avstring.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/avutil.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/base64.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/blowfish.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/bprint.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/bswap.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/buffer.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/camellia.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/cast5.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/channel_layout.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/common.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/cpu.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/crc.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/des.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/dict.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/display.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/downmix_info.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/encryption_info.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/error.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/eval.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/ffversion.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/fifo.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/file.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/frame.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hash.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hmac.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_cuda.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_d3d11va.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_drm.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_dxva2.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_mediacodec.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_qsv.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_vaapi.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_vdpau.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/hwcontext_videotoolbox.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/imgutils.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/intfloat.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/intreadwrite.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/lfg.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/log.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/lzo.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/macros.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/mastering_display_metadata.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/mathematics.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/md5.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/mem.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/motion_vector.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/murmur3.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/opt.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/parseutils.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/pixdesc.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/pixelutils.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/pixfmt.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/random_seed.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/rational.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/rc4.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/replaygain.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/ripemd.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/samplefmt.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/sha.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/sha512.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/spherical.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/stereo3d.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/tea.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/threadmessage.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/time.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/timecode.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/timestamp.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/tree.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/twofish.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/version.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libavutil/xtea.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libswresample/swresample.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libswresample/version.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libswscale/swscale.h (100%) rename {src => QtScrcpy}/ffmpeg/include/libswscale/version.h (100%) rename {src => QtScrcpy}/inputcontrol/controlevent.cpp (100%) rename {src => QtScrcpy}/inputcontrol/controlevent.h (100%) rename {src => QtScrcpy}/inputcontrol/controller.cpp (100%) rename {src => QtScrcpy}/inputcontrol/controller.h (100%) rename {src => QtScrcpy}/inputcontrol/inputcontrol.pri (100%) rename {src => QtScrcpy}/inputcontrol/inputconvertbase.cpp (100%) rename {src => QtScrcpy}/inputcontrol/inputconvertbase.h (100%) rename {src => QtScrcpy}/inputcontrol/inputconvertgame.cpp (96%) rename {src => QtScrcpy}/inputcontrol/inputconvertgame.h (96%) rename {src => QtScrcpy}/inputcontrol/inputconvertnormal.cpp (96%) rename {src => QtScrcpy}/inputcontrol/inputconvertnormal.h (97%) rename {src => QtScrcpy}/main.cpp (100%) rename {src => QtScrcpy}/render/qyuvopenglwidget.cpp (100%) rename {src => QtScrcpy}/render/qyuvopenglwidget.h (100%) rename {src => QtScrcpy}/render/render.pri (100%) rename {src => QtScrcpy}/server/devicesocket.cpp (100%) rename {src => QtScrcpy}/server/devicesocket.h (100%) rename {src => QtScrcpy}/server/server.cpp (100%) rename {src => QtScrcpy}/server/server.h (100%) rename {src => QtScrcpy}/server/server.pri (100%) rename {src => QtScrcpy}/server/tcpserver.cpp (100%) rename {src => QtScrcpy}/server/tcpserver.h (100%) rename {src => QtScrcpy}/videoform.cpp (100%) rename {src => QtScrcpy}/videoform.h (100%) rename {src => QtScrcpy}/videoform.ui (100%) create mode 100644 all.pro diff --git a/.gitignore b/.gitignore index 0d806a7..f805bd0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /output/debug/*.ilk /output/debug/QtScrcpy.exe /output/release/QtScrcpy.exe +/*.user diff --git a/src/QtScrcpy.pro b/QtScrcpy/QtScrcpy.pro similarity index 100% rename from src/QtScrcpy.pro rename to QtScrcpy/QtScrcpy.pro diff --git a/src/adb/adb.pri b/QtScrcpy/adb/adb.pri similarity index 100% rename from src/adb/adb.pri rename to QtScrcpy/adb/adb.pri diff --git a/src/adb/adbprocess.cpp b/QtScrcpy/adb/adbprocess.cpp similarity index 100% rename from src/adb/adbprocess.cpp rename to QtScrcpy/adb/adbprocess.cpp diff --git a/src/adb/adbprocess.h b/QtScrcpy/adb/adbprocess.h similarity index 100% rename from src/adb/adbprocess.h rename to QtScrcpy/adb/adbprocess.h diff --git a/src/android/android.pri b/QtScrcpy/android/android.pri similarity index 100% rename from src/android/android.pri rename to QtScrcpy/android/android.pri diff --git a/src/android/input.h b/QtScrcpy/android/input.h similarity index 100% rename from src/android/input.h rename to QtScrcpy/android/input.h diff --git a/src/android/keycodes.h b/QtScrcpy/android/keycodes.h similarity index 100% rename from src/android/keycodes.h rename to QtScrcpy/android/keycodes.h diff --git a/src/common/common.pri b/QtScrcpy/common/common.pri similarity index 100% rename from src/common/common.pri rename to QtScrcpy/common/common.pri diff --git a/src/common/qscrcpyevent.h b/QtScrcpy/common/qscrcpyevent.h similarity index 100% rename from src/common/qscrcpyevent.h rename to QtScrcpy/common/qscrcpyevent.h diff --git a/src/decoder/avframeconvert.cpp b/QtScrcpy/decoder/avframeconvert.cpp similarity index 100% rename from src/decoder/avframeconvert.cpp rename to QtScrcpy/decoder/avframeconvert.cpp diff --git a/src/decoder/avframeconvert.h b/QtScrcpy/decoder/avframeconvert.h similarity index 100% rename from src/decoder/avframeconvert.h rename to QtScrcpy/decoder/avframeconvert.h diff --git a/src/decoder/decoder.cpp b/QtScrcpy/decoder/decoder.cpp similarity index 100% rename from src/decoder/decoder.cpp rename to QtScrcpy/decoder/decoder.cpp diff --git a/src/decoder/decoder.h b/QtScrcpy/decoder/decoder.h similarity index 100% rename from src/decoder/decoder.h rename to QtScrcpy/decoder/decoder.h diff --git a/src/decoder/decoder.pri b/QtScrcpy/decoder/decoder.pri similarity index 100% rename from src/decoder/decoder.pri rename to QtScrcpy/decoder/decoder.pri diff --git a/src/decoder/fpscounter.cpp b/QtScrcpy/decoder/fpscounter.cpp similarity index 100% rename from src/decoder/fpscounter.cpp rename to QtScrcpy/decoder/fpscounter.cpp diff --git a/src/decoder/fpscounter.h b/QtScrcpy/decoder/fpscounter.h similarity index 100% rename from src/decoder/fpscounter.h rename to QtScrcpy/decoder/fpscounter.h diff --git a/src/decoder/frames.cpp b/QtScrcpy/decoder/frames.cpp similarity index 100% rename from src/decoder/frames.cpp rename to QtScrcpy/decoder/frames.cpp diff --git a/src/decoder/frames.h b/QtScrcpy/decoder/frames.h similarity index 100% rename from src/decoder/frames.h rename to QtScrcpy/decoder/frames.h diff --git a/src/dialog.cpp b/QtScrcpy/dialog.cpp similarity index 100% rename from src/dialog.cpp rename to QtScrcpy/dialog.cpp diff --git a/src/dialog.h b/QtScrcpy/dialog.h similarity index 100% rename from src/dialog.h rename to QtScrcpy/dialog.h diff --git a/src/dialog.ui b/QtScrcpy/dialog.ui similarity index 100% rename from src/dialog.ui rename to QtScrcpy/dialog.ui diff --git a/src/ffmpeg/include/libavcodec/ac3_parser.h b/QtScrcpy/ffmpeg/include/libavcodec/ac3_parser.h similarity index 100% rename from src/ffmpeg/include/libavcodec/ac3_parser.h rename to QtScrcpy/ffmpeg/include/libavcodec/ac3_parser.h diff --git a/src/ffmpeg/include/libavcodec/adts_parser.h b/QtScrcpy/ffmpeg/include/libavcodec/adts_parser.h similarity index 100% rename from src/ffmpeg/include/libavcodec/adts_parser.h rename to QtScrcpy/ffmpeg/include/libavcodec/adts_parser.h diff --git a/src/ffmpeg/include/libavcodec/avcodec.h b/QtScrcpy/ffmpeg/include/libavcodec/avcodec.h similarity index 100% rename from src/ffmpeg/include/libavcodec/avcodec.h rename to QtScrcpy/ffmpeg/include/libavcodec/avcodec.h diff --git a/src/ffmpeg/include/libavcodec/avdct.h b/QtScrcpy/ffmpeg/include/libavcodec/avdct.h similarity index 100% rename from src/ffmpeg/include/libavcodec/avdct.h rename to QtScrcpy/ffmpeg/include/libavcodec/avdct.h diff --git a/src/ffmpeg/include/libavcodec/avfft.h b/QtScrcpy/ffmpeg/include/libavcodec/avfft.h similarity index 100% rename from src/ffmpeg/include/libavcodec/avfft.h rename to QtScrcpy/ffmpeg/include/libavcodec/avfft.h diff --git a/src/ffmpeg/include/libavcodec/d3d11va.h b/QtScrcpy/ffmpeg/include/libavcodec/d3d11va.h similarity index 100% rename from src/ffmpeg/include/libavcodec/d3d11va.h rename to QtScrcpy/ffmpeg/include/libavcodec/d3d11va.h diff --git a/src/ffmpeg/include/libavcodec/dirac.h b/QtScrcpy/ffmpeg/include/libavcodec/dirac.h similarity index 100% rename from src/ffmpeg/include/libavcodec/dirac.h rename to QtScrcpy/ffmpeg/include/libavcodec/dirac.h diff --git a/src/ffmpeg/include/libavcodec/dv_profile.h b/QtScrcpy/ffmpeg/include/libavcodec/dv_profile.h similarity index 100% rename from src/ffmpeg/include/libavcodec/dv_profile.h rename to QtScrcpy/ffmpeg/include/libavcodec/dv_profile.h diff --git a/src/ffmpeg/include/libavcodec/dxva2.h b/QtScrcpy/ffmpeg/include/libavcodec/dxva2.h similarity index 100% rename from src/ffmpeg/include/libavcodec/dxva2.h rename to QtScrcpy/ffmpeg/include/libavcodec/dxva2.h diff --git a/src/ffmpeg/include/libavcodec/jni.h b/QtScrcpy/ffmpeg/include/libavcodec/jni.h similarity index 100% rename from src/ffmpeg/include/libavcodec/jni.h rename to QtScrcpy/ffmpeg/include/libavcodec/jni.h diff --git a/src/ffmpeg/include/libavcodec/mediacodec.h b/QtScrcpy/ffmpeg/include/libavcodec/mediacodec.h similarity index 100% rename from src/ffmpeg/include/libavcodec/mediacodec.h rename to QtScrcpy/ffmpeg/include/libavcodec/mediacodec.h diff --git a/src/ffmpeg/include/libavcodec/qsv.h b/QtScrcpy/ffmpeg/include/libavcodec/qsv.h similarity index 100% rename from src/ffmpeg/include/libavcodec/qsv.h rename to QtScrcpy/ffmpeg/include/libavcodec/qsv.h diff --git a/src/ffmpeg/include/libavcodec/vaapi.h b/QtScrcpy/ffmpeg/include/libavcodec/vaapi.h similarity index 100% rename from src/ffmpeg/include/libavcodec/vaapi.h rename to QtScrcpy/ffmpeg/include/libavcodec/vaapi.h diff --git a/src/ffmpeg/include/libavcodec/vdpau.h b/QtScrcpy/ffmpeg/include/libavcodec/vdpau.h similarity index 100% rename from src/ffmpeg/include/libavcodec/vdpau.h rename to QtScrcpy/ffmpeg/include/libavcodec/vdpau.h diff --git a/src/ffmpeg/include/libavcodec/version.h b/QtScrcpy/ffmpeg/include/libavcodec/version.h similarity index 100% rename from src/ffmpeg/include/libavcodec/version.h rename to QtScrcpy/ffmpeg/include/libavcodec/version.h diff --git a/src/ffmpeg/include/libavcodec/videotoolbox.h b/QtScrcpy/ffmpeg/include/libavcodec/videotoolbox.h similarity index 100% rename from src/ffmpeg/include/libavcodec/videotoolbox.h rename to QtScrcpy/ffmpeg/include/libavcodec/videotoolbox.h diff --git a/src/ffmpeg/include/libavcodec/vorbis_parser.h b/QtScrcpy/ffmpeg/include/libavcodec/vorbis_parser.h similarity index 100% rename from src/ffmpeg/include/libavcodec/vorbis_parser.h rename to QtScrcpy/ffmpeg/include/libavcodec/vorbis_parser.h diff --git a/src/ffmpeg/include/libavcodec/xvmc.h b/QtScrcpy/ffmpeg/include/libavcodec/xvmc.h similarity index 100% rename from src/ffmpeg/include/libavcodec/xvmc.h rename to QtScrcpy/ffmpeg/include/libavcodec/xvmc.h diff --git a/src/ffmpeg/include/libavformat/avformat.h b/QtScrcpy/ffmpeg/include/libavformat/avformat.h similarity index 100% rename from src/ffmpeg/include/libavformat/avformat.h rename to QtScrcpy/ffmpeg/include/libavformat/avformat.h diff --git a/src/ffmpeg/include/libavformat/avio.h b/QtScrcpy/ffmpeg/include/libavformat/avio.h similarity index 100% rename from src/ffmpeg/include/libavformat/avio.h rename to QtScrcpy/ffmpeg/include/libavformat/avio.h diff --git a/src/ffmpeg/include/libavformat/version.h b/QtScrcpy/ffmpeg/include/libavformat/version.h similarity index 100% rename from src/ffmpeg/include/libavformat/version.h rename to QtScrcpy/ffmpeg/include/libavformat/version.h diff --git a/src/ffmpeg/include/libavutil/adler32.h b/QtScrcpy/ffmpeg/include/libavutil/adler32.h similarity index 100% rename from src/ffmpeg/include/libavutil/adler32.h rename to QtScrcpy/ffmpeg/include/libavutil/adler32.h diff --git a/src/ffmpeg/include/libavutil/aes.h b/QtScrcpy/ffmpeg/include/libavutil/aes.h similarity index 100% rename from src/ffmpeg/include/libavutil/aes.h rename to QtScrcpy/ffmpeg/include/libavutil/aes.h diff --git a/src/ffmpeg/include/libavutil/aes_ctr.h b/QtScrcpy/ffmpeg/include/libavutil/aes_ctr.h similarity index 100% rename from src/ffmpeg/include/libavutil/aes_ctr.h rename to QtScrcpy/ffmpeg/include/libavutil/aes_ctr.h diff --git a/src/ffmpeg/include/libavutil/attributes.h b/QtScrcpy/ffmpeg/include/libavutil/attributes.h similarity index 100% rename from src/ffmpeg/include/libavutil/attributes.h rename to QtScrcpy/ffmpeg/include/libavutil/attributes.h diff --git a/src/ffmpeg/include/libavutil/audio_fifo.h b/QtScrcpy/ffmpeg/include/libavutil/audio_fifo.h similarity index 100% rename from src/ffmpeg/include/libavutil/audio_fifo.h rename to QtScrcpy/ffmpeg/include/libavutil/audio_fifo.h diff --git a/src/ffmpeg/include/libavutil/avassert.h b/QtScrcpy/ffmpeg/include/libavutil/avassert.h similarity index 100% rename from src/ffmpeg/include/libavutil/avassert.h rename to QtScrcpy/ffmpeg/include/libavutil/avassert.h diff --git a/src/ffmpeg/include/libavutil/avconfig.h b/QtScrcpy/ffmpeg/include/libavutil/avconfig.h similarity index 100% rename from src/ffmpeg/include/libavutil/avconfig.h rename to QtScrcpy/ffmpeg/include/libavutil/avconfig.h diff --git a/src/ffmpeg/include/libavutil/avstring.h b/QtScrcpy/ffmpeg/include/libavutil/avstring.h similarity index 100% rename from src/ffmpeg/include/libavutil/avstring.h rename to QtScrcpy/ffmpeg/include/libavutil/avstring.h diff --git a/src/ffmpeg/include/libavutil/avutil.h b/QtScrcpy/ffmpeg/include/libavutil/avutil.h similarity index 100% rename from src/ffmpeg/include/libavutil/avutil.h rename to QtScrcpy/ffmpeg/include/libavutil/avutil.h diff --git a/src/ffmpeg/include/libavutil/base64.h b/QtScrcpy/ffmpeg/include/libavutil/base64.h similarity index 100% rename from src/ffmpeg/include/libavutil/base64.h rename to QtScrcpy/ffmpeg/include/libavutil/base64.h diff --git a/src/ffmpeg/include/libavutil/blowfish.h b/QtScrcpy/ffmpeg/include/libavutil/blowfish.h similarity index 100% rename from src/ffmpeg/include/libavutil/blowfish.h rename to QtScrcpy/ffmpeg/include/libavutil/blowfish.h diff --git a/src/ffmpeg/include/libavutil/bprint.h b/QtScrcpy/ffmpeg/include/libavutil/bprint.h similarity index 100% rename from src/ffmpeg/include/libavutil/bprint.h rename to QtScrcpy/ffmpeg/include/libavutil/bprint.h diff --git a/src/ffmpeg/include/libavutil/bswap.h b/QtScrcpy/ffmpeg/include/libavutil/bswap.h similarity index 100% rename from src/ffmpeg/include/libavutil/bswap.h rename to QtScrcpy/ffmpeg/include/libavutil/bswap.h diff --git a/src/ffmpeg/include/libavutil/buffer.h b/QtScrcpy/ffmpeg/include/libavutil/buffer.h similarity index 100% rename from src/ffmpeg/include/libavutil/buffer.h rename to QtScrcpy/ffmpeg/include/libavutil/buffer.h diff --git a/src/ffmpeg/include/libavutil/camellia.h b/QtScrcpy/ffmpeg/include/libavutil/camellia.h similarity index 100% rename from src/ffmpeg/include/libavutil/camellia.h rename to QtScrcpy/ffmpeg/include/libavutil/camellia.h diff --git a/src/ffmpeg/include/libavutil/cast5.h b/QtScrcpy/ffmpeg/include/libavutil/cast5.h similarity index 100% rename from src/ffmpeg/include/libavutil/cast5.h rename to QtScrcpy/ffmpeg/include/libavutil/cast5.h diff --git a/src/ffmpeg/include/libavutil/channel_layout.h b/QtScrcpy/ffmpeg/include/libavutil/channel_layout.h similarity index 100% rename from src/ffmpeg/include/libavutil/channel_layout.h rename to QtScrcpy/ffmpeg/include/libavutil/channel_layout.h diff --git a/src/ffmpeg/include/libavutil/common.h b/QtScrcpy/ffmpeg/include/libavutil/common.h similarity index 100% rename from src/ffmpeg/include/libavutil/common.h rename to QtScrcpy/ffmpeg/include/libavutil/common.h diff --git a/src/ffmpeg/include/libavutil/cpu.h b/QtScrcpy/ffmpeg/include/libavutil/cpu.h similarity index 100% rename from src/ffmpeg/include/libavutil/cpu.h rename to QtScrcpy/ffmpeg/include/libavutil/cpu.h diff --git a/src/ffmpeg/include/libavutil/crc.h b/QtScrcpy/ffmpeg/include/libavutil/crc.h similarity index 100% rename from src/ffmpeg/include/libavutil/crc.h rename to QtScrcpy/ffmpeg/include/libavutil/crc.h diff --git a/src/ffmpeg/include/libavutil/des.h b/QtScrcpy/ffmpeg/include/libavutil/des.h similarity index 100% rename from src/ffmpeg/include/libavutil/des.h rename to QtScrcpy/ffmpeg/include/libavutil/des.h diff --git a/src/ffmpeg/include/libavutil/dict.h b/QtScrcpy/ffmpeg/include/libavutil/dict.h similarity index 100% rename from src/ffmpeg/include/libavutil/dict.h rename to QtScrcpy/ffmpeg/include/libavutil/dict.h diff --git a/src/ffmpeg/include/libavutil/display.h b/QtScrcpy/ffmpeg/include/libavutil/display.h similarity index 100% rename from src/ffmpeg/include/libavutil/display.h rename to QtScrcpy/ffmpeg/include/libavutil/display.h diff --git a/src/ffmpeg/include/libavutil/downmix_info.h b/QtScrcpy/ffmpeg/include/libavutil/downmix_info.h similarity index 100% rename from src/ffmpeg/include/libavutil/downmix_info.h rename to QtScrcpy/ffmpeg/include/libavutil/downmix_info.h diff --git a/src/ffmpeg/include/libavutil/encryption_info.h b/QtScrcpy/ffmpeg/include/libavutil/encryption_info.h similarity index 100% rename from src/ffmpeg/include/libavutil/encryption_info.h rename to QtScrcpy/ffmpeg/include/libavutil/encryption_info.h diff --git a/src/ffmpeg/include/libavutil/error.h b/QtScrcpy/ffmpeg/include/libavutil/error.h similarity index 100% rename from src/ffmpeg/include/libavutil/error.h rename to QtScrcpy/ffmpeg/include/libavutil/error.h diff --git a/src/ffmpeg/include/libavutil/eval.h b/QtScrcpy/ffmpeg/include/libavutil/eval.h similarity index 100% rename from src/ffmpeg/include/libavutil/eval.h rename to QtScrcpy/ffmpeg/include/libavutil/eval.h diff --git a/src/ffmpeg/include/libavutil/ffversion.h b/QtScrcpy/ffmpeg/include/libavutil/ffversion.h similarity index 100% rename from src/ffmpeg/include/libavutil/ffversion.h rename to QtScrcpy/ffmpeg/include/libavutil/ffversion.h diff --git a/src/ffmpeg/include/libavutil/fifo.h b/QtScrcpy/ffmpeg/include/libavutil/fifo.h similarity index 100% rename from src/ffmpeg/include/libavutil/fifo.h rename to QtScrcpy/ffmpeg/include/libavutil/fifo.h diff --git a/src/ffmpeg/include/libavutil/file.h b/QtScrcpy/ffmpeg/include/libavutil/file.h similarity index 100% rename from src/ffmpeg/include/libavutil/file.h rename to QtScrcpy/ffmpeg/include/libavutil/file.h diff --git a/src/ffmpeg/include/libavutil/frame.h b/QtScrcpy/ffmpeg/include/libavutil/frame.h similarity index 100% rename from src/ffmpeg/include/libavutil/frame.h rename to QtScrcpy/ffmpeg/include/libavutil/frame.h diff --git a/src/ffmpeg/include/libavutil/hash.h b/QtScrcpy/ffmpeg/include/libavutil/hash.h similarity index 100% rename from src/ffmpeg/include/libavutil/hash.h rename to QtScrcpy/ffmpeg/include/libavutil/hash.h diff --git a/src/ffmpeg/include/libavutil/hmac.h b/QtScrcpy/ffmpeg/include/libavutil/hmac.h similarity index 100% rename from src/ffmpeg/include/libavutil/hmac.h rename to QtScrcpy/ffmpeg/include/libavutil/hmac.h diff --git a/src/ffmpeg/include/libavutil/hwcontext.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_cuda.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_cuda.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_cuda.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_cuda.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_d3d11va.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_d3d11va.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_d3d11va.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_d3d11va.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_drm.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_drm.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_drm.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_drm.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_dxva2.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_dxva2.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_dxva2.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_dxva2.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_mediacodec.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_mediacodec.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_mediacodec.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_mediacodec.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_qsv.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_qsv.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_qsv.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_qsv.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_vaapi.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_vaapi.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_vaapi.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_vaapi.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_vdpau.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_vdpau.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_vdpau.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_vdpau.h diff --git a/src/ffmpeg/include/libavutil/hwcontext_videotoolbox.h b/QtScrcpy/ffmpeg/include/libavutil/hwcontext_videotoolbox.h similarity index 100% rename from src/ffmpeg/include/libavutil/hwcontext_videotoolbox.h rename to QtScrcpy/ffmpeg/include/libavutil/hwcontext_videotoolbox.h diff --git a/src/ffmpeg/include/libavutil/imgutils.h b/QtScrcpy/ffmpeg/include/libavutil/imgutils.h similarity index 100% rename from src/ffmpeg/include/libavutil/imgutils.h rename to QtScrcpy/ffmpeg/include/libavutil/imgutils.h diff --git a/src/ffmpeg/include/libavutil/intfloat.h b/QtScrcpy/ffmpeg/include/libavutil/intfloat.h similarity index 100% rename from src/ffmpeg/include/libavutil/intfloat.h rename to QtScrcpy/ffmpeg/include/libavutil/intfloat.h diff --git a/src/ffmpeg/include/libavutil/intreadwrite.h b/QtScrcpy/ffmpeg/include/libavutil/intreadwrite.h similarity index 100% rename from src/ffmpeg/include/libavutil/intreadwrite.h rename to QtScrcpy/ffmpeg/include/libavutil/intreadwrite.h diff --git a/src/ffmpeg/include/libavutil/lfg.h b/QtScrcpy/ffmpeg/include/libavutil/lfg.h similarity index 100% rename from src/ffmpeg/include/libavutil/lfg.h rename to QtScrcpy/ffmpeg/include/libavutil/lfg.h diff --git a/src/ffmpeg/include/libavutil/log.h b/QtScrcpy/ffmpeg/include/libavutil/log.h similarity index 100% rename from src/ffmpeg/include/libavutil/log.h rename to QtScrcpy/ffmpeg/include/libavutil/log.h diff --git a/src/ffmpeg/include/libavutil/lzo.h b/QtScrcpy/ffmpeg/include/libavutil/lzo.h similarity index 100% rename from src/ffmpeg/include/libavutil/lzo.h rename to QtScrcpy/ffmpeg/include/libavutil/lzo.h diff --git a/src/ffmpeg/include/libavutil/macros.h b/QtScrcpy/ffmpeg/include/libavutil/macros.h similarity index 100% rename from src/ffmpeg/include/libavutil/macros.h rename to QtScrcpy/ffmpeg/include/libavutil/macros.h diff --git a/src/ffmpeg/include/libavutil/mastering_display_metadata.h b/QtScrcpy/ffmpeg/include/libavutil/mastering_display_metadata.h similarity index 100% rename from src/ffmpeg/include/libavutil/mastering_display_metadata.h rename to QtScrcpy/ffmpeg/include/libavutil/mastering_display_metadata.h diff --git a/src/ffmpeg/include/libavutil/mathematics.h b/QtScrcpy/ffmpeg/include/libavutil/mathematics.h similarity index 100% rename from src/ffmpeg/include/libavutil/mathematics.h rename to QtScrcpy/ffmpeg/include/libavutil/mathematics.h diff --git a/src/ffmpeg/include/libavutil/md5.h b/QtScrcpy/ffmpeg/include/libavutil/md5.h similarity index 100% rename from src/ffmpeg/include/libavutil/md5.h rename to QtScrcpy/ffmpeg/include/libavutil/md5.h diff --git a/src/ffmpeg/include/libavutil/mem.h b/QtScrcpy/ffmpeg/include/libavutil/mem.h similarity index 100% rename from src/ffmpeg/include/libavutil/mem.h rename to QtScrcpy/ffmpeg/include/libavutil/mem.h diff --git a/src/ffmpeg/include/libavutil/motion_vector.h b/QtScrcpy/ffmpeg/include/libavutil/motion_vector.h similarity index 100% rename from src/ffmpeg/include/libavutil/motion_vector.h rename to QtScrcpy/ffmpeg/include/libavutil/motion_vector.h diff --git a/src/ffmpeg/include/libavutil/murmur3.h b/QtScrcpy/ffmpeg/include/libavutil/murmur3.h similarity index 100% rename from src/ffmpeg/include/libavutil/murmur3.h rename to QtScrcpy/ffmpeg/include/libavutil/murmur3.h diff --git a/src/ffmpeg/include/libavutil/opt.h b/QtScrcpy/ffmpeg/include/libavutil/opt.h similarity index 100% rename from src/ffmpeg/include/libavutil/opt.h rename to QtScrcpy/ffmpeg/include/libavutil/opt.h diff --git a/src/ffmpeg/include/libavutil/parseutils.h b/QtScrcpy/ffmpeg/include/libavutil/parseutils.h similarity index 100% rename from src/ffmpeg/include/libavutil/parseutils.h rename to QtScrcpy/ffmpeg/include/libavutil/parseutils.h diff --git a/src/ffmpeg/include/libavutil/pixdesc.h b/QtScrcpy/ffmpeg/include/libavutil/pixdesc.h similarity index 100% rename from src/ffmpeg/include/libavutil/pixdesc.h rename to QtScrcpy/ffmpeg/include/libavutil/pixdesc.h diff --git a/src/ffmpeg/include/libavutil/pixelutils.h b/QtScrcpy/ffmpeg/include/libavutil/pixelutils.h similarity index 100% rename from src/ffmpeg/include/libavutil/pixelutils.h rename to QtScrcpy/ffmpeg/include/libavutil/pixelutils.h diff --git a/src/ffmpeg/include/libavutil/pixfmt.h b/QtScrcpy/ffmpeg/include/libavutil/pixfmt.h similarity index 100% rename from src/ffmpeg/include/libavutil/pixfmt.h rename to QtScrcpy/ffmpeg/include/libavutil/pixfmt.h diff --git a/src/ffmpeg/include/libavutil/random_seed.h b/QtScrcpy/ffmpeg/include/libavutil/random_seed.h similarity index 100% rename from src/ffmpeg/include/libavutil/random_seed.h rename to QtScrcpy/ffmpeg/include/libavutil/random_seed.h diff --git a/src/ffmpeg/include/libavutil/rational.h b/QtScrcpy/ffmpeg/include/libavutil/rational.h similarity index 100% rename from src/ffmpeg/include/libavutil/rational.h rename to QtScrcpy/ffmpeg/include/libavutil/rational.h diff --git a/src/ffmpeg/include/libavutil/rc4.h b/QtScrcpy/ffmpeg/include/libavutil/rc4.h similarity index 100% rename from src/ffmpeg/include/libavutil/rc4.h rename to QtScrcpy/ffmpeg/include/libavutil/rc4.h diff --git a/src/ffmpeg/include/libavutil/replaygain.h b/QtScrcpy/ffmpeg/include/libavutil/replaygain.h similarity index 100% rename from src/ffmpeg/include/libavutil/replaygain.h rename to QtScrcpy/ffmpeg/include/libavutil/replaygain.h diff --git a/src/ffmpeg/include/libavutil/ripemd.h b/QtScrcpy/ffmpeg/include/libavutil/ripemd.h similarity index 100% rename from src/ffmpeg/include/libavutil/ripemd.h rename to QtScrcpy/ffmpeg/include/libavutil/ripemd.h diff --git a/src/ffmpeg/include/libavutil/samplefmt.h b/QtScrcpy/ffmpeg/include/libavutil/samplefmt.h similarity index 100% rename from src/ffmpeg/include/libavutil/samplefmt.h rename to QtScrcpy/ffmpeg/include/libavutil/samplefmt.h diff --git a/src/ffmpeg/include/libavutil/sha.h b/QtScrcpy/ffmpeg/include/libavutil/sha.h similarity index 100% rename from src/ffmpeg/include/libavutil/sha.h rename to QtScrcpy/ffmpeg/include/libavutil/sha.h diff --git a/src/ffmpeg/include/libavutil/sha512.h b/QtScrcpy/ffmpeg/include/libavutil/sha512.h similarity index 100% rename from src/ffmpeg/include/libavutil/sha512.h rename to QtScrcpy/ffmpeg/include/libavutil/sha512.h diff --git a/src/ffmpeg/include/libavutil/spherical.h b/QtScrcpy/ffmpeg/include/libavutil/spherical.h similarity index 100% rename from src/ffmpeg/include/libavutil/spherical.h rename to QtScrcpy/ffmpeg/include/libavutil/spherical.h diff --git a/src/ffmpeg/include/libavutil/stereo3d.h b/QtScrcpy/ffmpeg/include/libavutil/stereo3d.h similarity index 100% rename from src/ffmpeg/include/libavutil/stereo3d.h rename to QtScrcpy/ffmpeg/include/libavutil/stereo3d.h diff --git a/src/ffmpeg/include/libavutil/tea.h b/QtScrcpy/ffmpeg/include/libavutil/tea.h similarity index 100% rename from src/ffmpeg/include/libavutil/tea.h rename to QtScrcpy/ffmpeg/include/libavutil/tea.h diff --git a/src/ffmpeg/include/libavutil/threadmessage.h b/QtScrcpy/ffmpeg/include/libavutil/threadmessage.h similarity index 100% rename from src/ffmpeg/include/libavutil/threadmessage.h rename to QtScrcpy/ffmpeg/include/libavutil/threadmessage.h diff --git a/src/ffmpeg/include/libavutil/time.h b/QtScrcpy/ffmpeg/include/libavutil/time.h similarity index 100% rename from src/ffmpeg/include/libavutil/time.h rename to QtScrcpy/ffmpeg/include/libavutil/time.h diff --git a/src/ffmpeg/include/libavutil/timecode.h b/QtScrcpy/ffmpeg/include/libavutil/timecode.h similarity index 100% rename from src/ffmpeg/include/libavutil/timecode.h rename to QtScrcpy/ffmpeg/include/libavutil/timecode.h diff --git a/src/ffmpeg/include/libavutil/timestamp.h b/QtScrcpy/ffmpeg/include/libavutil/timestamp.h similarity index 100% rename from src/ffmpeg/include/libavutil/timestamp.h rename to QtScrcpy/ffmpeg/include/libavutil/timestamp.h diff --git a/src/ffmpeg/include/libavutil/tree.h b/QtScrcpy/ffmpeg/include/libavutil/tree.h similarity index 100% rename from src/ffmpeg/include/libavutil/tree.h rename to QtScrcpy/ffmpeg/include/libavutil/tree.h diff --git a/src/ffmpeg/include/libavutil/twofish.h b/QtScrcpy/ffmpeg/include/libavutil/twofish.h similarity index 100% rename from src/ffmpeg/include/libavutil/twofish.h rename to QtScrcpy/ffmpeg/include/libavutil/twofish.h diff --git a/src/ffmpeg/include/libavutil/version.h b/QtScrcpy/ffmpeg/include/libavutil/version.h similarity index 100% rename from src/ffmpeg/include/libavutil/version.h rename to QtScrcpy/ffmpeg/include/libavutil/version.h diff --git a/src/ffmpeg/include/libavutil/xtea.h b/QtScrcpy/ffmpeg/include/libavutil/xtea.h similarity index 100% rename from src/ffmpeg/include/libavutil/xtea.h rename to QtScrcpy/ffmpeg/include/libavutil/xtea.h diff --git a/src/ffmpeg/include/libswresample/swresample.h b/QtScrcpy/ffmpeg/include/libswresample/swresample.h similarity index 100% rename from src/ffmpeg/include/libswresample/swresample.h rename to QtScrcpy/ffmpeg/include/libswresample/swresample.h diff --git a/src/ffmpeg/include/libswresample/version.h b/QtScrcpy/ffmpeg/include/libswresample/version.h similarity index 100% rename from src/ffmpeg/include/libswresample/version.h rename to QtScrcpy/ffmpeg/include/libswresample/version.h diff --git a/src/ffmpeg/include/libswscale/swscale.h b/QtScrcpy/ffmpeg/include/libswscale/swscale.h similarity index 100% rename from src/ffmpeg/include/libswscale/swscale.h rename to QtScrcpy/ffmpeg/include/libswscale/swscale.h diff --git a/src/ffmpeg/include/libswscale/version.h b/QtScrcpy/ffmpeg/include/libswscale/version.h similarity index 100% rename from src/ffmpeg/include/libswscale/version.h rename to QtScrcpy/ffmpeg/include/libswscale/version.h diff --git a/src/inputcontrol/controlevent.cpp b/QtScrcpy/inputcontrol/controlevent.cpp similarity index 100% rename from src/inputcontrol/controlevent.cpp rename to QtScrcpy/inputcontrol/controlevent.cpp diff --git a/src/inputcontrol/controlevent.h b/QtScrcpy/inputcontrol/controlevent.h similarity index 100% rename from src/inputcontrol/controlevent.h rename to QtScrcpy/inputcontrol/controlevent.h diff --git a/src/inputcontrol/controller.cpp b/QtScrcpy/inputcontrol/controller.cpp similarity index 100% rename from src/inputcontrol/controller.cpp rename to QtScrcpy/inputcontrol/controller.cpp diff --git a/src/inputcontrol/controller.h b/QtScrcpy/inputcontrol/controller.h similarity index 100% rename from src/inputcontrol/controller.h rename to QtScrcpy/inputcontrol/controller.h diff --git a/src/inputcontrol/inputcontrol.pri b/QtScrcpy/inputcontrol/inputcontrol.pri similarity index 100% rename from src/inputcontrol/inputcontrol.pri rename to QtScrcpy/inputcontrol/inputcontrol.pri diff --git a/src/inputcontrol/inputconvertbase.cpp b/QtScrcpy/inputcontrol/inputconvertbase.cpp similarity index 100% rename from src/inputcontrol/inputconvertbase.cpp rename to QtScrcpy/inputcontrol/inputconvertbase.cpp diff --git a/src/inputcontrol/inputconvertbase.h b/QtScrcpy/inputcontrol/inputconvertbase.h similarity index 100% rename from src/inputcontrol/inputconvertbase.h rename to QtScrcpy/inputcontrol/inputconvertbase.h diff --git a/src/inputcontrol/inputconvertgame.cpp b/QtScrcpy/inputcontrol/inputconvertgame.cpp similarity index 96% rename from src/inputcontrol/inputconvertgame.cpp rename to QtScrcpy/inputcontrol/inputconvertgame.cpp index c4cde8d..598a8a5 100644 --- a/src/inputcontrol/inputconvertgame.cpp +++ b/QtScrcpy/inputcontrol/inputconvertgame.cpp @@ -1,460 +1,460 @@ -#include -#include -#include - -#include "inputconvertgame.h" - -InputConvertGame::InputConvertGame(QObject* parent) : QObject(parent) -{ - -} - -InputConvertGame::~InputConvertGame() -{ - -} - -void InputConvertGame::mouseEvent(const QMouseEvent *from, const QSize &frameSize, const QSize &showSize) -{ - if (m_gameMap) { - updateSize(frameSize, showSize); - - // mouse move - if (processMouseMove(from)) { - return; - } - - // mouse click - if (processMouseClick(from)) { - return; - } - } else { - InputConvertNormal::mouseEvent(from, frameSize, showSize); - } -} - -void InputConvertGame::wheelEvent(const QWheelEvent *from, const QSize &frameSize, const QSize &showSize) -{ - if (m_gameMap) { - updateSize(frameSize, showSize); - } else { - InputConvertNormal::wheelEvent(from, frameSize, showSize); - } -} - -void InputConvertGame::keyEvent(const QKeyEvent *from, const QSize& frameSize, const QSize& showSize) -{ - switch (from->key()) { - case Qt::Key_QuoteLeft: - if (QEvent::KeyPress == from->type()) { - switchGameMap(); - } - return; - } - - if (m_gameMap) { - updateSize(frameSize, showSize); - if (!from || from->isAutoRepeat()) { - return; - } - - // steer wheel - if (isSteerWheelKeys(from)) { - processSteerWheel(from); - return; - } - - // key click - if (processKeyClick(from)) { - return; - } - } else { - InputConvertNormal::keyEvent(from, frameSize, showSize); - } -} - -void InputConvertGame::updateSize(const QSize &frameSize, const QSize &showSize) -{ - m_frameSize = frameSize; - m_showSize = showSize; -} - -void InputConvertGame::sendTouchDownEvent(int id, QPointF pos) -{ - sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_DOWN); -} - -void InputConvertGame::sendTouchMoveEvent(int id, QPointF pos) -{ - sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_MOVE); -} - -void InputConvertGame::sendTouchUpEvent(int id, QPointF pos) -{ - sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_UP); -} - -void InputConvertGame::sendTouchEvent(int id, QPointF pos, AndroidMotioneventAction action) -{ - if (0 > id || MULTI_TOUCH_MAX_NUM-1 < id) { - return; - } - ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_TOUCH); - if (!controlEvent) { - return; - } - controlEvent->setTouchEventData(id, action, QRect(calcAbsolutePos(pos).toPoint(), m_frameSize)); - sendControlEvent(controlEvent); -} - -QPointF InputConvertGame::calcAbsolutePos(QPointF relativePos) -{ - QPointF absolutePos; - absolutePos.setX(m_showSize.width() * relativePos.x()); - absolutePos.setY(m_showSize.height() * relativePos.y()); - // convert pos - absolutePos.setX(absolutePos.x() * m_frameSize.width() / m_showSize.width()); - absolutePos.setY(absolutePos.y() * m_frameSize.height() / m_showSize.height()); - return absolutePos; -} - -int InputConvertGame::attachTouchID(int key) -{ - for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { - if (0 == multiTouchID[i]) { - multiTouchID[i] = key; - return i; - } - } - return -1; -} - -void InputConvertGame::detachTouchID(int key) -{ - for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { - if (key == multiTouchID[i]) { - multiTouchID[i] = 0; - return; - } - } -} - -int InputConvertGame::getTouchID(int key) -{ - for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { - if (key == multiTouchID[i]) { - return i; - } - } - return -1; -} - -bool InputConvertGame::isSteerWheelKeys(const QKeyEvent *from) -{ - for (int key : m_steerWheelKeys) { - if (key == from->key()) { - return true; - } - } - return false; -} - -void InputConvertGame::processSteerWheel(const QKeyEvent *from) -{ - int keyPress1 = -1; - int keyPress2 = -1; - int keysNum = updateSteerWheelKeysPress(from, keyPress1, keyPress2); - bool needMove = false; - if (QEvent::KeyPress == from->type()) { - if (1 == keysNum) { - m_steerWheelFirstTouchKey = from->key(); - int id = attachTouchID(m_steerWheelFirstTouchKey); - if (-1 == id) { - return; - } - sendTouchDownEvent(id, m_steerWheelPos); - needMove = true; - } else if (2 == keysNum) { - needMove = true; - } - } else if (QEvent::KeyRelease == from->type()){ - if (0 == keysNum) { - sendTouchUpEvent(getTouchID(m_steerWheelFirstTouchKey), m_steerWheelPos); - detachTouchID(m_steerWheelFirstTouchKey); - m_steerWheelFirstTouchKey = 0; - } else if (1 == keysNum) { - needMove = true; - } - } - if (needMove) { - steerWheelMove(keysNum, keyPress1, keyPress2); - } -} - -int InputConvertGame::updateSteerWheelKeysPress(const QKeyEvent *from, int& keyPress1, int& keyPress2) -{ - bool keyPress = false; - if (QEvent::KeyPress == from->type()) { - keyPress = true; - } else if (QEvent::KeyRelease == from->type()) { - keyPress = false; - } - if (from->key() == m_steerWheelKeys[SWD_UP]) { - m_steerWheelKeysPress[SWD_UP] = keyPress; - } else if (from->key() == m_steerWheelKeys[SWD_RIGHT]) { - m_steerWheelKeysPress[SWD_RIGHT] = keyPress; - } else if (from->key() == m_steerWheelKeys[SWD_DOWN]) { - m_steerWheelKeysPress[SWD_DOWN] = keyPress; - } else if (from->key() == m_steerWheelKeys[SWD_LEFT]) { - m_steerWheelKeysPress[SWD_LEFT] = keyPress; - } - - int count = 0; - keyPress1 = -1; - keyPress2 = -1; - for (int i = 0; i < 4; i++) { - if (true == m_steerWheelKeysPress[i]) { - count++; - - if (-1 == keyPress1) { - keyPress1 = i; - } else if (-1 == keyPress2) { - keyPress2 = i; - } - } - } - return count; -} - -void InputConvertGame::steerWheelMove(int keysNum, int keyPress1, int keyPress2) -{ - if (1 != keysNum && 2 != keysNum) { - return; - } - QPointF movePos = m_steerWheelPos; - switch (keysNum) { - case 2: - if (keyPress2 == SWD_UP) { - movePos.setY(movePos.y() - m_steerWheelOffset.top()); - } else if (keyPress2 == SWD_RIGHT) { - movePos.setX(movePos.x() + m_steerWheelOffset.right()); - } else if (keyPress2 == SWD_DOWN) { - movePos.setY(movePos.y() + m_steerWheelOffset.bottom()); - } else if (keyPress2 == SWD_LEFT) { - movePos.setX(movePos.x() - m_steerWheelOffset.left()); - } - case 1: - if (keyPress1 == SWD_UP) { - movePos.setY(movePos.y() - m_steerWheelOffset.top()); - } else if (keyPress1 == SWD_RIGHT) { - movePos.setX(movePos.x() + m_steerWheelOffset.right()); - } else if (keyPress1 == SWD_DOWN) { - movePos.setY(movePos.y() + m_steerWheelOffset.bottom()); - } else if (keyPress1 == SWD_LEFT) { - movePos.setX(movePos.x() - m_steerWheelOffset.left()); - } - break; - } - sendTouchMoveEvent(getTouchID(m_steerWheelFirstTouchKey), movePos); -} - -bool InputConvertGame::processKeyClick(const QKeyEvent *from) -{ - QPointF clickPos; - bool clickTwice = false; - switch (from->key()) { - case Qt::Key_Space: // 跳 - clickPos = QPointF(0.96f, 0.7f); - break; - case Qt::Key_M: // 地图 - switchGameMap(); - clickPos = QPointF(0.98f, 0.03f); - break; - case Qt::Key_Tab: // 背包 - clickPos = QPointF(0.06f, 0.9f); - switchGameMap(); - break; - case Qt::Key_Z: // 趴 - clickPos = QPointF(0.95f, 0.9f); - break; - case Qt::Key_C: // 蹲 - clickPos = QPointF(0.86f, 0.92f); - break; - case Qt::Key_R: // 换弹 - clickPos = QPointF(0.795f, 0.93f); - break; - case Qt::Key_Alt: // 小眼睛 - clickPos = QPointF(0.8f, 0.31f); - break; - case Qt::Key_F: // 捡东西1 - clickPos = QPointF(0.7f, 0.34f); - break; - case Qt::Key_G: // 捡东西2 - clickPos = QPointF(0.7f, 0.44f); - break; - case Qt::Key_H: // 捡东西3 - clickPos = QPointF(0.7f, 0.54f); - break; - case Qt::Key_1: // 换枪1 - clickPos = QPointF(0.45f, 0.9f); - break; - case Qt::Key_2: // 换枪2 - clickPos = QPointF(0.55f, 0.9f); - break; - case Qt::Key_3: // 手雷 - clickPos = QPointF(0.67f, 0.92f); - break; - case Qt::Key_5: // 下车 - clickPos = QPointF(0.92f, 0.4f); - break; - case Qt::Key_Shift: // 车加速 - clickPos = QPointF(0.82f, 0.8f); - break; - case Qt::Key_4: // 开关门 - clickPos = QPointF(0.7f, 0.7f); - break; - case Qt::Key_Q: // 左探头 - clickTwice = true; - clickPos = QPointF(0.12f, 0.35f); - break; - case Qt::Key_E: // 右探头 - clickTwice = true; - clickPos = QPointF(0.2, 0.35f); - break; - default: - return false; - break; - } - - if (QEvent::KeyPress == from->type()) { - int id = attachTouchID(from->key()); - sendTouchDownEvent(id, clickPos); - if (clickTwice) { - sendTouchUpEvent(getTouchID(from->key()), clickPos); - detachTouchID(from->key()); - } - } else if (QEvent::KeyRelease == from->type()) { - if (clickTwice) { - int id = attachTouchID(from->key()); - sendTouchDownEvent(id, clickPos); - } - sendTouchUpEvent(getTouchID(from->key()), clickPos); - detachTouchID(from->key()); - } - return true; -} - -bool InputConvertGame::processMouseClick(const QMouseEvent *from) -{ - QPointF clickPos; - if (Qt::LeftButton == from->button()) { - clickPos = QPointF(0.86f, 0.72f); - } else if (Qt::RightButton == from->button()){ - clickPos = QPointF(0.96f, 0.52f); - } else { - return false; - } - - if (QEvent::MouseButtonPress == from->type() || QEvent::MouseButtonDblClick == from->type()) { - int id = attachTouchID(from->button()); - sendTouchDownEvent(id, clickPos); - } else if (QEvent::MouseButtonRelease == from->type()) { - sendTouchUpEvent(getTouchID(from->button()), clickPos); - detachTouchID(from->button()); - } else { - return false; - } - return true; -} - -bool InputConvertGame::processMouseMove(const QMouseEvent *from) -{ - if (QEvent::MouseMove != from->type()) { - return false; - } - - mouseMoveStartTouch(from); - startMouseMoveTimer(); - - // move - // pos - QPointF pos = from->localPos(); - // convert pos - pos.setX(pos.x() / m_showSize.width()); - pos.setY(pos.y() / m_showSize.height()); - sendTouchMoveEvent(getTouchID(Qt::ExtraButton24), pos); - m_mouseMoveLastPos = pos; - if (pos.x() < 0.1 || pos.x() > 0.9 || pos.y() < 0.1 || pos.y() > 0.9) { - mouseMoveStopTouch(); - mouseMoveStartTouch(from); - } - - return true; -} - -void InputConvertGame::moveCursorToStart(const QMouseEvent *from) -{ - QPoint localPos = QPoint(m_showSize.width()*m_mouseMoveStartPos.x(), m_showSize.height()*m_mouseMoveStartPos.y()); - QPoint posOffset = from->localPos().toPoint() - localPos; - QPoint globalPos = from->globalPos(); - - globalPos -= posOffset; - QCursor::setPos(globalPos); -} - -void InputConvertGame::startMouseMoveTimer() -{ - stopMouseMoveTimer(); - m_mouseMoveTimer = startTimer(1000); -} - -void InputConvertGame::stopMouseMoveTimer() -{ - if (0 != m_mouseMoveTimer) { - killTimer(m_mouseMoveTimer); - m_mouseMoveTimer = 0; - } -} - -void InputConvertGame::mouseMoveStartTouch(const QMouseEvent* from) -{ - if (!m_mouseMovePress) { - moveCursorToStart(from); - int id = attachTouchID(Qt::ExtraButton24); - sendTouchDownEvent(id, m_mouseMoveStartPos); - m_mouseMovePress = true; - } -} - -void InputConvertGame::mouseMoveStopTouch() -{ - if (m_mouseMovePress) { - sendTouchUpEvent(getTouchID(Qt::ExtraButton24), m_mouseMoveLastPos); - detachTouchID(Qt::ExtraButton24); - m_mouseMovePress = false; - } -} - -void InputConvertGame::switchGameMap() -{ - m_gameMap = !m_gameMap; - grabCursor(m_gameMap); -} - -void InputConvertGame::grabCursor(bool grab) -{ - if(grab) { - QGuiApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); - } else { - mouseMoveStopTouch(); - QGuiApplication::restoreOverrideCursor(); - } -} - -void InputConvertGame::timerEvent(QTimerEvent *event) -{ - if (m_mouseMoveTimer == event->timerId()) { - stopMouseMoveTimer(); - mouseMoveStopTouch(); - } -} +#include +#include +#include + +#include "inputconvertgame.h" + +InputConvertGame::InputConvertGame(QObject* parent) : QObject(parent) +{ + +} + +InputConvertGame::~InputConvertGame() +{ + +} + +void InputConvertGame::mouseEvent(const QMouseEvent *from, const QSize &frameSize, const QSize &showSize) +{ + if (m_gameMap) { + updateSize(frameSize, showSize); + + // mouse move + if (processMouseMove(from)) { + return; + } + + // mouse click + if (processMouseClick(from)) { + return; + } + } else { + InputConvertNormal::mouseEvent(from, frameSize, showSize); + } +} + +void InputConvertGame::wheelEvent(const QWheelEvent *from, const QSize &frameSize, const QSize &showSize) +{ + if (m_gameMap) { + updateSize(frameSize, showSize); + } else { + InputConvertNormal::wheelEvent(from, frameSize, showSize); + } +} + +void InputConvertGame::keyEvent(const QKeyEvent *from, const QSize& frameSize, const QSize& showSize) +{ + switch (from->key()) { + case Qt::Key_QuoteLeft: + if (QEvent::KeyPress == from->type()) { + switchGameMap(); + } + return; + } + + if (m_gameMap) { + updateSize(frameSize, showSize); + if (!from || from->isAutoRepeat()) { + return; + } + + // steer wheel + if (isSteerWheelKeys(from)) { + processSteerWheel(from); + return; + } + + // key click + if (processKeyClick(from)) { + return; + } + } else { + InputConvertNormal::keyEvent(from, frameSize, showSize); + } +} + +void InputConvertGame::updateSize(const QSize &frameSize, const QSize &showSize) +{ + m_frameSize = frameSize; + m_showSize = showSize; +} + +void InputConvertGame::sendTouchDownEvent(int id, QPointF pos) +{ + sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_DOWN); +} + +void InputConvertGame::sendTouchMoveEvent(int id, QPointF pos) +{ + sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_MOVE); +} + +void InputConvertGame::sendTouchUpEvent(int id, QPointF pos) +{ + sendTouchEvent(id, pos, AMOTION_EVENT_ACTION_UP); +} + +void InputConvertGame::sendTouchEvent(int id, QPointF pos, AndroidMotioneventAction action) +{ + if (0 > id || MULTI_TOUCH_MAX_NUM-1 < id) { + return; + } + ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_TOUCH); + if (!controlEvent) { + return; + } + controlEvent->setTouchEventData(id, action, QRect(calcAbsolutePos(pos).toPoint(), m_frameSize)); + sendControlEvent(controlEvent); +} + +QPointF InputConvertGame::calcAbsolutePos(QPointF relativePos) +{ + QPointF absolutePos; + absolutePos.setX(m_showSize.width() * relativePos.x()); + absolutePos.setY(m_showSize.height() * relativePos.y()); + // convert pos + absolutePos.setX(absolutePos.x() * m_frameSize.width() / m_showSize.width()); + absolutePos.setY(absolutePos.y() * m_frameSize.height() / m_showSize.height()); + return absolutePos; +} + +int InputConvertGame::attachTouchID(int key) +{ + for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { + if (0 == multiTouchID[i]) { + multiTouchID[i] = key; + return i; + } + } + return -1; +} + +void InputConvertGame::detachTouchID(int key) +{ + for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { + if (key == multiTouchID[i]) { + multiTouchID[i] = 0; + return; + } + } +} + +int InputConvertGame::getTouchID(int key) +{ + for (int i = 0; i < MULTI_TOUCH_MAX_NUM; i++) { + if (key == multiTouchID[i]) { + return i; + } + } + return -1; +} + +bool InputConvertGame::isSteerWheelKeys(const QKeyEvent *from) +{ + for (int key : m_steerWheelKeys) { + if (key == from->key()) { + return true; + } + } + return false; +} + +void InputConvertGame::processSteerWheel(const QKeyEvent *from) +{ + int keyPress1 = -1; + int keyPress2 = -1; + int keysNum = updateSteerWheelKeysPress(from, keyPress1, keyPress2); + bool needMove = false; + if (QEvent::KeyPress == from->type()) { + if (1 == keysNum) { + m_steerWheelFirstTouchKey = from->key(); + int id = attachTouchID(m_steerWheelFirstTouchKey); + if (-1 == id) { + return; + } + sendTouchDownEvent(id, m_steerWheelPos); + needMove = true; + } else if (2 == keysNum) { + needMove = true; + } + } else if (QEvent::KeyRelease == from->type()){ + if (0 == keysNum) { + sendTouchUpEvent(getTouchID(m_steerWheelFirstTouchKey), m_steerWheelPos); + detachTouchID(m_steerWheelFirstTouchKey); + m_steerWheelFirstTouchKey = 0; + } else if (1 == keysNum) { + needMove = true; + } + } + if (needMove) { + steerWheelMove(keysNum, keyPress1, keyPress2); + } +} + +int InputConvertGame::updateSteerWheelKeysPress(const QKeyEvent *from, int& keyPress1, int& keyPress2) +{ + bool keyPress = false; + if (QEvent::KeyPress == from->type()) { + keyPress = true; + } else if (QEvent::KeyRelease == from->type()) { + keyPress = false; + } + if (from->key() == m_steerWheelKeys[SWD_UP]) { + m_steerWheelKeysPress[SWD_UP] = keyPress; + } else if (from->key() == m_steerWheelKeys[SWD_RIGHT]) { + m_steerWheelKeysPress[SWD_RIGHT] = keyPress; + } else if (from->key() == m_steerWheelKeys[SWD_DOWN]) { + m_steerWheelKeysPress[SWD_DOWN] = keyPress; + } else if (from->key() == m_steerWheelKeys[SWD_LEFT]) { + m_steerWheelKeysPress[SWD_LEFT] = keyPress; + } + + int count = 0; + keyPress1 = -1; + keyPress2 = -1; + for (int i = 0; i < 4; i++) { + if (true == m_steerWheelKeysPress[i]) { + count++; + + if (-1 == keyPress1) { + keyPress1 = i; + } else if (-1 == keyPress2) { + keyPress2 = i; + } + } + } + return count; +} + +void InputConvertGame::steerWheelMove(int keysNum, int keyPress1, int keyPress2) +{ + if (1 != keysNum && 2 != keysNum) { + return; + } + QPointF movePos = m_steerWheelPos; + switch (keysNum) { + case 2: + if (keyPress2 == SWD_UP) { + movePos.setY(movePos.y() - m_steerWheelOffset.top()); + } else if (keyPress2 == SWD_RIGHT) { + movePos.setX(movePos.x() + m_steerWheelOffset.right()); + } else if (keyPress2 == SWD_DOWN) { + movePos.setY(movePos.y() + m_steerWheelOffset.bottom()); + } else if (keyPress2 == SWD_LEFT) { + movePos.setX(movePos.x() - m_steerWheelOffset.left()); + } + case 1: + if (keyPress1 == SWD_UP) { + movePos.setY(movePos.y() - m_steerWheelOffset.top()); + } else if (keyPress1 == SWD_RIGHT) { + movePos.setX(movePos.x() + m_steerWheelOffset.right()); + } else if (keyPress1 == SWD_DOWN) { + movePos.setY(movePos.y() + m_steerWheelOffset.bottom()); + } else if (keyPress1 == SWD_LEFT) { + movePos.setX(movePos.x() - m_steerWheelOffset.left()); + } + break; + } + sendTouchMoveEvent(getTouchID(m_steerWheelFirstTouchKey), movePos); +} + +bool InputConvertGame::processKeyClick(const QKeyEvent *from) +{ + QPointF clickPos; + bool clickTwice = false; + switch (from->key()) { + case Qt::Key_Space: // 跳 + clickPos = QPointF(0.96f, 0.7f); + break; + case Qt::Key_M: // 地图 + switchGameMap(); + clickPos = QPointF(0.98f, 0.03f); + break; + case Qt::Key_Tab: // 背包 + clickPos = QPointF(0.06f, 0.9f); + switchGameMap(); + break; + case Qt::Key_Z: // 趴 + clickPos = QPointF(0.95f, 0.9f); + break; + case Qt::Key_C: // 蹲 + clickPos = QPointF(0.86f, 0.92f); + break; + case Qt::Key_R: // 换弹 + clickPos = QPointF(0.795f, 0.93f); + break; + case Qt::Key_Alt: // 小眼睛 + clickPos = QPointF(0.8f, 0.31f); + break; + case Qt::Key_F: // 捡东西1 + clickPos = QPointF(0.7f, 0.34f); + break; + case Qt::Key_G: // 捡东西2 + clickPos = QPointF(0.7f, 0.44f); + break; + case Qt::Key_H: // 捡东西3 + clickPos = QPointF(0.7f, 0.54f); + break; + case Qt::Key_1: // 换枪1 + clickPos = QPointF(0.45f, 0.9f); + break; + case Qt::Key_2: // 换枪2 + clickPos = QPointF(0.55f, 0.9f); + break; + case Qt::Key_3: // 手雷 + clickPos = QPointF(0.67f, 0.92f); + break; + case Qt::Key_5: // 下车 + clickPos = QPointF(0.92f, 0.4f); + break; + case Qt::Key_Shift: // 车加速 + clickPos = QPointF(0.82f, 0.8f); + break; + case Qt::Key_4: // 开关门 + clickPos = QPointF(0.7f, 0.7f); + break; + case Qt::Key_Q: // 左探头 + clickTwice = true; + clickPos = QPointF(0.12f, 0.35f); + break; + case Qt::Key_E: // 右探头 + clickTwice = true; + clickPos = QPointF(0.2, 0.35f); + break; + default: + return false; + break; + } + + if (QEvent::KeyPress == from->type()) { + int id = attachTouchID(from->key()); + sendTouchDownEvent(id, clickPos); + if (clickTwice) { + sendTouchUpEvent(getTouchID(from->key()), clickPos); + detachTouchID(from->key()); + } + } else if (QEvent::KeyRelease == from->type()) { + if (clickTwice) { + int id = attachTouchID(from->key()); + sendTouchDownEvent(id, clickPos); + } + sendTouchUpEvent(getTouchID(from->key()), clickPos); + detachTouchID(from->key()); + } + return true; +} + +bool InputConvertGame::processMouseClick(const QMouseEvent *from) +{ + QPointF clickPos; + if (Qt::LeftButton == from->button()) { + clickPos = QPointF(0.86f, 0.72f); + } else if (Qt::RightButton == from->button()){ + clickPos = QPointF(0.96f, 0.52f); + } else { + return false; + } + + if (QEvent::MouseButtonPress == from->type() || QEvent::MouseButtonDblClick == from->type()) { + int id = attachTouchID(from->button()); + sendTouchDownEvent(id, clickPos); + } else if (QEvent::MouseButtonRelease == from->type()) { + sendTouchUpEvent(getTouchID(from->button()), clickPos); + detachTouchID(from->button()); + } else { + return false; + } + return true; +} + +bool InputConvertGame::processMouseMove(const QMouseEvent *from) +{ + if (QEvent::MouseMove != from->type()) { + return false; + } + + mouseMoveStartTouch(from); + startMouseMoveTimer(); + + // move + // pos + QPointF pos = from->localPos(); + // convert pos + pos.setX(pos.x() / m_showSize.width()); + pos.setY(pos.y() / m_showSize.height()); + sendTouchMoveEvent(getTouchID(Qt::ExtraButton24), pos); + m_mouseMoveLastPos = pos; + if (pos.x() < 0.1 || pos.x() > 0.9 || pos.y() < 0.1 || pos.y() > 0.9) { + mouseMoveStopTouch(); + mouseMoveStartTouch(from); + } + + return true; +} + +void InputConvertGame::moveCursorToStart(const QMouseEvent *from) +{ + QPoint localPos = QPoint(m_showSize.width()*m_mouseMoveStartPos.x(), m_showSize.height()*m_mouseMoveStartPos.y()); + QPoint posOffset = from->localPos().toPoint() - localPos; + QPoint globalPos = from->globalPos(); + + globalPos -= posOffset; + QCursor::setPos(globalPos); +} + +void InputConvertGame::startMouseMoveTimer() +{ + stopMouseMoveTimer(); + m_mouseMoveTimer = startTimer(1000); +} + +void InputConvertGame::stopMouseMoveTimer() +{ + if (0 != m_mouseMoveTimer) { + killTimer(m_mouseMoveTimer); + m_mouseMoveTimer = 0; + } +} + +void InputConvertGame::mouseMoveStartTouch(const QMouseEvent* from) +{ + if (!m_mouseMovePress) { + moveCursorToStart(from); + int id = attachTouchID(Qt::ExtraButton24); + sendTouchDownEvent(id, m_mouseMoveStartPos); + m_mouseMovePress = true; + } +} + +void InputConvertGame::mouseMoveStopTouch() +{ + if (m_mouseMovePress) { + sendTouchUpEvent(getTouchID(Qt::ExtraButton24), m_mouseMoveLastPos); + detachTouchID(Qt::ExtraButton24); + m_mouseMovePress = false; + } +} + +void InputConvertGame::switchGameMap() +{ + m_gameMap = !m_gameMap; + grabCursor(m_gameMap); +} + +void InputConvertGame::grabCursor(bool grab) +{ + if(grab) { + QGuiApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); + } else { + mouseMoveStopTouch(); + QGuiApplication::restoreOverrideCursor(); + } +} + +void InputConvertGame::timerEvent(QTimerEvent *event) +{ + if (m_mouseMoveTimer == event->timerId()) { + stopMouseMoveTimer(); + mouseMoveStopTouch(); + } +} diff --git a/src/inputcontrol/inputconvertgame.h b/QtScrcpy/inputcontrol/inputconvertgame.h similarity index 96% rename from src/inputcontrol/inputconvertgame.h rename to QtScrcpy/inputcontrol/inputconvertgame.h index dab9ec2..b2e6af3 100644 --- a/src/inputcontrol/inputconvertgame.h +++ b/QtScrcpy/inputcontrol/inputconvertgame.h @@ -1,86 +1,86 @@ -#ifndef INPUTCONVERTGAME_H -#define INPUTCONVERTGAME_H - -#include -#include "inputconvertnormal.h" - -#define MULTI_TOUCH_MAX_NUM 10 -class InputConvertGame : public QObject, public InputConvertNormal -{ - Q_OBJECT -public: - InputConvertGame(QObject* parent = Q_NULLPTR); - virtual ~InputConvertGame(); - - virtual void mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize); - virtual void wheelEvent(const QWheelEvent* from, const QSize& frameSize, const QSize& showSize); - virtual void keyEvent(const QKeyEvent* from, const QSize& frameSize, const QSize& showSize); - -protected: - void updateSize(const QSize& frameSize, const QSize& showSize); - void sendTouchDownEvent(int id, QPointF pos); - void sendTouchMoveEvent(int id, QPointF pos); - void sendTouchUpEvent(int id, QPointF pos); - void sendTouchEvent(int id, QPointF pos, AndroidMotioneventAction action); - QPointF calcAbsolutePos(QPointF relativePos); - - // multi touch id - int attachTouchID(int key); - void detachTouchID(int key); - int getTouchID(int key); - - // steer wheel - bool isSteerWheelKeys(const QKeyEvent* from); - void processSteerWheel(const QKeyEvent* from); - int updateSteerWheelKeysPress(const QKeyEvent* from, int& keyPress1, int& keyPress2); - void steerWheelMove(int keysNum, int keyPress1, int keyPress2); - - // click - bool processKeyClick(const QKeyEvent* from); - - // mouse - bool processMouseClick(const QMouseEvent* from); - bool processMouseMove(const QMouseEvent* from); - void moveCursorToStart(const QMouseEvent* from); - void startMouseMoveTimer(); - void stopMouseMoveTimer(); - void mouseMoveStartTouch(const QMouseEvent* from); - void mouseMoveStopTouch(); - - void switchGameMap(); - void grabCursor(bool grab); - -protected: - void timerEvent(QTimerEvent *event); - -private: - enum SteerWheelDirection { - SWD_UP = 0, - SWD_RIGHT, - SWD_DOWN, - SWD_LEFT, - }; - -private: - QSize m_frameSize; - QSize m_showSize; - bool m_gameMap = false; - - int multiTouchID[MULTI_TOUCH_MAX_NUM] = { 0 }; - - QPointF m_steerWheelPos = {0.16f, 0.75f}; - QRectF m_steerWheelOffset = {QPointF(0.1f, 0.27f), QPointF(0.1f, 0.2f)}; - // order by SteerWheelDirection(up right down left) - int m_steerWheelKeys[4] = {Qt::Key_W, Qt::Key_D, Qt::Key_S, Qt::Key_A}; - bool m_steerWheelKeysPress[4] = { false }; - int m_steerWheelKeysNum = 0; - int m_steerWheelFirstTouchKey = 0; - - // mouse move - QPointF m_mouseMoveStartPos = {0.57f, 0.26f}; - QPointF m_mouseMoveLastPos; - bool m_mouseMovePress = false; - int m_mouseMoveTimer = 0; -}; - -#endif // INPUTCONVERTGAME_H +#ifndef INPUTCONVERTGAME_H +#define INPUTCONVERTGAME_H + +#include +#include "inputconvertnormal.h" + +#define MULTI_TOUCH_MAX_NUM 10 +class InputConvertGame : public QObject, public InputConvertNormal +{ + Q_OBJECT +public: + InputConvertGame(QObject* parent = Q_NULLPTR); + virtual ~InputConvertGame(); + + virtual void mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize); + virtual void wheelEvent(const QWheelEvent* from, const QSize& frameSize, const QSize& showSize); + virtual void keyEvent(const QKeyEvent* from, const QSize& frameSize, const QSize& showSize); + +protected: + void updateSize(const QSize& frameSize, const QSize& showSize); + void sendTouchDownEvent(int id, QPointF pos); + void sendTouchMoveEvent(int id, QPointF pos); + void sendTouchUpEvent(int id, QPointF pos); + void sendTouchEvent(int id, QPointF pos, AndroidMotioneventAction action); + QPointF calcAbsolutePos(QPointF relativePos); + + // multi touch id + int attachTouchID(int key); + void detachTouchID(int key); + int getTouchID(int key); + + // steer wheel + bool isSteerWheelKeys(const QKeyEvent* from); + void processSteerWheel(const QKeyEvent* from); + int updateSteerWheelKeysPress(const QKeyEvent* from, int& keyPress1, int& keyPress2); + void steerWheelMove(int keysNum, int keyPress1, int keyPress2); + + // click + bool processKeyClick(const QKeyEvent* from); + + // mouse + bool processMouseClick(const QMouseEvent* from); + bool processMouseMove(const QMouseEvent* from); + void moveCursorToStart(const QMouseEvent* from); + void startMouseMoveTimer(); + void stopMouseMoveTimer(); + void mouseMoveStartTouch(const QMouseEvent* from); + void mouseMoveStopTouch(); + + void switchGameMap(); + void grabCursor(bool grab); + +protected: + void timerEvent(QTimerEvent *event); + +private: + enum SteerWheelDirection { + SWD_UP = 0, + SWD_RIGHT, + SWD_DOWN, + SWD_LEFT, + }; + +private: + QSize m_frameSize; + QSize m_showSize; + bool m_gameMap = false; + + int multiTouchID[MULTI_TOUCH_MAX_NUM] = { 0 }; + + QPointF m_steerWheelPos = {0.16f, 0.75f}; + QRectF m_steerWheelOffset = {QPointF(0.1f, 0.27f), QPointF(0.1f, 0.2f)}; + // order by SteerWheelDirection(up right down left) + int m_steerWheelKeys[4] = {Qt::Key_W, Qt::Key_D, Qt::Key_S, Qt::Key_A}; + bool m_steerWheelKeysPress[4] = { false }; + int m_steerWheelKeysNum = 0; + int m_steerWheelFirstTouchKey = 0; + + // mouse move + QPointF m_mouseMoveStartPos = {0.57f, 0.26f}; + QPointF m_mouseMoveLastPos; + bool m_mouseMovePress = false; + int m_mouseMoveTimer = 0; +}; + +#endif // INPUTCONVERTGAME_H diff --git a/src/inputcontrol/inputconvertnormal.cpp b/QtScrcpy/inputcontrol/inputconvertnormal.cpp similarity index 96% rename from src/inputcontrol/inputconvertnormal.cpp rename to QtScrcpy/inputcontrol/inputconvertnormal.cpp index d83279d..9961ad2 100644 --- a/src/inputcontrol/inputconvertnormal.cpp +++ b/QtScrcpy/inputcontrol/inputconvertnormal.cpp @@ -1,340 +1,340 @@ -#include "inputconvertnormal.h" - -InputConvertNormal::InputConvertNormal() -{ - -} - -InputConvertNormal::~InputConvertNormal() -{ - -} - -void InputConvertNormal::mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize) -{ - if (!from) { - return; - } - - // action - AndroidMotioneventAction action; - switch (from->type()) { - case QEvent::MouseButtonPress: - action = AMOTION_EVENT_ACTION_DOWN; - break; - case QEvent::MouseButtonRelease: - action = AMOTION_EVENT_ACTION_UP; - break; - case QEvent::MouseMove: - action = AMOTION_EVENT_ACTION_MOVE; - break; - default: - return; - } - - // pos - QPointF pos = from->localPos(); - // convert pos - pos.setX(pos.x() * frameSize.width() / showSize.width()); - pos.setY(pos.y() * frameSize.height() / showSize.height()); - - // set data - ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_MOUSE); - if (!controlEvent) { - return; - } - controlEvent->setMouseEventData(action, convertMouseButtons(from->buttons()), QRect(pos.toPoint(), frameSize)); - sendControlEvent(controlEvent); -} - -void InputConvertNormal::wheelEvent(const QWheelEvent *from, const QSize& frameSize, const QSize& showSize) -{ - if (!from) { - return; - } - - // delta - qint32 hScroll = 0; - qint32 vScroll = 0; - switch (from->orientation()) { - case Qt::Horizontal: - hScroll = from->delta(); - break; - case Qt::Vertical: - vScroll = from->delta(); - break; - } - - // pos - QPointF pos = from->posF(); - // convert pos - pos.setX(pos.x() * frameSize.width() / showSize.width()); - pos.setY(pos.y() * frameSize.height() / showSize.height()); - - // set data - ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_SCROLL); - if (!controlEvent) { - return; - } - controlEvent->setScrollEventData(QRect(pos.toPoint(), frameSize), hScroll, vScroll); - sendControlEvent(controlEvent); -} - -void InputConvertNormal::keyEvent(const QKeyEvent *from, const QSize& frameSize, const QSize& showSize) -{ - if (!from) { - return; - } - - // action - AndroidKeyeventAction action; - switch (from->type()) { - case QEvent::KeyPress: - action = AKEY_EVENT_ACTION_DOWN; - break; - case QEvent::KeyRelease: - action = AKEY_EVENT_ACTION_UP; - break; - default: - return; - } - - // key code - AndroidKeycode keyCode = convertKeyCode(from->key(), from->modifiers()); - if (AKEYCODE_UNKNOWN == keyCode) { - return; - } - - // set data - ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_KEYCODE); - if (!controlEvent) { - return; - } - controlEvent->setKeycodeEventData(action, keyCode, convertMetastate(from->modifiers())); - sendControlEvent(controlEvent); -} - -AndroidMotioneventButtons InputConvertNormal::convertMouseButtons(Qt::MouseButtons buttonState) -{ - quint32 buttons = 0; - if (buttonState & Qt::LeftButton) { - buttons |= AMOTION_EVENT_BUTTON_PRIMARY; - } - if (buttonState & Qt::RightButton) { - buttons |= AMOTION_EVENT_BUTTON_SECONDARY; - } - if (buttonState & Qt::MidButton) { - buttons |= AMOTION_EVENT_BUTTON_TERTIARY; - } - if (buttonState & Qt::XButton1) { - buttons |= AMOTION_EVENT_BUTTON_BACK; - } - if (buttonState & Qt::XButton2) { - buttons |= AMOTION_EVENT_BUTTON_FORWARD; - } - return (AndroidMotioneventButtons)buttons; -} - -AndroidKeycode InputConvertNormal::convertKeyCode(int key, Qt::KeyboardModifiers modifiers) -{ - AndroidKeycode keyCode = AKEYCODE_UNKNOWN; - // functional keys - switch (key) { - case Qt::Key_Return: - keyCode = AKEYCODE_ENTER; - break; - case Qt::Key_Enter: - keyCode = AKEYCODE_NUMPAD_ENTER; - break; - case Qt::Key_Escape: - keyCode = AKEYCODE_ESCAPE; - break; - case Qt::Key_Backspace: - keyCode = AKEYCODE_DEL; - break; - case Qt::Key_Delete: - keyCode = AKEYCODE_FORWARD_DEL; - break; - case Qt::Key_Tab: - keyCode = AKEYCODE_TAB; - break; - case Qt::Key_Home: - keyCode = AKEYCODE_MOVE_HOME; - break; - case Qt::Key_End: - keyCode = AKEYCODE_MOVE_END; - break; - case Qt::Key_PageUp: - keyCode = AKEYCODE_PAGE_UP; - break; - case Qt::Key_PageDown: - keyCode = AKEYCODE_PAGE_DOWN; - break; - case Qt::Key_Left: - keyCode = AKEYCODE_DPAD_LEFT; - break; - case Qt::Key_Right: - keyCode = AKEYCODE_DPAD_RIGHT; - break; - case Qt::Key_Up: - keyCode = AKEYCODE_DPAD_UP; - break; - case Qt::Key_Down: - keyCode = AKEYCODE_DPAD_DOWN; - break; - } - if (AKEYCODE_UNKNOWN != keyCode) { - return keyCode; - } - - // if ALT and META are pressed, dont handle letters and space - if (modifiers & (Qt::AltModifier | Qt::MetaModifier)) { - return keyCode; - } - - // character keys - switch (key) { - case Qt::Key_A: - keyCode = AKEYCODE_A; - break; - case Qt::Key_B: - keyCode = AKEYCODE_B; - break; - case Qt::Key_C: - keyCode = AKEYCODE_C; - break; - case Qt::Key_D: - keyCode = AKEYCODE_D; - break; - case Qt::Key_E: - keyCode = AKEYCODE_E; - break; - case Qt::Key_F: - keyCode = AKEYCODE_F; - break; - case Qt::Key_G: - keyCode = AKEYCODE_G; - break; - case Qt::Key_H: - keyCode = AKEYCODE_H; - break; - case Qt::Key_I: - keyCode = AKEYCODE_I; - break; - case Qt::Key_J: - keyCode = AKEYCODE_J; - break; - case Qt::Key_K: - keyCode = AKEYCODE_K; - break; - case Qt::Key_L: - keyCode = AKEYCODE_L; - break; - case Qt::Key_M: - keyCode = AKEYCODE_M; - break; - case Qt::Key_N: - keyCode = AKEYCODE_N; - break; - case Qt::Key_O: - keyCode = AKEYCODE_O; - break; - case Qt::Key_P: - keyCode = AKEYCODE_P; - break; - case Qt::Key_Q: - keyCode = AKEYCODE_Q; - break; - case Qt::Key_R: - keyCode = AKEYCODE_R; - break; - case Qt::Key_S: - keyCode = AKEYCODE_S; - break; - case Qt::Key_T: - keyCode = AKEYCODE_T; - break; - case Qt::Key_U: - keyCode = AKEYCODE_U; - break; - case Qt::Key_V: - keyCode = AKEYCODE_V; - break; - case Qt::Key_W: - keyCode = AKEYCODE_W; - break; - case Qt::Key_X: - keyCode = AKEYCODE_X; - break; - case Qt::Key_Y: - keyCode = AKEYCODE_Y; - break; - case Qt::Key_Z: - keyCode = AKEYCODE_Z; - break; - case Qt::Key_0: - keyCode = AKEYCODE_0; - break; - case Qt::Key_1: - keyCode = AKEYCODE_1; - break; - case Qt::Key_2: - keyCode = AKEYCODE_2; - break; - case Qt::Key_3: - keyCode = AKEYCODE_3; - break; - case Qt::Key_4: - keyCode = AKEYCODE_4; - break; - case Qt::Key_5: - keyCode = AKEYCODE_5; - break; - case Qt::Key_6: - keyCode = AKEYCODE_6; - break; - case Qt::Key_7: - keyCode = AKEYCODE_7; - break; - case Qt::Key_8: - keyCode = AKEYCODE_8; - break; - case Qt::Key_9: - keyCode = AKEYCODE_9; - break; - case Qt::Key_Space: - keyCode = AKEYCODE_SPACE; - break; - } - return keyCode; -} - -AndroidMetastate InputConvertNormal::convertMetastate(Qt::KeyboardModifiers modifiers) -{ - int metastate = AMETA_NONE; - - if (modifiers & Qt::ShiftModifier) { - metastate |= AMETA_SHIFT_ON; - } - if (modifiers & Qt::ControlModifier) { - metastate |= AMETA_CTRL_ON; - } - if (modifiers & Qt::AltModifier) { - metastate |= AMETA_ALT_ON; - } - if (modifiers & Qt::MetaModifier) { - metastate |= AMETA_META_ON; - } - /* - if (mod & KMOD_NUM) { - metastate |= AMETA_NUM_LOCK_ON; - } - if (mod & KMOD_CAPS) { - metastate |= AMETA_CAPS_LOCK_ON; - } - if (mod & KMOD_MODE) { // Alt Gr - // no mapping? - } - */ - return (AndroidMetastate)metastate; -} +#include "inputconvertnormal.h" + +InputConvertNormal::InputConvertNormal() +{ + +} + +InputConvertNormal::~InputConvertNormal() +{ + +} + +void InputConvertNormal::mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize) +{ + if (!from) { + return; + } + + // action + AndroidMotioneventAction action; + switch (from->type()) { + case QEvent::MouseButtonPress: + action = AMOTION_EVENT_ACTION_DOWN; + break; + case QEvent::MouseButtonRelease: + action = AMOTION_EVENT_ACTION_UP; + break; + case QEvent::MouseMove: + action = AMOTION_EVENT_ACTION_MOVE; + break; + default: + return; + } + + // pos + QPointF pos = from->localPos(); + // convert pos + pos.setX(pos.x() * frameSize.width() / showSize.width()); + pos.setY(pos.y() * frameSize.height() / showSize.height()); + + // set data + ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_MOUSE); + if (!controlEvent) { + return; + } + controlEvent->setMouseEventData(action, convertMouseButtons(from->buttons()), QRect(pos.toPoint(), frameSize)); + sendControlEvent(controlEvent); +} + +void InputConvertNormal::wheelEvent(const QWheelEvent *from, const QSize& frameSize, const QSize& showSize) +{ + if (!from) { + return; + } + + // delta + qint32 hScroll = 0; + qint32 vScroll = 0; + switch (from->orientation()) { + case Qt::Horizontal: + hScroll = from->delta(); + break; + case Qt::Vertical: + vScroll = from->delta(); + break; + } + + // pos + QPointF pos = from->posF(); + // convert pos + pos.setX(pos.x() * frameSize.width() / showSize.width()); + pos.setY(pos.y() * frameSize.height() / showSize.height()); + + // set data + ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_SCROLL); + if (!controlEvent) { + return; + } + controlEvent->setScrollEventData(QRect(pos.toPoint(), frameSize), hScroll, vScroll); + sendControlEvent(controlEvent); +} + +void InputConvertNormal::keyEvent(const QKeyEvent *from, const QSize& frameSize, const QSize& showSize) +{ + if (!from) { + return; + } + + // action + AndroidKeyeventAction action; + switch (from->type()) { + case QEvent::KeyPress: + action = AKEY_EVENT_ACTION_DOWN; + break; + case QEvent::KeyRelease: + action = AKEY_EVENT_ACTION_UP; + break; + default: + return; + } + + // key code + AndroidKeycode keyCode = convertKeyCode(from->key(), from->modifiers()); + if (AKEYCODE_UNKNOWN == keyCode) { + return; + } + + // set data + ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_KEYCODE); + if (!controlEvent) { + return; + } + controlEvent->setKeycodeEventData(action, keyCode, convertMetastate(from->modifiers())); + sendControlEvent(controlEvent); +} + +AndroidMotioneventButtons InputConvertNormal::convertMouseButtons(Qt::MouseButtons buttonState) +{ + quint32 buttons = 0; + if (buttonState & Qt::LeftButton) { + buttons |= AMOTION_EVENT_BUTTON_PRIMARY; + } + if (buttonState & Qt::RightButton) { + buttons |= AMOTION_EVENT_BUTTON_SECONDARY; + } + if (buttonState & Qt::MidButton) { + buttons |= AMOTION_EVENT_BUTTON_TERTIARY; + } + if (buttonState & Qt::XButton1) { + buttons |= AMOTION_EVENT_BUTTON_BACK; + } + if (buttonState & Qt::XButton2) { + buttons |= AMOTION_EVENT_BUTTON_FORWARD; + } + return (AndroidMotioneventButtons)buttons; +} + +AndroidKeycode InputConvertNormal::convertKeyCode(int key, Qt::KeyboardModifiers modifiers) +{ + AndroidKeycode keyCode = AKEYCODE_UNKNOWN; + // functional keys + switch (key) { + case Qt::Key_Return: + keyCode = AKEYCODE_ENTER; + break; + case Qt::Key_Enter: + keyCode = AKEYCODE_NUMPAD_ENTER; + break; + case Qt::Key_Escape: + keyCode = AKEYCODE_ESCAPE; + break; + case Qt::Key_Backspace: + keyCode = AKEYCODE_DEL; + break; + case Qt::Key_Delete: + keyCode = AKEYCODE_FORWARD_DEL; + break; + case Qt::Key_Tab: + keyCode = AKEYCODE_TAB; + break; + case Qt::Key_Home: + keyCode = AKEYCODE_MOVE_HOME; + break; + case Qt::Key_End: + keyCode = AKEYCODE_MOVE_END; + break; + case Qt::Key_PageUp: + keyCode = AKEYCODE_PAGE_UP; + break; + case Qt::Key_PageDown: + keyCode = AKEYCODE_PAGE_DOWN; + break; + case Qt::Key_Left: + keyCode = AKEYCODE_DPAD_LEFT; + break; + case Qt::Key_Right: + keyCode = AKEYCODE_DPAD_RIGHT; + break; + case Qt::Key_Up: + keyCode = AKEYCODE_DPAD_UP; + break; + case Qt::Key_Down: + keyCode = AKEYCODE_DPAD_DOWN; + break; + } + if (AKEYCODE_UNKNOWN != keyCode) { + return keyCode; + } + + // if ALT and META are pressed, dont handle letters and space + if (modifiers & (Qt::AltModifier | Qt::MetaModifier)) { + return keyCode; + } + + // character keys + switch (key) { + case Qt::Key_A: + keyCode = AKEYCODE_A; + break; + case Qt::Key_B: + keyCode = AKEYCODE_B; + break; + case Qt::Key_C: + keyCode = AKEYCODE_C; + break; + case Qt::Key_D: + keyCode = AKEYCODE_D; + break; + case Qt::Key_E: + keyCode = AKEYCODE_E; + break; + case Qt::Key_F: + keyCode = AKEYCODE_F; + break; + case Qt::Key_G: + keyCode = AKEYCODE_G; + break; + case Qt::Key_H: + keyCode = AKEYCODE_H; + break; + case Qt::Key_I: + keyCode = AKEYCODE_I; + break; + case Qt::Key_J: + keyCode = AKEYCODE_J; + break; + case Qt::Key_K: + keyCode = AKEYCODE_K; + break; + case Qt::Key_L: + keyCode = AKEYCODE_L; + break; + case Qt::Key_M: + keyCode = AKEYCODE_M; + break; + case Qt::Key_N: + keyCode = AKEYCODE_N; + break; + case Qt::Key_O: + keyCode = AKEYCODE_O; + break; + case Qt::Key_P: + keyCode = AKEYCODE_P; + break; + case Qt::Key_Q: + keyCode = AKEYCODE_Q; + break; + case Qt::Key_R: + keyCode = AKEYCODE_R; + break; + case Qt::Key_S: + keyCode = AKEYCODE_S; + break; + case Qt::Key_T: + keyCode = AKEYCODE_T; + break; + case Qt::Key_U: + keyCode = AKEYCODE_U; + break; + case Qt::Key_V: + keyCode = AKEYCODE_V; + break; + case Qt::Key_W: + keyCode = AKEYCODE_W; + break; + case Qt::Key_X: + keyCode = AKEYCODE_X; + break; + case Qt::Key_Y: + keyCode = AKEYCODE_Y; + break; + case Qt::Key_Z: + keyCode = AKEYCODE_Z; + break; + case Qt::Key_0: + keyCode = AKEYCODE_0; + break; + case Qt::Key_1: + keyCode = AKEYCODE_1; + break; + case Qt::Key_2: + keyCode = AKEYCODE_2; + break; + case Qt::Key_3: + keyCode = AKEYCODE_3; + break; + case Qt::Key_4: + keyCode = AKEYCODE_4; + break; + case Qt::Key_5: + keyCode = AKEYCODE_5; + break; + case Qt::Key_6: + keyCode = AKEYCODE_6; + break; + case Qt::Key_7: + keyCode = AKEYCODE_7; + break; + case Qt::Key_8: + keyCode = AKEYCODE_8; + break; + case Qt::Key_9: + keyCode = AKEYCODE_9; + break; + case Qt::Key_Space: + keyCode = AKEYCODE_SPACE; + break; + } + return keyCode; +} + +AndroidMetastate InputConvertNormal::convertMetastate(Qt::KeyboardModifiers modifiers) +{ + int metastate = AMETA_NONE; + + if (modifiers & Qt::ShiftModifier) { + metastate |= AMETA_SHIFT_ON; + } + if (modifiers & Qt::ControlModifier) { + metastate |= AMETA_CTRL_ON; + } + if (modifiers & Qt::AltModifier) { + metastate |= AMETA_ALT_ON; + } + if (modifiers & Qt::MetaModifier) { + metastate |= AMETA_META_ON; + } + /* + if (mod & KMOD_NUM) { + metastate |= AMETA_NUM_LOCK_ON; + } + if (mod & KMOD_CAPS) { + metastate |= AMETA_CAPS_LOCK_ON; + } + if (mod & KMOD_MODE) { // Alt Gr + // no mapping? + } + */ + return (AndroidMetastate)metastate; +} diff --git a/src/inputcontrol/inputconvertnormal.h b/QtScrcpy/inputcontrol/inputconvertnormal.h similarity index 97% rename from src/inputcontrol/inputconvertnormal.h rename to QtScrcpy/inputcontrol/inputconvertnormal.h index fb34595..fb7da2c 100644 --- a/src/inputcontrol/inputconvertnormal.h +++ b/QtScrcpy/inputcontrol/inputconvertnormal.h @@ -1,22 +1,22 @@ -#ifndef INPUTCONVERT_H -#define INPUTCONVERT_H - -#include "inputconvertbase.h" - -class InputConvertNormal : public InputConvertBase -{ -public: - InputConvertNormal(); - virtual ~InputConvertNormal(); - - virtual void mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize); - virtual void wheelEvent(const QWheelEvent* from, const QSize& frameSize, const QSize& showSize); - virtual void keyEvent(const QKeyEvent* from, const QSize& frameSize, const QSize& showSize); - -private: - AndroidMotioneventButtons convertMouseButtons(Qt::MouseButtons buttonState); - AndroidKeycode convertKeyCode(int key, Qt::KeyboardModifiers modifiers); - AndroidMetastate convertMetastate(Qt::KeyboardModifiers modifiers); -}; - -#endif // INPUTCONVERT_H +#ifndef INPUTCONVERT_H +#define INPUTCONVERT_H + +#include "inputconvertbase.h" + +class InputConvertNormal : public InputConvertBase +{ +public: + InputConvertNormal(); + virtual ~InputConvertNormal(); + + virtual void mouseEvent(const QMouseEvent* from, const QSize& frameSize, const QSize& showSize); + virtual void wheelEvent(const QWheelEvent* from, const QSize& frameSize, const QSize& showSize); + virtual void keyEvent(const QKeyEvent* from, const QSize& frameSize, const QSize& showSize); + +private: + AndroidMotioneventButtons convertMouseButtons(Qt::MouseButtons buttonState); + AndroidKeycode convertKeyCode(int key, Qt::KeyboardModifiers modifiers); + AndroidMetastate convertMetastate(Qt::KeyboardModifiers modifiers); +}; + +#endif // INPUTCONVERT_H diff --git a/src/main.cpp b/QtScrcpy/main.cpp similarity index 100% rename from src/main.cpp rename to QtScrcpy/main.cpp diff --git a/src/render/qyuvopenglwidget.cpp b/QtScrcpy/render/qyuvopenglwidget.cpp similarity index 100% rename from src/render/qyuvopenglwidget.cpp rename to QtScrcpy/render/qyuvopenglwidget.cpp diff --git a/src/render/qyuvopenglwidget.h b/QtScrcpy/render/qyuvopenglwidget.h similarity index 100% rename from src/render/qyuvopenglwidget.h rename to QtScrcpy/render/qyuvopenglwidget.h diff --git a/src/render/render.pri b/QtScrcpy/render/render.pri similarity index 100% rename from src/render/render.pri rename to QtScrcpy/render/render.pri diff --git a/src/server/devicesocket.cpp b/QtScrcpy/server/devicesocket.cpp similarity index 100% rename from src/server/devicesocket.cpp rename to QtScrcpy/server/devicesocket.cpp diff --git a/src/server/devicesocket.h b/QtScrcpy/server/devicesocket.h similarity index 100% rename from src/server/devicesocket.h rename to QtScrcpy/server/devicesocket.h diff --git a/src/server/server.cpp b/QtScrcpy/server/server.cpp similarity index 100% rename from src/server/server.cpp rename to QtScrcpy/server/server.cpp diff --git a/src/server/server.h b/QtScrcpy/server/server.h similarity index 100% rename from src/server/server.h rename to QtScrcpy/server/server.h diff --git a/src/server/server.pri b/QtScrcpy/server/server.pri similarity index 100% rename from src/server/server.pri rename to QtScrcpy/server/server.pri diff --git a/src/server/tcpserver.cpp b/QtScrcpy/server/tcpserver.cpp similarity index 100% rename from src/server/tcpserver.cpp rename to QtScrcpy/server/tcpserver.cpp diff --git a/src/server/tcpserver.h b/QtScrcpy/server/tcpserver.h similarity index 100% rename from src/server/tcpserver.h rename to QtScrcpy/server/tcpserver.h diff --git a/src/videoform.cpp b/QtScrcpy/videoform.cpp similarity index 100% rename from src/videoform.cpp rename to QtScrcpy/videoform.cpp diff --git a/src/videoform.h b/QtScrcpy/videoform.h similarity index 100% rename from src/videoform.h rename to QtScrcpy/videoform.h diff --git a/src/videoform.ui b/QtScrcpy/videoform.ui similarity index 100% rename from src/videoform.ui rename to QtScrcpy/videoform.ui diff --git a/all.pro b/all.pro new file mode 100644 index 0000000..f4cda48 --- /dev/null +++ b/all.pro @@ -0,0 +1,2 @@ +TEMPLATE = subdirs +SUBDIRS = QtScrcpy \ No newline at end of file