├── .gitignore ├── README.md ├── README.zh_CN.md ├── laser_kbd_neo ├── SConstruct ├── laser_kbd.rc ├── laser_kbd.sln ├── laser_kbd.vcproj ├── laser_kbd.vcxproj ├── laser_kbd.vcxproj.filters ├── ref │ ├── curl-7.29.0 │ │ ├── curl-7.29.0.7z │ │ ├── include │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README │ │ │ └── curl │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ ├── curl.h │ │ │ │ ├── curlbuild.h │ │ │ │ ├── curlbuild.h.cmake │ │ │ │ ├── curlbuild.h.in │ │ │ │ ├── curlrules.h │ │ │ │ ├── curlver.h │ │ │ │ ├── easy.h │ │ │ │ ├── mprintf.h │ │ │ │ ├── multi.h │ │ │ │ ├── stdcheaders.h │ │ │ │ └── typecheck-gcc.h │ │ └── lib │ │ │ └── LIB-Release │ │ │ └── libcurl.lib │ ├── jsoncpp-src-0.5.0 │ │ ├── include │ │ │ └── json │ │ │ │ ├── autolink.h │ │ │ │ ├── config.h │ │ │ │ ├── features.h │ │ │ │ ├── forwards.h │ │ │ │ ├── json.h │ │ │ │ ├── reader.h │ │ │ │ ├── value.h │ │ │ │ └── writer.h │ │ ├── jsoncpp-src-0.5.0.7z │ │ └── src │ │ │ ├── jsontestrunner │ │ │ ├── main.cpp │ │ │ └── sconscript │ │ │ ├── lib_json │ │ │ ├── json_batchallocator.h │ │ │ ├── json_internalarray.inl │ │ │ ├── json_internalmap.inl │ │ │ ├── json_reader.cpp │ │ │ ├── json_value.cpp │ │ │ ├── json_valueiterator.inl │ │ │ ├── json_writer.cpp │ │ │ └── sconscript │ │ │ └── test_lib_json │ │ │ ├── jsontest.cpp │ │ │ ├── jsontest.h │ │ │ ├── main.cpp │ │ │ └── sconscript │ └── libkdtree++_0.7.0 │ │ ├── AUTHORS │ │ ├── CMakeLists.txt │ │ ├── COPYING │ │ ├── ChangeLog │ │ ├── INSTALL │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── NEWS │ │ ├── README │ │ ├── README.Python │ │ ├── TODO │ │ ├── autogen.sh │ │ ├── config.h.in │ │ ├── configure │ │ ├── configure.ac │ │ ├── doc │ │ ├── Doxyfile │ │ └── index.txt │ │ ├── examples │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── test_hayne.cpp │ │ └── test_kdtree.cpp │ │ ├── install-sh │ │ ├── kdtree++ │ │ ├── allocator.hpp │ │ ├── function.hpp │ │ ├── iterator.hpp │ │ ├── kdtree.hpp │ │ ├── node.hpp │ │ └── region.hpp │ │ ├── missing │ │ ├── pkgconfig │ │ └── libkdtree++.pc.in │ │ └── python-bindings │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── py-kdtree.hpp │ │ ├── py-kdtree.i │ │ ├── py-kdtree_test.cpp │ │ └── py-kdtree_test.py ├── res │ ├── common │ │ ├── btn.cancel.active.png │ │ ├── btn.cancel.png │ │ ├── btn.modelv1.active.png │ │ ├── btn.modelv1.png │ │ ├── btn.modelv2.active.png │ │ ├── btn.modelv2.png │ │ ├── btn.next.active.png │ │ ├── btn.next.png │ │ ├── btn.ok.active.png │ │ ├── btn.ok.png │ │ ├── btn.prev.active.png │ │ ├── btn.prev.png │ │ ├── logobtn.active.png │ │ ├── logobtn.png │ │ └── main_banner.png │ ├── lang │ │ ├── cn │ │ │ ├── btn.calibration.active.png │ │ │ ├── btn.calibration.png │ │ │ ├── btn.keyboard.active.png │ │ │ ├── btn.keyboard.png │ │ │ ├── btn.pad.active.png │ │ │ ├── btn.pad.png │ │ │ ├── btn.update.active.png │ │ │ ├── btn.update.png │ │ │ ├── camsel.title.png │ │ │ ├── coverpage.png │ │ │ └── modelsel.title.png │ │ └── en │ │ │ ├── btn.calibration.active.png │ │ │ ├── btn.calibration.png │ │ │ ├── btn.keyboard.active.png │ │ │ ├── btn.keyboard.png │ │ │ ├── btn.pad.active.png │ │ │ ├── btn.pad.png │ │ │ ├── btn.update.active.png │ │ │ ├── btn.update.png │ │ │ ├── camsel.title.png │ │ │ ├── coverpage.png │ │ │ └── modelsel.title.png │ ├── logo.png │ ├── prefined │ │ └── DFRobot │ │ │ ├── intrinsics_cam.xml │ │ │ ├── intrinsics_distort.xml │ │ │ ├── v2_intrinsics_cam.xml │ │ │ └── v2_intrinsics_distort.xml │ ├── rplogo.icns │ ├── rplogo.ico │ └── sound │ │ └── type.wav ├── resource.h ├── src │ ├── blobfinder.cpp │ ├── blobfinder.h │ ├── camera_selector.cpp │ ├── camera_selector.h │ ├── cameraundistortor.cpp │ ├── cameraundistortor.h │ ├── common.h │ ├── config.h.in │ ├── config_mgr.cpp │ ├── config_mgr.h │ ├── cv_common.h │ ├── cv_utils.cpp │ ├── cv_utils.h │ ├── cvpipeline.cpp │ ├── cvpipeline.h │ ├── cvpositionest.cpp │ ├── cvpositionest.h │ ├── cvui │ │ ├── cvui.h │ │ ├── cvui_base.h │ │ ├── cvui_button.h │ │ ├── cvui_imageframe.h │ │ └── impl │ │ │ ├── cvui_button.cpp │ │ │ ├── cvui_container.cpp │ │ │ └── cvui_imageframe.cpp │ ├── dev_conf.h │ ├── keyboard_emu │ │ ├── keyboard_emu.cpp │ │ ├── keyboard_emu.h │ │ ├── layout_provider.cpp │ │ └── layout_provider.h │ ├── main.cpp │ ├── model_selector.cpp │ ├── model_selector.h │ ├── port │ │ ├── common │ │ │ ├── PowerVideoCapture.h │ │ │ ├── keyinjector.h │ │ │ ├── platform_language.h │ │ │ ├── productid.h │ │ │ └── updatechecker.h │ │ ├── linux │ │ │ ├── inc │ │ │ │ └── arch_inc.h │ │ │ ├── keyinjector_linux.cpp │ │ │ ├── platform_language_linux.cpp │ │ │ ├── powervideocap_linux.cpp │ │ │ ├── productid_linux.cpp │ │ │ └── updatechecker_linux.cpp │ │ ├── macos │ │ │ ├── 3rd │ │ │ │ ├── UVCCameraControl.h │ │ │ │ ├── UVCCameraControl.m │ │ │ │ └── opencv │ │ │ │ │ ├── cap_qtkit.h │ │ │ │ │ └── cap_qtkit.mm │ │ │ ├── inc │ │ │ │ └── arch_inc.h │ │ │ ├── keyinjector_macOS.cpp │ │ │ ├── platform_language_macOS.cpp │ │ │ ├── powervideocap_macOS.mm │ │ │ ├── productid_macOS.cpp │ │ │ └── updatechecker_macOS.mm │ │ └── win32 │ │ │ ├── 3rd │ │ │ └── opencv │ │ │ │ ├── cap_dshow.cpp │ │ │ │ └── cap_dshow.h │ │ │ ├── inc │ │ │ └── arch_inc.h │ │ │ ├── keyinjector_win32.cpp │ │ │ ├── platform_language_win32.cpp │ │ │ ├── powervideocap_win32.cpp │ │ │ ├── productid_win32.cpp │ │ │ └── updatechecker_win32.cpp │ ├── resource_mgr.cpp │ ├── resource_mgr.h │ ├── sketchpad │ │ ├── sketch_pad.cpp │ │ └── sketch_pad.h │ ├── utils.cpp │ └── utils.h ├── test │ ├── SConstruct │ ├── test_atspi.cpp │ ├── test_keycode.cpp │ ├── test_productid.cpp │ ├── test_v4l2.cpp │ └── test_xtest.cpp └── xcode │ ├── LaserKeyborad.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── LaserKeyborad │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── rplogo16x16.png │ │ │ └── rplogo32x32.png │ │ └── logo.imageset │ │ │ ├── Contents.json │ │ │ └── logo.png │ ├── LaserKeyborad-Info.plist │ ├── LaserKeyborad-Prefix.pch │ ├── en.lproj │ │ ├── Credits.rtf │ │ ├── InfoPlist.strings │ │ └── MainMenu.xib │ ├── laserkbdAppDelegate.h │ ├── laserkbdAppDelegate.m │ └── main.mm │ ├── logo.png │ └── rplogo.icns └── sdkpack ├── README.txt ├── license_and_copyrights ├── OpenCV │ ├── README │ └── license.txt └── libusbX │ ├── AUTHORS │ ├── COPYING │ └── README └── ref ├── dll ├── libusb-1.0.dll ├── opencv_calib3d246.dll ├── opencv_contrib246.dll ├── opencv_core246.dll ├── opencv_features2d246.dll ├── opencv_ffmpeg246.dll ├── opencv_flann246.dll ├── opencv_gpu246.dll ├── opencv_highgui246.dll ├── opencv_imgproc246.dll ├── opencv_legacy246.dll ├── opencv_ml246.dll ├── opencv_nonfree246.dll ├── opencv_objdetect246.dll ├── opencv_stitching246.dll ├── opencv_superres246.dll ├── opencv_ts246.dll ├── opencv_video246.dll └── opencv_videostab246.dll ├── dylib ├── libopencv_calib3d.2.3.dylib ├── libopencv_contrib.2.3.dylib ├── libopencv_core.2.3.dylib ├── libopencv_features2d.2.3.dylib ├── libopencv_flann.2.3.dylib ├── libopencv_gpu.2.3.dylib ├── libopencv_highgui.2.3.dylib ├── libopencv_imgproc.2.3.dylib ├── libopencv_legacy.2.3.dylib ├── libopencv_ml.2.3.dylib ├── libopencv_objdetect.2.3.dylib ├── libopencv_video.2.3.dylib └── libpng15.15.dylib ├── inc ├── libusb │ └── libusb.h └── opencv_new │ ├── opencv │ ├── cv.h │ ├── cv.hpp │ ├── cvaux.h │ ├── cvaux.hpp │ ├── cvwimage.h │ ├── cxcore.h │ ├── cxcore.hpp │ ├── cxeigen.hpp │ ├── cxmisc.h │ ├── highgui.h │ └── ml.h │ └── opencv2 │ ├── calib3d │ └── calib3d.hpp │ ├── contrib │ ├── contrib.hpp │ └── retina.hpp │ ├── core │ ├── core.hpp │ ├── core_c.h │ ├── eigen.hpp │ ├── internal.hpp │ ├── mat.hpp │ ├── operations.hpp │ ├── types_c.h │ ├── version.hpp │ └── wimage.hpp │ ├── features2d │ └── features2d.hpp │ ├── flann │ ├── all_indices.h │ ├── allocator.h │ ├── any.h │ ├── autotuned_index.h │ ├── composite_index.h │ ├── config.h │ ├── defines.h │ ├── dist.h │ ├── dummy.h │ ├── dynamic_bitset.h │ ├── flann.hpp │ ├── flann_base.hpp │ ├── general.h │ ├── ground_truth.h │ ├── hdf5.h │ ├── heap.h │ ├── hierarchical_clustering_index.h │ ├── index_testing.h │ ├── kdtree_index.h │ ├── kdtree_single_index.h │ ├── kmeans_index.h │ ├── linear_index.h │ ├── logger.h │ ├── lsh_index.h │ ├── lsh_table.h │ ├── matrix.h │ ├── miniflann.hpp │ ├── nn_index.h │ ├── object_factory.h │ ├── params.h │ ├── random.h │ ├── result_set.h │ ├── sampling.h │ ├── saving.h │ ├── simplex_downhill.h │ └── timer.h │ ├── gpu │ ├── NCV.hpp │ ├── NPP_staging.hpp │ ├── devmem2d.hpp │ ├── gpu.hpp │ ├── gpumat.hpp │ ├── matrix_operations.hpp │ └── stream_accessor.hpp │ ├── highgui │ ├── highgui.hpp │ └── highgui_c.h │ ├── imgproc │ ├── imgproc.hpp │ ├── imgproc_c.h │ └── types_c.h │ ├── legacy │ ├── blobtrack.hpp │ ├── compat.hpp │ ├── legacy.hpp │ └── streams.hpp │ ├── ml │ └── ml.hpp │ ├── objdetect │ └── objdetect.hpp │ ├── opencv.hpp │ └── video │ ├── background_segm.hpp │ ├── tracking.hpp │ └── video.hpp └── lib └── win32 └── x86 ├── libusb-1.0.lib ├── opencv_calib3d246.lib ├── opencv_contrib246.lib ├── opencv_core246.lib ├── opencv_features2d246.lib ├── opencv_flann246.lib ├── opencv_gpu246.lib ├── opencv_haartraining_engined.lib ├── opencv_highgui246.lib ├── opencv_imgproc246.lib ├── opencv_legacy246.lib ├── opencv_ml246.lib ├── opencv_nonfree246.lib ├── opencv_objdetect246.lib ├── opencv_photo246.lib ├── opencv_stitching246.lib ├── opencv_superres246.lib ├── opencv_ts246.lib ├── opencv_video246.lib └── opencv_videostab246.lib /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | 6 | 7 | # Compiled Static libraries 8 | *.lai 9 | *.la 10 | *.a 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | laserkbd 2 | ======== 3 | 4 | A Low Cost Laser Projection Keyboard designed by RoboPeak 5 | 6 | Full Source Code Release 7 | 8 | NOTE: all the source code is licensed under LGPL. 9 | No warranty for the sourcecode and the related software. 10 | 11 | ## dependence 12 | 13 | ### Ubuntu 14 | ``` 15 | sudo apt-get install libopencv-dev libx11-dev libv4l-dev libcurl4-openssl-dev \ 16 | libkdtree++-dev libjsoncpp-dev libusb-1.0-0-dev scons 17 | ``` 18 | 19 | ### ArchLinux 20 | ``` 21 | sudo pacman -Syu 22 | sudo pacman -S opencv libx11 v4l-utils curl jsoncpp libusbx scons 23 | ``` 24 | install libkdtree++ 25 | ``` 26 | git clone git://git.debian.org/git/libkdtree/libkdtree.git 27 | cd libkdtree 28 | ./autogen.sh 29 | ./configure --prefix=/usr 30 | make 31 | sudo make install 32 | ``` 33 | 34 | ## build 35 | ``` 36 | cd laser_kbd_neo 37 | scons 38 | ``` 39 | * different keyboard layout 40 | https://github.com/xiangzhai/laserkbd/issues/2 41 | ``` 42 | vi ./laser_kbd_neo/SConstruct 43 | feature_pattern_type_2 = 0 44 | ``` 45 | 46 | ## debug 47 | ``` 48 | gdb ./laser_kbd_neo/laser_kbd 49 | r 50 | ``` 51 | 52 | if segfault 53 | ``` 54 | bt 55 | ``` 56 | 57 | set breakpoint, for example: 58 | ``` 59 | b ./laser_kbd_neo/src/port/linux/powervideocap_linux.cpp:41 60 | ``` 61 | 62 | ## video device whether or not support exposure 63 | ``` 64 | v4l2-ctl -w --all | grep exposure 65 | ``` 66 | 67 | ## keycode 68 | ``` 69 | sudo pacman -S xorg-xev 70 | xev 71 | ``` 72 | hip keyboard too see the keycode 73 | -------------------------------------------------------------------------------- /README.zh_CN.md: -------------------------------------------------------------------------------- 1 | laserkbd 2 | ======== 3 | 4 | RoboPeak设计的低成本激光键盘 5 | 6 | 公开发布了所有的源代码。 7 | 8 | 注:所有的源代码遵循LGPL。 9 | 10 | ## 依赖 11 | 12 | ### Ubuntu 13 | ``` 14 | sudo apt-get install libopencv-dev libx11-dev libv4l-dev libcurl4-openssl-dev \ 15 | libkdtree++-dev libjsoncpp-dev libusb-1.0-0-dev scons 16 | ``` 17 | 18 | ### ArchLinux 19 | ``` 20 | sudo pacman -Syu 21 | sudo pacman -S opencv libx11 v4l-utils curl jsoncpp libusbx scons 22 | ``` 23 | 手动安装libkdtree++ 24 | ``` 25 | git clone git://git.debian.org/git/libkdtree/libkdtree.git 26 | cd libkdtree 27 | ./autogen.sh 28 | ./configure --prefix=/usr 29 | make 30 | sudo make install 31 | ``` 32 | 33 | ## 编译 34 | ``` 35 | cd laser_kbd_neo 36 | scons 37 | ``` 38 | * 不同的键盘布局 39 | https://github.com/xiangzhai/laserkbd/issues/2 40 | ``` 41 | vi ./laser_kbd_neo/SConstruct 42 | feature_pattern_type_2 = 0 43 | ``` 44 | 45 | ## 调试 46 | ``` 47 | gdb ./laser_kbd_neo/laser_kbd 48 | r 49 | ``` 50 | 51 | 如果遇到段错误 52 | ``` 53 | bt 54 | ``` 55 | 56 | 例如设置断点 57 | ``` 58 | b ./laser_kbd_neo/src/port/linux/powervideocap_linux.cpp:41 59 | ``` 60 | 61 | ## 视频设备是否支持曝光 62 | ``` 63 | v4l2-ctl -w --all | grep exposure 64 | ``` 65 | 66 | ## keycode 67 | ``` 68 | sudo pacman -S xorg-xev 69 | xev 70 | ``` 71 | 敲击键盘查看keycode 72 | -------------------------------------------------------------------------------- /laser_kbd_neo/SConstruct: -------------------------------------------------------------------------------- 1 | debug = 0 2 | feature_pattern_type_2 = 1 3 | 4 | def print_config(msg, two_dee_iterable): 5 | # this function is handy and can be used for other configuration-printing tasks 6 | print 7 | print msg 8 | print 9 | for key, val in two_dee_iterable: 10 | print " %-20s %s" % (key, val) 11 | print 12 | 13 | def config_h_build(target, source, env): 14 | config_h_defines = { 15 | # this is where you put all of your custom configuration values 16 | "debug": debug, # this is an int. 1 for true, 0 for false 17 | "feature_pattern_type_2": feature_pattern_type_2, 18 | } 19 | 20 | print_config("Generating config.h with the following settings:", 21 | config_h_defines.items()) 22 | 23 | for a_target, a_source in zip(target, source): 24 | config_h = file(str(a_target), "w") 25 | config_h_in = file(str(a_source), "r") 26 | config_h.write(config_h_in.read() % config_h_defines) 27 | config_h_in.close() 28 | config_h.close() 29 | 30 | env = Environment(CCFLAGS='-g') 31 | env['CPPPATH'] = ['/usr/include/jsoncpp', './src', './src/cvui'] 32 | env['LIBS'] = ['libv4l2', 'libpthread', 'libjsoncpp'] 33 | env.ParseConfig('pkg-config --cflags --libs opencv x11 xtst libusb-1.0 libcurl') 34 | env.AlwaysBuild(env.Command('./src/config.h', './src/config.h.in', config_h_build)) 35 | 36 | env.Program('laser_kbd', ['./src/main.cpp', 37 | './src/port/linux/powervideocap_linux.cpp', 38 | './src/port/linux/updatechecker_linux.cpp', 39 | './src/port/linux/productid_linux.cpp', 40 | './src/keyboard_emu/keyboard_emu.cpp', 41 | './src/port/linux/keyinjector_linux.cpp', 42 | './src/keyboard_emu/layout_provider.cpp', 43 | './src/cv_utils.cpp', 44 | './src/cameraundistortor.cpp', 45 | './src/cvpositionest.cpp', 46 | './src/cvui/impl/cvui_container.cpp', 47 | './src/cvui/impl/cvui_imageframe.cpp', 48 | './src/cvui/impl/cvui_button.cpp', 49 | './src/sketchpad/sketch_pad.cpp', 50 | './src/cvpipeline.cpp', 51 | './src/resource_mgr.cpp', 52 | './src/port/linux/platform_language_linux.cpp', 53 | './src/config_mgr.cpp', 54 | './src/utils.cpp', 55 | './src/blobfinder.cpp', 56 | './src/camera_selector.cpp', 57 | './src/model_selector.cpp', 58 | ]) 59 | -------------------------------------------------------------------------------- /laser_kbd_neo/laser_kbd.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/laser_kbd.rc -------------------------------------------------------------------------------- /laser_kbd_neo/laser_kbd.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "laser_kbd", "laser_kbd.vcxproj", "{FAA1ED63-0CBD-4B01-B381-0D9A833BF36C}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {FAA1ED63-0CBD-4B01-B381-0D9A833BF36C}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {FAA1ED63-0CBD-4B01-B381-0D9A833BF36C}.Debug|Win32.Build.0 = Debug|Win32 14 | {FAA1ED63-0CBD-4B01-B381-0D9A833BF36C}.Release|Win32.ActiveCfg = Release|Win32 15 | {FAA1ED63-0CBD-4B01-B381-0D9A833BF36C}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/curl-7.29.0.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/ref/curl-7.29.0/curl-7.29.0.7z -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = curl 2 | 3 | EXTRA_DIST = README 4 | 5 | AUTOMAKE_OPTIONS = foreign no-dependencies 6 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/README: -------------------------------------------------------------------------------- 1 | _ _ ____ _ 2 | ___| | | | _ \| | 3 | / __| | | | |_) | | 4 | | (__| |_| | _ <| |___ 5 | \___|\___/|_| \_\_____| 6 | 7 | Include files for libcurl, external users. 8 | 9 | They're all placed in the curl subdirectory here for better fit in any kind 10 | of environment. You must include files from here using... 11 | 12 | #include 13 | 14 | ... style and point the compiler's include path to the directory holding the 15 | curl subdirectory. It makes it more likely to survive future modifications. 16 | 17 | NOTE FOR LIBCURL HACKERS 18 | 19 | The following notes apply to libcurl version 7.19.0 and later. 20 | 21 | * The distributed curl/curlbuild.h file is only intended to be used on systems 22 | which can not run the also distributed configure script. 23 | 24 | * The distributed curlbuild.h file is generated as a copy of curlbuild.h.dist 25 | when the libcurl source code distribution archive file is originally created. 26 | 27 | * If you check out from git on a non-configure platform, you must run the 28 | appropriate buildconf* script to set up curlbuild.h and other local files 29 | before being able of compiling the library. 30 | 31 | * On systems capable of running the configure script, the configure process 32 | will overwrite the distributed include/curl/curlbuild.h file with one that 33 | is suitable and specific to the library being configured and built, which 34 | is generated from the include/curl/curlbuild.h.in template file. 35 | 36 | * If you intend to distribute an already compiled libcurl library you _MUST_ 37 | also distribute along with it the generated curl/curlbuild.h which has been 38 | used to compile it. Otherwise the library will be of no use for the users of 39 | the library that you have built. It is _your_ responsibility to provide this 40 | file. No one at the cURL project can know how you have built the library. 41 | 42 | * File curl/curlbuild.h includes platform and configuration dependent info, 43 | and must not be modified by anyone. Configure script generates it for you. 44 | 45 | * We cannot assume anything else but very basic compiler features being 46 | present. While libcurl requires an ANSI C compiler to build, some of the 47 | earlier ANSI compilers clearly can't deal with some preprocessor operators. 48 | 49 | * Newlines must remain unix-style for older compilers' sake. 50 | 51 | * Comments must be written in the old-style /* unnested C-fashion */ 52 | 53 | To figure out how to do good and portable checks for features, operating 54 | systems or specific hardwarare, a very good resource is Bjorn Reese's 55 | collection at http://predef.sf.net/ 56 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/curl/Makefile.am: -------------------------------------------------------------------------------- 1 | #*************************************************************************** 2 | # _ _ ____ _ 3 | # Project ___| | | | _ \| | 4 | # / __| | | | |_) | | 5 | # | (__| |_| | _ <| |___ 6 | # \___|\___/|_| \_\_____| 7 | # 8 | # Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. 9 | # 10 | # This software is licensed as described in the file COPYING, which 11 | # you should have received as part of this distribution. The terms 12 | # are also available at http://curl.haxx.se/docs/copyright.html. 13 | # 14 | # You may opt to use, copy, modify, merge, publish, distribute and/or sell 15 | # copies of the Software, and permit persons to whom the Software is 16 | # furnished to do so, under the terms of the COPYING file. 17 | # 18 | # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19 | # KIND, either express or implied. 20 | # 21 | ########################################################################### 22 | pkginclude_HEADERS = \ 23 | curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \ 24 | typecheck-gcc.h curlbuild.h curlrules.h 25 | 26 | pkgincludedir= $(includedir)/curl 27 | 28 | # curlbuild.h does not exist in the git tree. When the original libcurl 29 | # source code distribution archive file is created, curlbuild.h.dist is 30 | # renamed to curlbuild.h and included in the tarball so that it can be 31 | # used directly on non-configure systems. 32 | # 33 | # The distributed curlbuild.h will be overwritten on configure systems 34 | # when the configure script runs, with one that is suitable and specific 35 | # to the library being configured and built. 36 | # 37 | # curlbuild.h.in is the distributed template file from which the configure 38 | # script creates curlbuild.h at library configuration time, overwiting the 39 | # one included in the distribution archive. 40 | # 41 | # curlbuild.h.dist is not included in the source code distribution archive. 42 | 43 | EXTRA_DIST = curlbuild.h.in 44 | 45 | DISTCLEANFILES = curlbuild.h 46 | 47 | checksrc: 48 | @@PERL@ $(top_srcdir)/lib/checksrc.pl -Wcurlbuild.h -D$(top_srcdir)/include/curl $(pkginclude_HEADERS) $(EXTRA_DIST) 49 | 50 | if CURLDEBUG 51 | # for debug builds, we scan the sources on all regular make invokes 52 | all-local: checksrc 53 | endif 54 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/curl/curlver.h: -------------------------------------------------------------------------------- 1 | #ifndef __CURL_CURLVER_H 2 | #define __CURL_CURLVER_H 3 | /*************************************************************************** 4 | * _ _ ____ _ 5 | * Project ___| | | | _ \| | 6 | * / __| | | | |_) | | 7 | * | (__| |_| | _ <| |___ 8 | * \___|\___/|_| \_\_____| 9 | * 10 | * Copyright (C) 1998 - 2013, Daniel Stenberg, , et al. 11 | * 12 | * This software is licensed as described in the file COPYING, which 13 | * you should have received as part of this distribution. The terms 14 | * are also available at http://curl.haxx.se/docs/copyright.html. 15 | * 16 | * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 | * copies of the Software, and permit persons to whom the Software is 18 | * furnished to do so, under the terms of the COPYING file. 19 | * 20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 | * KIND, either express or implied. 22 | * 23 | ***************************************************************************/ 24 | 25 | /* This header file contains nothing but libcurl version info, generated by 26 | a script at release-time. This was made its own header file in 7.11.2 */ 27 | 28 | /* This is the global package copyright */ 29 | #define LIBCURL_COPYRIGHT "1996 - 2013 Daniel Stenberg, ." 30 | 31 | /* This is the version number of the libcurl package from which this header 32 | file origins: */ 33 | #define LIBCURL_VERSION "7.29.0" 34 | 35 | /* The numeric version number is also available "in parts" by using these 36 | defines: */ 37 | #define LIBCURL_VERSION_MAJOR 7 38 | #define LIBCURL_VERSION_MINOR 29 39 | #define LIBCURL_VERSION_PATCH 0 40 | 41 | /* This is the numeric version of the libcurl version number, meant for easier 42 | parsing and comparions by programs. The LIBCURL_VERSION_NUM define will 43 | always follow this syntax: 44 | 45 | 0xXXYYZZ 46 | 47 | Where XX, YY and ZZ are the main version, release and patch numbers in 48 | hexadecimal (using 8 bits each). All three numbers are always represented 49 | using two digits. 1.2 would appear as "0x010200" while version 9.11.7 50 | appears as "0x090b07". 51 | 52 | This 6-digit (24 bits) hexadecimal number does not show pre-release number, 53 | and it is always a greater number in a more recent release. It makes 54 | comparisons with greater than and less than work. 55 | */ 56 | #define LIBCURL_VERSION_NUM 0x071d00 57 | 58 | /* 59 | * This is the date and time when the full source package was created. The 60 | * timestamp is not stored in git, as the timestamp is properly set in the 61 | * tarballs by the maketgz script. 62 | * 63 | * The format of the date should follow this template: 64 | * 65 | * "Mon Feb 12 11:35:33 UTC 2007" 66 | */ 67 | #define LIBCURL_TIMESTAMP "Wed Feb 6 10:13:08 UTC 2013" 68 | 69 | #endif /* __CURL_CURLVER_H */ 70 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/curl/mprintf.h: -------------------------------------------------------------------------------- 1 | #ifndef __CURL_MPRINTF_H 2 | #define __CURL_MPRINTF_H 3 | /*************************************************************************** 4 | * _ _ ____ _ 5 | * Project ___| | | | _ \| | 6 | * / __| | | | |_) | | 7 | * | (__| |_| | _ <| |___ 8 | * \___|\___/|_| \_\_____| 9 | * 10 | * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. 11 | * 12 | * This software is licensed as described in the file COPYING, which 13 | * you should have received as part of this distribution. The terms 14 | * are also available at http://curl.haxx.se/docs/copyright.html. 15 | * 16 | * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 | * copies of the Software, and permit persons to whom the Software is 18 | * furnished to do so, under the terms of the COPYING file. 19 | * 20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 | * KIND, either express or implied. 22 | * 23 | ***************************************************************************/ 24 | 25 | #include 26 | #include /* needed for FILE */ 27 | 28 | #include "curl.h" 29 | 30 | #ifdef __cplusplus 31 | extern "C" { 32 | #endif 33 | 34 | CURL_EXTERN int curl_mprintf(const char *format, ...); 35 | CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...); 36 | CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...); 37 | CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength, 38 | const char *format, ...); 39 | CURL_EXTERN int curl_mvprintf(const char *format, va_list args); 40 | CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args); 41 | CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args); 42 | CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength, 43 | const char *format, va_list args); 44 | CURL_EXTERN char *curl_maprintf(const char *format, ...); 45 | CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args); 46 | 47 | #ifdef _MPRINTF_REPLACE 48 | # undef printf 49 | # undef fprintf 50 | # undef sprintf 51 | # undef vsprintf 52 | # undef snprintf 53 | # undef vprintf 54 | # undef vfprintf 55 | # undef vsnprintf 56 | # undef aprintf 57 | # undef vaprintf 58 | # define printf curl_mprintf 59 | # define fprintf curl_mfprintf 60 | #ifdef CURLDEBUG 61 | /* When built with CURLDEBUG we define away the sprintf() functions since we 62 | don't want internal code to be using them */ 63 | # define sprintf sprintf_was_used 64 | # define vsprintf vsprintf_was_used 65 | #else 66 | # define sprintf curl_msprintf 67 | # define vsprintf curl_mvsprintf 68 | #endif 69 | # define snprintf curl_msnprintf 70 | # define vprintf curl_mvprintf 71 | # define vfprintf curl_mvfprintf 72 | # define vsnprintf curl_mvsnprintf 73 | # define aprintf curl_maprintf 74 | # define vaprintf curl_mvaprintf 75 | #endif 76 | 77 | #ifdef __cplusplus 78 | } 79 | #endif 80 | 81 | #endif /* __CURL_MPRINTF_H */ 82 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/include/curl/stdcheaders.h: -------------------------------------------------------------------------------- 1 | #ifndef __STDC_HEADERS_H 2 | #define __STDC_HEADERS_H 3 | /*************************************************************************** 4 | * _ _ ____ _ 5 | * Project ___| | | | _ \| | 6 | * / __| | | | |_) | | 7 | * | (__| |_| | _ <| |___ 8 | * \___|\___/|_| \_\_____| 9 | * 10 | * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. 11 | * 12 | * This software is licensed as described in the file COPYING, which 13 | * you should have received as part of this distribution. The terms 14 | * are also available at http://curl.haxx.se/docs/copyright.html. 15 | * 16 | * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 | * copies of the Software, and permit persons to whom the Software is 18 | * furnished to do so, under the terms of the COPYING file. 19 | * 20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 | * KIND, either express or implied. 22 | * 23 | ***************************************************************************/ 24 | 25 | #include 26 | 27 | size_t fread (void *, size_t, size_t, FILE *); 28 | size_t fwrite (const void *, size_t, size_t, FILE *); 29 | 30 | int strcasecmp(const char *, const char *); 31 | int strncasecmp(const char *, const char *, size_t); 32 | 33 | #endif /* __STDC_HEADERS_H */ 34 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/curl-7.29.0/lib/LIB-Release/libcurl.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/ref/curl-7.29.0/lib/LIB-Release/libcurl.lib -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/include/json/autolink.h: -------------------------------------------------------------------------------- 1 | #ifndef JSON_AUTOLINK_H_INCLUDED 2 | # define JSON_AUTOLINK_H_INCLUDED 3 | 4 | # include "config.h" 5 | 6 | # ifdef JSON_IN_CPPTL 7 | # include 8 | # endif 9 | 10 | # if !defined(JSON_NO_AUTOLINK) && !defined(JSON_DLL_BUILD) && !defined(JSON_IN_CPPTL) 11 | # define CPPTL_AUTOLINK_NAME "json" 12 | # undef CPPTL_AUTOLINK_DLL 13 | # ifdef JSON_DLL 14 | # define CPPTL_AUTOLINK_DLL 15 | # endif 16 | # include "autolink.h" 17 | # endif 18 | 19 | #endif // JSON_AUTOLINK_H_INCLUDED 20 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/include/json/config.h: -------------------------------------------------------------------------------- 1 | #ifndef JSON_CONFIG_H_INCLUDED 2 | # define JSON_CONFIG_H_INCLUDED 3 | 4 | /// If defined, indicates that json library is embedded in CppTL library. 5 | //# define JSON_IN_CPPTL 1 6 | 7 | /// If defined, indicates that json may leverage CppTL library 8 | //# define JSON_USE_CPPTL 1 9 | /// If defined, indicates that cpptl vector based map should be used instead of std::map 10 | /// as Value container. 11 | //# define JSON_USE_CPPTL_SMALLMAP 1 12 | /// If defined, indicates that Json specific container should be used 13 | /// (hash table & simple deque container with customizable allocator). 14 | /// THIS FEATURE IS STILL EXPERIMENTAL! 15 | //# define JSON_VALUE_USE_INTERNAL_MAP 1 16 | /// Force usage of standard new/malloc based allocator instead of memory pool based allocator. 17 | /// The memory pools allocator used optimization (initializing Value and ValueInternalLink 18 | /// as if it was a POD) that may cause some validation tool to report errors. 19 | /// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined. 20 | //# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1 21 | 22 | /// If defined, indicates that Json use exception to report invalid type manipulation 23 | /// instead of C assert macro. 24 | # define JSON_USE_EXCEPTION 1 25 | 26 | # ifdef JSON_IN_CPPTL 27 | # include 28 | # ifndef JSON_USE_CPPTL 29 | # define JSON_USE_CPPTL 1 30 | # endif 31 | # endif 32 | 33 | # ifdef JSON_IN_CPPTL 34 | # define JSON_API CPPTL_API 35 | # elif defined(JSON_DLL_BUILD) 36 | # define JSON_API __declspec(dllexport) 37 | # elif defined(JSON_DLL) 38 | # define JSON_API __declspec(dllimport) 39 | # else 40 | # define JSON_API 41 | # endif 42 | 43 | #endif // JSON_CONFIG_H_INCLUDED 44 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/include/json/features.h: -------------------------------------------------------------------------------- 1 | #ifndef CPPTL_JSON_FEATURES_H_INCLUDED 2 | # define CPPTL_JSON_FEATURES_H_INCLUDED 3 | 4 | # include "forwards.h" 5 | 6 | namespace Json { 7 | 8 | /** \brief Configuration passed to reader and writer. 9 | * This configuration object can be used to force the Reader or Writer 10 | * to behave in a standard conforming way. 11 | */ 12 | class JSON_API Features 13 | { 14 | public: 15 | /** \brief A configuration that allows all features and assumes all strings are UTF-8. 16 | * - C & C++ comments are allowed 17 | * - Root object can be any JSON value 18 | * - Assumes Value strings are encoded in UTF-8 19 | */ 20 | static Features all(); 21 | 22 | /** \brief A configuration that is strictly compatible with the JSON specification. 23 | * - Comments are forbidden. 24 | * - Root object must be either an array or an object value. 25 | * - Assumes Value strings are encoded in UTF-8 26 | */ 27 | static Features strictMode(); 28 | 29 | /** \brief Initialize the configuration like JsonConfig::allFeatures; 30 | */ 31 | Features(); 32 | 33 | /// \c true if comments are allowed. Default: \c true. 34 | bool allowComments_; 35 | 36 | /// \c true if root must be either an array or an object value. Default: \c false. 37 | bool strictRoot_; 38 | }; 39 | 40 | } // namespace Json 41 | 42 | #endif // CPPTL_JSON_FEATURES_H_INCLUDED 43 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/include/json/forwards.h: -------------------------------------------------------------------------------- 1 | #ifndef JSON_FORWARDS_H_INCLUDED 2 | # define JSON_FORWARDS_H_INCLUDED 3 | 4 | # include "config.h" 5 | 6 | namespace Json { 7 | 8 | // writer.h 9 | class FastWriter; 10 | class StyledWriter; 11 | 12 | // reader.h 13 | class Reader; 14 | 15 | // features.h 16 | class Features; 17 | 18 | // value.h 19 | typedef int Int; 20 | typedef unsigned int UInt; 21 | class StaticString; 22 | class Path; 23 | class PathArgument; 24 | class Value; 25 | class ValueIteratorBase; 26 | class ValueIterator; 27 | class ValueConstIterator; 28 | #ifdef JSON_VALUE_USE_INTERNAL_MAP 29 | class ValueAllocator; 30 | class ValueMapAllocator; 31 | class ValueInternalLink; 32 | class ValueInternalArray; 33 | class ValueInternalMap; 34 | #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP 35 | 36 | } // namespace Json 37 | 38 | 39 | #endif // JSON_FORWARDS_H_INCLUDED 40 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/include/json/json.h: -------------------------------------------------------------------------------- 1 | #ifndef JSON_JSON_H_INCLUDED 2 | # define JSON_JSON_H_INCLUDED 3 | 4 | # include "autolink.h" 5 | # include "value.h" 6 | # include "reader.h" 7 | # include "writer.h" 8 | # include "features.h" 9 | 10 | #endif // JSON_JSON_H_INCLUDED 11 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/jsoncpp-src-0.5.0.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/ref/jsoncpp-src-0.5.0/jsoncpp-src-0.5.0.7z -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/src/jsontestrunner/sconscript: -------------------------------------------------------------------------------- 1 | Import( 'env_testing buildJSONTests' ) 2 | 3 | buildJSONTests( env_testing, Split( """ 4 | main.cpp 5 | """ ), 6 | 'jsontestrunner' ) 7 | 8 | # For 'check' to work, 'libs' must be built first. 9 | env_testing.Depends('jsontestrunner', '#libs') 10 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/src/lib_json/sconscript: -------------------------------------------------------------------------------- 1 | Import( 'env buildLibrary' ) 2 | 3 | buildLibrary( env, Split( """ 4 | json_reader.cpp 5 | json_value.cpp 6 | json_writer.cpp 7 | """ ), 8 | 'json' ) 9 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/jsoncpp-src-0.5.0/src/test_lib_json/sconscript: -------------------------------------------------------------------------------- 1 | Import( 'env_testing buildUnitTests' ) 2 | 3 | buildUnitTests( env_testing, Split( """ 4 | main.cpp 5 | jsontest.cpp 6 | """ ), 7 | 'test_lib_json' ) 8 | 9 | # For 'check' to work, 'libs' must be built first. 10 | env_testing.Depends('test_lib_json', '#libs') 11 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/AUTHORS: -------------------------------------------------------------------------------- 1 | Martin F. Krafft 2 | Paul Harris 3 | Sylvain Bougerel 4 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project (libkdtree CXX) 2 | cmake_minimum_required (VERSION 2.6.0) 3 | 4 | option (BUILD_PYTHON_BINDINGS "Build Python bindings (requires SWIG)") 5 | 6 | if (WIN32) 7 | 8 | # Maximum warning level 9 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") 10 | 11 | # Be strict about warnings... make them errors 12 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") 13 | 14 | # Detect 64-bit portability issues 15 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wp64") 16 | 17 | else (WIN32) 18 | 19 | # Maximum warning level 20 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") 21 | 22 | # turn on debugging 23 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") 24 | 25 | endif (WIN32) 26 | 27 | if (BUILD_PYTHON_BINDINGS) 28 | add_subdirectory (python-bindings) 29 | endif (BUILD_PYTHON_BINDINGS) 30 | 31 | include_directories (${PROJECT_SOURCE_DIR}) 32 | 33 | add_subdirectory(examples) 34 | 35 | file (GLOB KDTREE_HEADERS kdtree++/*.hpp) 36 | install (FILES ${KDTREE_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) 37 | 38 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/Makefile.am: -------------------------------------------------------------------------------- 1 | nobase_include_HEADERS = \ 2 | kdtree++/allocator.hpp \ 3 | kdtree++/function.hpp \ 4 | kdtree++/iterator.hpp \ 5 | kdtree++/kdtree.hpp \ 6 | kdtree++/node.hpp \ 7 | kdtree++/region.hpp 8 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/NEWS: -------------------------------------------------------------------------------- 1 | libkdtree++ NEWS 2 | ================ 3 | 4 | 17 Nov 2008: 5 | Again, it's almost Christmas. Recently a whole lot of bug have been fixed in 6 | version 0.6.3 of the library. You can find a summary of the fixes in the 7 | Changelog. For short: 8 | - you can now assign an existing tree to another tree without an ugly bug if 9 | your tree required parameters for the accessor, 10 | - now you can finally use the reverse iterator, 11 | - find() and erase() work properly based on the location given in argument, 12 | - the project is compatible with MSVC2005 13 | - many more... 14 | 15 | 02 Dec 2007: 16 | It's Christmas, and libkdtree++ packs in more power for the find 17 | and find_nearest functions. Performance improvement should be 18 | carried on with other part of the interface in the coming months. 19 | 20 | As a result of these modification, KDTree definition has been a 21 | little altered. The new definition includes a template for a 22 | distance calculator. This functor by default calcultes the square 23 | of th difference between two elements returned by the accessor. 24 | 25 | 29 Sep 2007: 26 | Sylvain Bougerel spent some time cleaning up the code and build 27 | infrastructure of the code from Sourceforge, and I imported the 28 | results of his work to a git repository on git.debian.org today. 29 | 30 | http://git.debian.org/?p=libkdtree/libkdtree.git;a=summary 31 | 32 | Martin F. Krafft 33 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/ref/libkdtree++_0.7.0/README -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/README.Python: -------------------------------------------------------------------------------- 1 | Stand-alone Python bindings, contributed by Willi Richert 2 | 3 | To make them: 4 | $ cd python-bindings 5 | $ make 6 | You will find then two files kdtree.py _kdtree.so in the current directory. 7 | These are all you need to use libkdtree++. 8 | Please examine the test files to get a grip to the usage. 9 | 10 | To run the tests, type: 11 | python py-kdtree_test.py 12 | 13 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/TODO: -------------------------------------------------------------------------------- 1 | libkdtree++ TODO list 2 | ===================== 3 | 4 | - DOCUMENTATION 5 | - automated unit testing 6 | - performance improvement 7 | - keep tree balanced in insert() and erase(). 8 | - erase(range) 9 | - add swap() to allow vectors of KDTree to be sorted 10 | - add policies/traits 11 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | 3 | #libtoolize --force &> /dev/null 4 | aclocal 5 | autoheader 6 | automake --add-missing --no-force 7 | autoconf 8 | # To be run by the library users 9 | #exec ./configure $@ 10 | 11 | # COPYRIGHT -- 12 | # 13 | # This file is part of libkdtree++, a C++ template KD-Tree sorting container. 14 | # libkdtree++ is (c) 2004-2007 Martin F. Krafft 15 | # and distributed under the terms of the Artistic License 2.0. 16 | # See the ./COPYING file in the source tree root for more information. 17 | # 18 | # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 19 | # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES 20 | # OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 21 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_INTTYPES_H 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_MEMORY_H 8 | 9 | /* Define to 1 if you have the `pow' function. */ 10 | #undef HAVE_POW 11 | 12 | /* Define to 1 if the system has the type `ptrdiff_t size_t'. */ 13 | #undef HAVE_PTRDIFF_T_SIZE_T 14 | 15 | /* Define to 1 if you have the `sqrt' function. */ 16 | #undef HAVE_SQRT 17 | 18 | /* Define to 1 if stdbool.h conforms to C99. */ 19 | #undef HAVE_STDBOOL_H 20 | 21 | /* Define to 1 if you have the header file. */ 22 | #undef HAVE_STDINT_H 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_STDLIB_H 26 | 27 | /* Define to 1 if you have the header file. */ 28 | #undef HAVE_STRINGS_H 29 | 30 | /* Define to 1 if you have the header file. */ 31 | #undef HAVE_STRING_H 32 | 33 | /* Define to 1 if you have the header file. */ 34 | #undef HAVE_SYS_STAT_H 35 | 36 | /* Define to 1 if you have the header file. */ 37 | #undef HAVE_SYS_TYPES_H 38 | 39 | /* Define to 1 if you have the header file. */ 40 | #undef HAVE_UNISTD_H 41 | 42 | /* Define to 1 if the system has the type `_Bool'. */ 43 | #undef HAVE__BOOL 44 | 45 | /* Name of package */ 46 | #undef PACKAGE 47 | 48 | /* Define to the address where bug reports for this package should be sent. */ 49 | #undef PACKAGE_BUGREPORT 50 | 51 | /* Define to the full name of this package. */ 52 | #undef PACKAGE_NAME 53 | 54 | /* Define to the full name and version of this package. */ 55 | #undef PACKAGE_STRING 56 | 57 | /* Define to the one symbol short name of this package. */ 58 | #undef PACKAGE_TARNAME 59 | 60 | /* Define to the version of this package. */ 61 | #undef PACKAGE_VERSION 62 | 63 | /* Define to 1 if you have the ANSI C header files. */ 64 | #undef STDC_HEADERS 65 | 66 | /* Version number of package */ 67 | #undef VERSION 68 | 69 | /* Define to empty if `const' does not conform to ANSI C. */ 70 | #undef const 71 | 72 | /* Define to `__inline__' or `__inline' if that's what the C compiler 73 | calls it, or to nothing if 'inline' is not supported under any name. */ 74 | #ifndef __cplusplus 75 | #undef inline 76 | #endif 77 | 78 | /* Define to `unsigned int' if does not define. */ 79 | #undef size_t 80 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/configure.ac: -------------------------------------------------------------------------------- 1 | # -*- Autoconf -*- 2 | # Process this file with autoconf to produce a configure script. 3 | 4 | AC_PREREQ(2.61) 5 | AC_INIT([libkdtree++], [0.7.0], http://alioth.debian.org/projects/libkdtree/) 6 | AC_CONFIG_SRCDIR([kdtree++/kdtree.hpp]) 7 | AC_CONFIG_HEADER([config.h]) 8 | 9 | # Makefile initialization. 10 | AM_INIT_AUTOMAKE([-Wall -Werror]) 11 | 12 | # Checks for programs. 13 | AC_PROG_CXX 14 | 15 | # Checks for libraries. 16 | 17 | # Checks for header files. 18 | 19 | # Checks for typedefs, structures, and compiler characteristics. 20 | AC_HEADER_STDBOOL 21 | AC_C_CONST 22 | AC_C_INLINE 23 | AC_TYPE_SIZE_T 24 | AC_CHECK_TYPES([ptrdiff_t size_t]) 25 | 26 | # Checks for library functions. 27 | AC_CHECK_FUNCS([pow sqrt]) 28 | 29 | AC_CONFIG_FILES([Makefile]) 30 | AC_OUTPUT 31 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/doc/index.txt: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @mainpage libkdtree++: a C++ template container for KD-Tree sorting 4 | 5 | Author: Martin F. Krafft 6 | 7 | Source: 8 | http://git.debian.org/?p=libkdtree/libkdtree.git;a=summary 9 | 10 | git clone http://git.debian.org/git/libkdtree/libkdtree.git 11 | 12 | License: Artistic License 2.0 13 | 14 | Homepage: http://libkdtree.alioth.debian.org 15 | 16 | This library is still undocumented. If you would like to document it, please 17 | feel free (but use Doxygen). 18 | 19 | */ 20 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable (test_hayne test_hayne.cpp) 2 | add_executable (test_kdtree test_kdtree.cpp) 3 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/examples/Makefile: -------------------------------------------------------------------------------- 1 | all: test_kdtree test_hayne 2 | 3 | test_kdtree: test_kdtree.cpp 4 | g++ -I.. -Wall -ansi -pedantic -g -O2 -o test_kdtree test_kdtree.cpp 5 | 6 | test_hayne: test_hayne.cpp 7 | g++ -I.. -Wall -ansi -pedantic -g -O2 -o test_hayne test_hayne.cpp 8 | 9 | all_gcc: test_kdtree-gcc3.4 test_kdtree-gcc4.3 test_kdtree-gcc4.2 10 | 11 | test_kdtree-gcc3.4: test_kdtree.cpp 12 | g++-3.4 -I.. -Wall -ansi -pedantic -g -O2 -o test_kdtree-gcc3.4 test_kdtree.cpp 13 | 14 | test_kdtree-gcc4.2: test_kdtree.cpp 15 | g++-4.2 -I.. -Wall -ansi -pedantic -g -O2 -o test_kdtree-gcc4.2 test_kdtree.cpp 16 | 17 | test_kdtree-gcc4.3: test_kdtree.cpp 18 | g++-4.3 -I.. -Wall -ansi -pedantic -g -O2 -o test_kdtree-gcc4.3 test_kdtree.cpp 19 | 20 | clean: 21 | rm -f test_kdtree 22 | 23 | .PHONY: clean 24 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/kdtree++/allocator.hpp: -------------------------------------------------------------------------------- 1 | /** \file 2 | * Defines the allocator interface as used by the KDTree class. 3 | * 4 | * \author Martin F. Krafft 5 | */ 6 | 7 | #ifndef INCLUDE_KDTREE_ALLOCATOR_HPP 8 | #define INCLUDE_KDTREE_ALLOCATOR_HPP 9 | 10 | #include 11 | 12 | #include "node.hpp" 13 | 14 | namespace KDTree 15 | { 16 | 17 | template 18 | class _Alloc_base 19 | { 20 | public: 21 | typedef _Node<_Tp> _Node_; 22 | typedef typename _Node_::_Base_ptr _Base_ptr; 23 | typedef _Alloc allocator_type; 24 | 25 | _Alloc_base(allocator_type const& __A) 26 | : _M_node_allocator(__A) {} 27 | 28 | allocator_type 29 | get_allocator() const 30 | { 31 | return _M_node_allocator; 32 | } 33 | 34 | 35 | class NoLeakAlloc 36 | { 37 | _Alloc_base * base; 38 | _Node_ * new_node; 39 | 40 | public: 41 | NoLeakAlloc(_Alloc_base * b) : base(b), new_node(base->_M_allocate_node()) {} 42 | 43 | _Node_ * get() { return new_node; } 44 | void disconnect() { new_node = NULL; } 45 | 46 | ~NoLeakAlloc() { if (new_node) base->_M_deallocate_node(new_node); } 47 | }; 48 | 49 | 50 | protected: 51 | allocator_type _M_node_allocator; 52 | 53 | _Node_* 54 | _M_allocate_node() 55 | { 56 | return _M_node_allocator.allocate(1); 57 | } 58 | 59 | void 60 | _M_deallocate_node(_Node_* const __P) 61 | { 62 | return _M_node_allocator.deallocate(__P, 1); 63 | } 64 | 65 | void 66 | _M_construct_node(_Node_* __p, _Tp const __V = _Tp(), 67 | _Base_ptr const __PARENT = NULL, 68 | _Base_ptr const __LEFT = NULL, 69 | _Base_ptr const __RIGHT = NULL) 70 | { 71 | new (__p) _Node_(__V, __PARENT, __LEFT, __RIGHT); 72 | } 73 | 74 | void 75 | _M_destroy_node(_Node_* __p) 76 | { 77 | _M_node_allocator.destroy(__p); 78 | } 79 | }; 80 | 81 | } // namespace KDTree 82 | 83 | #endif // include guard 84 | 85 | /* COPYRIGHT -- 86 | * 87 | * This file is part of libkdtree++, a C++ template KD-Tree sorting container. 88 | * libkdtree++ is (c) 2004-2007 Martin F. Krafft 89 | * and Sylvain Bougerel distributed under the 90 | * terms of the Artistic License 2.0. See the ./COPYING file in the source tree 91 | * root for more information. 92 | * 93 | * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 94 | * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES 95 | * OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 96 | */ 97 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/kdtree++/function.hpp: -------------------------------------------------------------------------------- 1 | /** \file 2 | * Defines the various functors and interfaces used for KDTree. 3 | * 4 | * \author Martin F. Krafft 5 | * \author Sylvain Bougerel 6 | */ 7 | 8 | #ifndef INCLUDE_KDTREE_ACCESSOR_HPP 9 | #define INCLUDE_KDTREE_ACCESSOR_HPP 10 | 11 | #include 12 | 13 | namespace KDTree 14 | { 15 | template 16 | struct _Bracket_accessor 17 | { 18 | typedef typename _Val::value_type result_type; 19 | 20 | result_type 21 | operator()(_Val const& V, size_t const N) const 22 | { 23 | return V[N]; 24 | } 25 | }; 26 | 27 | template 28 | struct always_true 29 | { 30 | bool operator() (const _Tp& ) const { return true; } 31 | }; 32 | 33 | template 34 | struct squared_difference 35 | { 36 | typedef _Dist distance_type; 37 | 38 | distance_type 39 | operator() (const _Tp& __a, const _Tp& __b) const 40 | { 41 | distance_type d=__a - __b; 42 | return d*d; 43 | } 44 | }; 45 | 46 | template 47 | struct squared_difference_counted 48 | { 49 | typedef _Dist distance_type; 50 | 51 | squared_difference_counted() 52 | : _M_count(0) 53 | { } 54 | 55 | void reset () 56 | { _M_count = 0; } 57 | 58 | long& 59 | count () const 60 | { return _M_count; } 61 | 62 | distance_type 63 | operator() (const _Tp& __a, const _Tp& __b) const 64 | { 65 | distance_type d=__a - __b; 66 | ++_M_count; 67 | return d*d; 68 | } 69 | 70 | private: 71 | mutable long _M_count; 72 | }; 73 | 74 | } // namespace KDTree 75 | 76 | #endif // include guard 77 | 78 | /* COPYRIGHT -- 79 | * 80 | * This file is part of libkdtree++, a C++ template KD-Tree sorting container. 81 | * libkdtree++ is (c) 2004-2007 Martin F. Krafft 82 | * and Sylvain Bougerel distributed under the 83 | * terms of the Artistic License 2.0. See the ./COPYING file in the source tree 84 | * root for more information. 85 | * 86 | * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 87 | * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES 88 | * OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 89 | */ 90 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/pkgconfig/libkdtree++.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libkdtree++ 7 | Description: C++ template container implementation of kd-tree sorting. 8 | Version: @VERSION@ 9 | Libs: -L${libdir} 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/python-bindings/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package (SWIG REQUIRED) 2 | include (${SWIG_USE_FILE}) 3 | 4 | find_package (PythonLibs) 5 | include_directories (${PYTHON_INCLUDE_PATH}) 6 | 7 | include_directories (${CMAKE_CURRENT_SOURCE_DIR}) 8 | include_directories (${CMAKE_CURRENT_SOURCE_DIR}/..) 9 | 10 | # Build the _kdtree python module 11 | set_source_files_properties (py-kdtree.i PROPERTIES CPLUSPLUS ON) 12 | swig_add_module (kdtree python py-kdtree.i) 13 | swig_link_libraries (kdtree ${PYTHON_LIBRARIES}) 14 | 15 | # Copy the test file into the build dir 16 | install (FILES py-kdtree_test.py DESTINATION ${CMAKE_INSTALL_PREFIX}/python) 17 | install (FILES ${CMAKE_BINARY_DIR}/python-bindings/kdtree.py DESTINATION ${CMAKE_INSTALL_PREFIX}/python) 18 | install (FILES ${CMAKE_BINARY_DIR}/python-bindings/_kdtree.so DESTINATION ${CMAKE_INSTALL_PREFIX}/python) 19 | 20 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/python-bindings/Makefile: -------------------------------------------------------------------------------- 1 | 2 | INCLUDE_DIR=.. 3 | CXX=g++ 4 | 5 | # CPPFLAGS is used by the default rules. Using "override" and "+=" 6 | # allows the user to prepend things to CPPFLAGS on the command line. 7 | override CPPFLAGS += -I$(INCLUDE_DIR) -pedantic -Wno-long-long -Wall -ansi -pedantic 8 | # These options are set by the configure script. 9 | override CPPFLAGS += -DHAVE_CONFIG_H 10 | 11 | ifeq ($(MINUSG),1) 12 | override CPPFLAGS += -g 13 | else 14 | override CPPFLAGS += -O3 15 | endif 16 | 17 | ifeq ($(MINUSPG),1) 18 | override CPPFLAGS += -pg 19 | endif 20 | 21 | 22 | # swig bindings 23 | py-kdtree: _kdtree.so 24 | cp _kdtree.so kdtree.py ../../ 25 | 26 | py-kdtree_test: py-kdtree.hpp py-kdtree_test.cpp 27 | $(CXX) $(CPPFLAGS) -I/usr/include/python2.5 -c -o py-kdtree_test.o py-kdtree_test.cpp 28 | $(CXX) $(CPPFLAGS) $(LDLIBS) py-kdtree_test.o -o py-kdtree_test 29 | 30 | py-kdtree_wrap.cxx: py-kdtree.i py-kdtree.hpp 31 | swig -python -modern -c++ py-kdtree.i 32 | 33 | 34 | _kdtree.so: py-kdtree_wrap.cxx 35 | $(CXX) $(CPPFLAGS) -c py-kdtree_wrap.cxx -I/usr/include/python2.5 -I$(INCLUDE_DIR) 36 | $(CXX) $(CPPFLAGS) -shared py-kdtree_wrap.o $(LDLIBS) -o _kdtree.so 37 | 38 | clean: 39 | rm -f test_kdtree *.so py-kdtree_wrap.cxx *.o py-kdtree_test kdtree.py *.pyc 40 | 41 | .PHONY: clean 42 | 43 | -------------------------------------------------------------------------------- /laser_kbd_neo/ref/libkdtree++_0.7.0/python-bindings/py-kdtree_test.cpp: -------------------------------------------------------------------------------- 1 | #define KDTREE_DEFINE_OSTREAM_OPERATORS 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | #include "py-kdtree.hpp" 9 | 10 | int main() 11 | { 12 | 13 | 14 | KDTree_2Int t; 15 | 16 | RECORD_2il c0 = { {5, 4} }; t.add(c0); 17 | RECORD_2il c1 = { {4, 2} }; t.add(c1); 18 | RECORD_2il c2 = { {7, 6} }; t.add(c2); 19 | RECORD_2il c3 = { {2, 2} }; t.add(c3); 20 | RECORD_2il c4 = { {8, 0} }; t.add(c4); 21 | RECORD_2il c5 = { {5, 7} }; t.add(c5); 22 | RECORD_2il c6 = { {3, 3} }; t.add(c6); 23 | RECORD_2il c7 = { {9, 7} }; t.add(c7); 24 | RECORD_2il c8 = { {2, 2} }; t.add(c8); 25 | RECORD_2il c9 = { {2, 0} }; t.add(c9); 26 | 27 | std::cout << t.tree << std::endl; 28 | 29 | t.remove(c0); 30 | t.remove(c1); 31 | t.remove(c3); 32 | t.remove(c5); 33 | 34 | t.optimize(); 35 | 36 | std::cout << std::endl << t.tree << std::endl; 37 | 38 | int i=0; 39 | for (KDTREE_TYPE_2il::const_iterator iter=t.tree.begin(); iter!=t.tree.end(); ++iter, ++i); 40 | std::cout << "iterator walked through " << i << " nodes in total" << std::endl; 41 | if (i!=6) 42 | { 43 | std::cerr << "Error: does not tally with the expected number of nodes (6)" << std::endl; 44 | return 1; 45 | } 46 | i=0; 47 | for (KDTREE_TYPE_2il::const_reverse_iterator iter=t.tree.rbegin(); iter!=t.tree.rend(); ++iter, ++i); 48 | std::cout << "reverse_iterator walked through " << i << " nodes in total" << std::endl; 49 | if (i!=6) 50 | { 51 | std::cerr << "Error: does not tally with the expected number of nodes (6)" << std::endl; 52 | return 1; 53 | } 54 | 55 | RECORD_2il::point_t s = {5, 4}; 56 | std::vector v; 57 | unsigned int const RANGE = 3; 58 | 59 | size_t count = t.count_within_range(s, RANGE); 60 | std::cout << "counted " << count 61 | << " nodes within range " << RANGE << " of " << s << ".\n"; 62 | v = t.find_within_range(s, RANGE); 63 | 64 | std::cout << "found " << v.size() << " nodes within range " << RANGE 65 | << " of " << s << ":\n"; 66 | std::vector::const_iterator ci = v.begin(); 67 | for (; ci != v.end(); ++ci) 68 | std::cout << *ci << " "; 69 | std::cout << "\n" << std::endl; 70 | 71 | std::cout << "Nearest to " << s << ": " << 72 | t.find_nearest(s) << std::endl; 73 | 74 | RECORD_2il::point_t s2 = { 10, 10}; 75 | std::cout << "Nearest to " << s2 << ": " << 76 | t.find_nearest(s2) << std::endl; 77 | 78 | std::cout << std::endl; 79 | 80 | std::cout << t.tree << std::endl; 81 | 82 | return 0; 83 | } 84 | 85 | /* COPYRIGHT -- 86 | * 87 | * This file is part of libkdtree++, a C++ template KD-Tree sorting container. 88 | * libkdtree++ is (c) 2004-2007 Martin F. Krafft 89 | * and Sylvain Bougerel distributed under the 90 | * terms of the Artistic License 2.0. See the ./COPYING file in the source tree 91 | * root for more information. 92 | * 93 | * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 94 | * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES 95 | * OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 96 | */ 97 | -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.cancel.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.cancel.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.cancel.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.modelv1.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.modelv1.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.modelv1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.modelv1.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.modelv2.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.modelv2.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.modelv2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.modelv2.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.next.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.next.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.next.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.ok.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.ok.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.ok.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.prev.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.prev.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/btn.prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/btn.prev.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/logobtn.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/logobtn.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/logobtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/logobtn.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/common/main_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/common/main_banner.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.calibration.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.calibration.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.calibration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.calibration.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.keyboard.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.keyboard.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.keyboard.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.pad.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.pad.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.pad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.pad.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.update.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.update.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/btn.update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/btn.update.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/camsel.title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/camsel.title.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/coverpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/coverpage.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/cn/modelsel.title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/cn/modelsel.title.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.calibration.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.calibration.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.calibration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.calibration.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.keyboard.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.keyboard.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.keyboard.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.pad.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.pad.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.pad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.pad.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.update.active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.update.active.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/btn.update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/btn.update.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/camsel.title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/camsel.title.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/coverpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/coverpage.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/lang/en/modelsel.title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/lang/en/modelsel.title.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/logo.png -------------------------------------------------------------------------------- /laser_kbd_neo/res/prefined/DFRobot/intrinsics_cam.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3 5 | 3 6 |
d
7 | 8 | 504.53053 0. 345.94967 0. 504.66321 215.36292 0. 0. 1. 9 |
10 |
11 | -------------------------------------------------------------------------------- /laser_kbd_neo/res/prefined/DFRobot/intrinsics_distort.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | 5 6 |
d
7 | 8 | -4.582486e-001 1.543164e-001 -2.119867e-003 3.706877e-003 0.000000e+000
9 |
10 | -------------------------------------------------------------------------------- /laser_kbd_neo/res/prefined/DFRobot/v2_intrinsics_cam.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3 5 | 3 6 |
d
7 | 8 | 504.53053 0. 345.94967 0. 504.66321 215.36292 0. 0. 1. 9 |
10 |
11 | -------------------------------------------------------------------------------- /laser_kbd_neo/res/prefined/DFRobot/v2_intrinsics_distort.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | 5 6 |
d
7 | 8 | -3.6594065362506328e-001 1.7520058427405344e-001 9 | -1.4649439629183401e-004 -3.5197110501342793e-004 10 | -4.5360461538076192e-002
11 |
12 | -------------------------------------------------------------------------------- /laser_kbd_neo/res/rplogo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/rplogo.icns -------------------------------------------------------------------------------- /laser_kbd_neo/res/rplogo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/rplogo.ico -------------------------------------------------------------------------------- /laser_kbd_neo/res/sound/type.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/res/sound/type.wav -------------------------------------------------------------------------------- /laser_kbd_neo/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/resource.h -------------------------------------------------------------------------------- /laser_kbd_neo/src/blobfinder.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Blob Finder 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | 11 | #include "common.h" 12 | #include "cv_common.h" 13 | 14 | using namespace cv; 15 | #define CVCONTOUR_APPROX_LEVEL 1 // Approx.threshold - the bigger it is, the simpler is the boundary 16 | 17 | 18 | void FindBlobs(IplImage *src, std::vector& blobs, int minArea, int maxArea) 19 | { 20 | static CvMemStorage* mem_storage = NULL; 21 | static CvMoments myMoments; 22 | 23 | if( mem_storage==NULL ) mem_storage = cvCreateMemStorage(0); 24 | else cvClearMemStorage(mem_storage); 25 | 26 | blobs.clear(); 27 | 28 | CvSeq* contour_list = 0; 29 | cvFindContours(src,mem_storage,&contour_list, sizeof(CvContour), 30 | CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE); 31 | 32 | for (CvSeq* d = contour_list; d != NULL; d=d->h_next) 33 | { 34 | bool isHole = false; 35 | CvSeq* c = d; 36 | while (c != NULL) 37 | { 38 | double area = fabs(cvContourArea( c )); 39 | if( area >= minArea && area <= maxArea) 40 | { 41 | CvSeq* approx; 42 | 43 | //Polygonal approximation of the segmentation 44 | approx = cvApproxPoly(c,sizeof(CvContour),mem_storage,CV_POLY_APPROX_DP, CVCONTOUR_APPROX_LEVEL,0); 45 | 46 | float area = (float)cvContourArea( approx, CV_WHOLE_SEQ ); 47 | CvRect box = cvBoundingRect(approx); 48 | cvMoments( approx, &myMoments ); 49 | 50 | Blob_t obj( box, cvPoint(0,0), fabs(area)); 51 | 52 | if (myMoments.m10 > -DBL_EPSILON && myMoments.m10 < DBL_EPSILON) 53 | { 54 | obj._center.x = obj._box.x + obj._box.width/2; 55 | obj._center.y = obj._box.y + obj._box.height/2; 56 | } 57 | else 58 | { 59 | obj._center.x = myMoments.m10 / myMoments.m00; 60 | obj._center.y = myMoments.m01 / myMoments.m00; 61 | } 62 | blobs.push_back(obj); 63 | }//END if( area >= minArea) 64 | 65 | if (isHole) 66 | c = c->h_next;//one_hole->h_next is another_hole 67 | else 68 | c = c->v_next;//one_contour->h_next is one_hole 69 | isHole = true; 70 | }//END while (c != NULL) 71 | } 72 | } -------------------------------------------------------------------------------- /laser_kbd_neo/src/blobfinder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Blob Finder 3 | * By Shikai Chen (csk@live.com) 4 | * 5 | * Copyright 2009 - 2013 RoboPeak Team 6 | * http://www.robopeak.net 7 | */ 8 | 9 | #pragma once 10 | 11 | #include 12 | 13 | struct Blob_t 14 | { 15 | cv::Rect _box; 16 | cv::Point2f _center; 17 | float _area; 18 | 19 | Blob_t(const cv::Rect & box, const cv::Point2f & center, float area) 20 | : _box(box), _center(center), _area(area) {} 21 | 22 | Blob_t() 23 | : _box(0,0,0,0), _center(0,0), _area(0) 24 | {} 25 | }; 26 | 27 | void FindBlobs(IplImage *src, std::vector& blobs, int minArea, int maxArea); 28 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/camera_selector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Camera Selection UI 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #pragma once 13 | 14 | #include "cvui/cvui.h" 15 | 16 | class CameraSelector 17 | { 18 | public: 19 | CameraSelector(); 20 | ~CameraSelector(); 21 | 22 | void setPredefinedCamera(int camid, bool specified); 23 | 24 | int doModal(); 25 | 26 | protected: 27 | 28 | IplImage * windowImg; 29 | rp::cvui::RenderContainer uicontainer; 30 | 31 | 32 | rp::cvui::ImageFrame _ui_backimg; 33 | rp::cvui::Button _ui_leftbtn; 34 | rp::cvui::Button _ui_rightbtn; 35 | rp::cvui::Button _ui_okbtn; 36 | rp::cvui::Button _ui_cancelbtn; 37 | // static void s_onLeftButton( 38 | 39 | std::vector _cameralist; 40 | 41 | int _prefined_camid; 42 | int _working_flg; // 1-working 0-exit 43 | bool _camid_specified; 44 | 45 | void renderTxtContent(); 46 | static void s_onMouse(int mouse_event, int x, int y,int, void* pThis); 47 | 48 | static void s_onleftbtn(void * data, int button, int x, int y); 49 | static void s_onrightbtn(void * data, int button, int x, int y); 50 | 51 | static void s_on_okbtn(void * data, int button, int x, int y); 52 | static void s_on_cancelbtn(void * data, int button, int x, int y); 53 | 54 | 55 | 56 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/cameraundistortor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Camera Distortion Compensation Logic 3 | * By Shikai Chen (csk@live.com) 4 | * 5 | * Copyright 2009 - 2013 RoboPeak Team 6 | * http://www.robopeak.net 7 | */ 8 | 9 | #include "common.h" 10 | #include "cv_common.h" 11 | 12 | #define SAFE_MAT_RELEASE(p) \ 13 | do {if (p) cvReleaseMat(&(p));}while(0) 14 | 15 | CameraUndistortHelper::CameraUndistortHelper(int sx, int sy, int dx, int dy) 16 | : _is_loaded(false) 17 | , _frame_sx(sx) 18 | , _frame_sy(sy) 19 | , _frame_dx(dx) 20 | , _frame_dy(dy) 21 | , _intrinsic_cam(NULL) 22 | , _intrinsic_distort(NULL) 23 | , _new_cam_matrix(NULL) 24 | , _cam_map_x(NULL) 25 | , _cam_map_y(NULL) 26 | { 27 | _cam_map_x = cvCreateMat(_frame_dy, _frame_dx, CV_32F); 28 | _cam_map_y = cvCreateMat(_frame_dy, _frame_dx, CV_32F); 29 | _new_cam_matrix = cvCreateMat(3,3,CV_32F); 30 | } 31 | 32 | CameraUndistortHelper::~CameraUndistortHelper() 33 | { 34 | SAFE_MAT_RELEASE(_intrinsic_cam); 35 | SAFE_MAT_RELEASE(_intrinsic_distort); 36 | SAFE_MAT_RELEASE(_cam_map_x); 37 | SAFE_MAT_RELEASE(_cam_map_y); 38 | SAFE_MAT_RELEASE(_new_cam_matrix); 39 | } 40 | 41 | bool CameraUndistortHelper::loadCalibrationfromFile(const char * camerainfofile, const char * cameradistortfile){ 42 | SAFE_MAT_RELEASE(_intrinsic_cam); 43 | SAFE_MAT_RELEASE(_intrinsic_distort); 44 | _is_loaded = false; 45 | _intrinsic_cam = (CvMat*)cvLoad(camerainfofile); 46 | _intrinsic_distort = (CvMat*)cvLoad(cameradistortfile); 47 | 48 | if (!_intrinsic_cam || !_intrinsic_distort) return false; 49 | 50 | cvGetOptimalNewCameraMatrix(_intrinsic_cam, _intrinsic_distort, 51 | cvSize(_frame_sx, _frame_sy), 1, _new_cam_matrix, cvSize(_frame_dx, _frame_dy)); 52 | 53 | cvInitUndistortRectifyMap(_intrinsic_cam, _intrinsic_distort, NULL, 54 | _new_cam_matrix, _cam_map_x, _cam_map_y); 55 | 56 | _is_loaded = true; 57 | return true; 58 | } 59 | 60 | void CameraUndistortHelper::undistortImage(const IplImage * input, IplImage * output) 61 | { 62 | if (!_is_loaded) { 63 | // scale the source to the target direct 64 | ::cvResize(input, output); 65 | return; 66 | } 67 | cvRemap(input, output, _cam_map_x, _cam_map_y); 68 | } 69 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/cameraundistortor.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Camera Distortion Compensation Logic 3 | * By Shikai Chen (csk@live.com) 4 | * 5 | * Copyright 2009 - 2013 RoboPeak Team 6 | * http://www.robopeak.net 7 | */ 8 | 9 | #pragma once 10 | 11 | // OpenCV is required 12 | 13 | class CameraUndistortHelper 14 | { 15 | public: 16 | CameraUndistortHelper(int sx, int sy, int dx, int dy); 17 | ~CameraUndistortHelper(); 18 | 19 | bool loadCalibrationfromFile(const char * camerainfofile, const char * cameradistortfile); 20 | void undistortImage(const IplImage * input, IplImage * output); 21 | 22 | protected: 23 | 24 | bool _is_loaded; 25 | int _frame_sx, _frame_sy; 26 | int _frame_dx, _frame_dy; 27 | CvMat * _intrinsic_cam; 28 | CvMat * _intrinsic_distort; 29 | CvMat * _new_cam_matrix; 30 | CvMat * _cam_map_x, *_cam_map_y; 31 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Common Includes 3 | * By Shikai Chen (csk@live.com) 4 | * 5 | * Copyright 2009 - 2013 RoboPeak Team 6 | * http://www.robopeak.net 7 | */ 8 | 9 | #pragma once 10 | 11 | #if defined(WIN32) 12 | #include "port/win32/inc/arch_inc.h" 13 | #elif defined (_MACOS) 14 | #include "port/macos/inc/arch_inc.h" 15 | #elif defined (__GNUC__) 16 | #include "port/linux/inc/arch_inc.h" 17 | #else 18 | #error "unsupported target" 19 | #endif 20 | 21 | #include 22 | 23 | // Device Config 24 | #include "dev_conf.h" 25 | 26 | 27 | #include 28 | #include 29 | 30 | #include 31 | 32 | 33 | #include "utils.h" 34 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/config.h.in: -------------------------------------------------------------------------------- 1 | #if %(debug)d 2 | #define DEBUG 1 3 | #else 4 | #define NDEBUG 1 5 | #endif 6 | 7 | #if %(feature_pattern_type_2)d 8 | #define FEATURE_PATTERN_TYPE_2 1 9 | #else 10 | #define NFEATURE_PATTERN_TYPE_2 1 11 | #endif 12 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/config_mgr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Config Manager 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | #include 14 | #include 15 | 16 | class ConfigMgr; 17 | 18 | struct ConfigBundle { 19 | ConfigBundle(ConfigMgr & mgr); 20 | 21 | void flush(); 22 | void load(); 23 | void loadDefaultValues(); 24 | //--- 25 | int exposure_level; 26 | int keyrefire_delay; 27 | int keyrefire_interval; 28 | int default_cam_id; 29 | int playsound; 30 | 31 | // 32 | int model_id; 33 | ConfigMgr & _mgr; 34 | }; 35 | 36 | struct configBlob { 37 | std::string key; 38 | std::string val; 39 | }; 40 | 41 | class ConfigMgr { 42 | public: 43 | 44 | 45 | ConfigMgr(); 46 | ~ConfigMgr(); 47 | 48 | 49 | bool loadConfigFromFile(); 50 | void flushConfigFile(); 51 | 52 | 53 | bool getInt(const char * key, int & val); 54 | bool getFloat(const char * key, float & val); 55 | 56 | void setInt(const char * key, int val); 57 | void setFloat(const char * key, float val); 58 | 59 | protected: 60 | 61 | void _setKeyVal(const char * key, const char * val); 62 | std::string * _getKeyVal(const char * key); 63 | 64 | void _nukeData(); 65 | 66 | 67 | 68 | std::vector _bloblist; 69 | std::map _blobmap; 70 | 71 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/cv_common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Commond definition of the CV system 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | 11 | #pragma once 12 | 13 | // OpenCV Related 14 | #include 15 | #include 16 | #include 17 | 18 | // Common Data Structures 19 | struct TrackPoint 20 | { 21 | float x, y; 22 | float pressure; 23 | TrackPoint(): x(0), y(0), pressure(0) {} 24 | TrackPoint(float _x, float _y, float _p): x(_x), y(_y), pressure(_p) {} 25 | }; 26 | 27 | #include "cv_utils.h" 28 | #include "blobfinder.h" 29 | #include "cameraundistortor.h" 30 | #include "cvpositionest.h" 31 | #include "port/common/PowerVideoCapture.h" -------------------------------------------------------------------------------- /laser_kbd_neo/src/cv_utils.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Utilities for CV 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #include "common.h" 11 | #include "cv_common.h" 12 | 13 | void cv_textOut(IplImage* img, int x, int y, const char * txt, CvScalar color, float size, bool centerToPoint) 14 | { 15 | CvFont stdFont; 16 | cvInitFont(&stdFont,CV_FONT_VECTOR0,0.3*size,0.4*size, 0, 1); 17 | 18 | if (centerToPoint) { 19 | int baseline=0; 20 | CvSize textSize; 21 | cvGetTextSize(txt, &stdFont, &textSize, &baseline); 22 | x-=textSize.width/2; 23 | y+=textSize.height/2; 24 | } 25 | 26 | cvPutText(img, txt, cvPoint(x,y),&stdFont, color); 27 | } 28 | 29 | void cv_copyTo(IplImage* src, IplImage * dest, const CvRect& region) 30 | { 31 | cvSetImageROI(dest, region); 32 | 33 | cvResize(src, dest); 34 | cvResetImageROI(dest); 35 | } -------------------------------------------------------------------------------- /laser_kbd_neo/src/cv_utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Utilities for CV 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | 11 | #pragma once 12 | 13 | void cv_copyTo(IplImage* src, IplImage * dest, const CvRect& region); 14 | 15 | void cv_textOut(IplImage* img, int x, int y, const char * txt, CvScalar color = cvScalar(255,255,255), float size = 1.0, bool centerToPoint = false); -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvpositionest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Blob Real Position Estimator 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #include "common.h" 11 | #include "cv_common.h" 12 | 13 | PositionEstimator::PositionEstimator() 14 | : _perspectiveTransMat(NULL) 15 | { 16 | _perspectiveTransMat = cvCreateMat(3,3,CV_32FC1); 17 | } 18 | 19 | PositionEstimator::~PositionEstimator() 20 | { 21 | if (_perspectiveTransMat) ::cvReleaseMat(&_perspectiveTransMat); 22 | } 23 | 24 | void PositionEstimator::setTransformParameters(const std::vector & src, 25 | const std::vector & dest) 26 | 27 | { 28 | assert(src.size() == dest.size()); 29 | if (src.size() < 4) return; 30 | 31 | CvMat * src_ptList = cvCreateMat(src.size(),1,CV_32FC2); 32 | CvMat * dest_ptList = cvCreateMat(dest.size(),1,CV_32FC2); 33 | 34 | 35 | for (int pos = 0; pos < src.size(); pos++) { 36 | CV_MAT_ELEM(*src_ptList, CvPoint2D32f,pos, 0) = src[pos]; 37 | CV_MAT_ELEM(*dest_ptList, CvPoint2D32f,pos, 0) = dest[pos]; 38 | } 39 | 40 | cvFindHomography(src_ptList, dest_ptList, _perspectiveTransMat); 41 | 42 | cvReleaseMat(&src_ptList); 43 | cvReleaseMat(&dest_ptList); 44 | 45 | } 46 | 47 | CvPoint2D32f PositionEstimator::operator()(const CvPoint2D32f & src) 48 | { 49 | CvMat * srcVec =cvCreateMat(1,1, CV_32FC2); 50 | CvMat * destVec = cvCreateMat(1,1, CV_32FC2); 51 | 52 | 53 | CV_MAT_ELEM(*srcVec, CvPoint2D32f,0, 0) = src; 54 | cvPerspectiveTransform(srcVec, destVec, _perspectiveTransMat); 55 | 56 | 57 | 58 | CvPoint2D32f ans = CV_MAT_ELEM(*destVec, CvPoint2D32f,0, 0); 59 | 60 | cvReleaseMat(&srcVec); 61 | cvReleaseMat(&destVec); 62 | 63 | return ans; 64 | } -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvpositionest.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Blob Real Position Estimator 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #pragma once 11 | 12 | 13 | class PositionEstimator 14 | { 15 | public: 16 | PositionEstimator(); 17 | ~PositionEstimator(); 18 | 19 | void setTransformParameters(const std::vector & src, 20 | const std::vector & dest); 21 | 22 | CvPoint2D32f operator()(const CvPoint2D32f &); 23 | 24 | protected: 25 | CvMat* _perspectiveTransMat; 26 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvui/cvui.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple UI System for OpenCV 3 | * All-in-one header 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | #include "cvui_base.h" 14 | #include "cvui_imageframe.h" 15 | #include "cvui_button.h" 16 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvui/cvui_button.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple UI System for OpenCV 3 | * Button Object 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | namespace rp{ namespace cvui { 14 | 15 | 16 | class Button : public RenderObject 17 | { 18 | public: 19 | enum { 20 | STATE_ACTIVED = 0x2, 21 | STATE_HOVERED = 0x1, 22 | }; 23 | Button() ; 24 | virtual ~Button(); 25 | 26 | void setNormalImage(IplImage * img); 27 | void setHoveredImage(IplImage * img); 28 | void setActiveImage(IplImage * img); 29 | virtual void renderSelf(IplImage* frame); 30 | 31 | void setListener(ui_evt_listener listener, void * data = NULL); 32 | 33 | virtual bool handleMouseEnter(int button); 34 | virtual bool handleMouseLeave(int button); 35 | virtual bool handleMousePress(int button, int x, int y) ; 36 | virtual bool handleMouseRelease(int button, int x, int y); 37 | 38 | protected: 39 | IplImage * _hover_img; 40 | IplImage * _active_img; 41 | IplImage * _normal_img; 42 | 43 | int _state_msk; // 0-normal 1-hovered 2-active 44 | 45 | void * _listener_data; 46 | ui_evt_listener _listener; 47 | }; 48 | 49 | 50 | }} -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvui/cvui_imageframe.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple UI System for OpenCV 3 | * Image Frame Object 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | namespace rp{ namespace cvui { 14 | 15 | class ImageFrame : public RenderObject 16 | { 17 | public: 18 | ImageFrame() ; 19 | virtual ~ImageFrame(); 20 | 21 | void setImage(IplImage * img); 22 | virtual void renderSelf(IplImage* frame); 23 | 24 | protected: 25 | IplImage * _img; 26 | }; 27 | 28 | 29 | }} -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvui/impl/cvui_button.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple UI System for OpenCV 3 | * Button Object 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #include "common.h" 13 | #include "cv_common.h" 14 | 15 | 16 | #include "cvui_base.h" 17 | #include "cvui_button.h" 18 | 19 | 20 | 21 | namespace rp{ namespace cvui { 22 | 23 | 24 | Button::Button() 25 | : _hover_img(NULL) 26 | , _active_img(NULL) 27 | , _normal_img(NULL) 28 | , _state_msk(0) 29 | , _listener_data(NULL) 30 | , _listener(NULL) 31 | { 32 | 33 | } 34 | 35 | Button::~Button() 36 | { 37 | 38 | } 39 | 40 | 41 | void Button::setNormalImage(IplImage * img) 42 | { 43 | if (!img) return; 44 | _normal_img = img; 45 | this->setSize(img->width, img->height); 46 | } 47 | 48 | void Button::setHoveredImage(IplImage * img) 49 | { 50 | if (!img) return; 51 | _hover_img = img; 52 | } 53 | 54 | void Button::setActiveImage(IplImage * img) 55 | { 56 | if (!img) return; 57 | _active_img = img; 58 | } 59 | 60 | void Button::renderSelf(IplImage* frame) 61 | { 62 | IplImage * render_img = _normal_img; 63 | do { 64 | if (_state_msk & STATE_ACTIVED) { 65 | if (_active_img) { 66 | render_img = _active_img; 67 | } else if (_hover_img) { 68 | render_img = _hover_img; 69 | } 70 | break; 71 | } 72 | 73 | if (_state_msk & STATE_HOVERED) { 74 | if (_hover_img) { 75 | render_img = _hover_img; 76 | } else { 77 | render_img = _active_img; 78 | } 79 | break; 80 | } 81 | } while(0); 82 | if (!render_img) return ; 83 | // copy the image to the frame 84 | assert(frame->depth == render_img->depth); 85 | cv_copyTo(render_img, frame, cvRect(_x, _y, _width, _height)); 86 | RenderObject::renderSelf(frame); 87 | } 88 | 89 | 90 | void Button::setListener(ui_evt_listener listener, void * data) 91 | { 92 | _listener_data = data; 93 | _listener = listener; 94 | } 95 | 96 | bool Button::handleMouseEnter(int button) 97 | { 98 | _state_msk |= STATE_HOVERED; 99 | this->setDirtyFlag(); 100 | return true; 101 | } 102 | 103 | bool Button::handleMouseLeave(int button) 104 | { 105 | _state_msk &= ~(STATE_HOVERED | STATE_ACTIVED); 106 | this->setDirtyFlag(); 107 | return true; 108 | } 109 | 110 | bool Button::handleMousePress(int button, int x, int y) 111 | { 112 | _state_msk |= STATE_ACTIVED; 113 | this->setDirtyFlag(); 114 | 115 | if (_listener) { 116 | _listener(_listener_data, button, x, y); 117 | } 118 | return true; 119 | } 120 | 121 | bool Button::handleMouseRelease(int button, int x, int y) 122 | { 123 | _state_msk &= ~STATE_ACTIVED; 124 | this->setDirtyFlag(); 125 | return true; 126 | } 127 | 128 | }} -------------------------------------------------------------------------------- /laser_kbd_neo/src/cvui/impl/cvui_imageframe.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple UI System for OpenCV 3 | * Image Frame Object 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #include "common.h" 12 | #include "cv_common.h" 13 | 14 | 15 | #include "cvui_base.h" 16 | #include "cvui_imageframe.h" 17 | 18 | 19 | 20 | namespace rp{ namespace cvui { 21 | 22 | 23 | ImageFrame::ImageFrame() 24 | : _img(NULL) 25 | { 26 | 27 | } 28 | 29 | ImageFrame::~ImageFrame() 30 | { 31 | 32 | } 33 | 34 | 35 | void ImageFrame::setImage(IplImage * img) 36 | { 37 | if (!img) return; 38 | // set self size according to the image size 39 | this->setSize(img->width, img->height); 40 | _img = img; 41 | } 42 | 43 | void ImageFrame::renderSelf(IplImage* frame) 44 | { 45 | if (!_img) return; 46 | 47 | // copy the image to the frame 48 | assert(frame->depth == _img->depth); 49 | 50 | cv_copyTo(_img, frame, cvRect(_x, _y, _width, _height)); 51 | RenderObject::renderSelf(frame); 52 | } 53 | 54 | }} -------------------------------------------------------------------------------- /laser_kbd_neo/src/dev_conf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Device Configuration 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | // Height of images captured by the camera 14 | const int SRC_IMG_HEIGHT = 480; 15 | // Width of images captured by the camera 16 | const int SRC_IMG_WIDTH = 640; 17 | 18 | 19 | 20 | 21 | // Image size of the undistorted image 22 | const int RECTIFIED_IMG_H = SRC_IMG_HEIGHT + 200; 23 | const int RECTIFIED_IMG_W = SRC_IMG_WIDTH + 200; 24 | 25 | 26 | const int BLOB_MIN_SIZE = 9; 27 | const int BLOB_MAX_SIZE = 100*100; 28 | 29 | const int MAX_TRACKED_BLOB_CNT = 10; 30 | const int BLOB_THRESHOLD_PWR = 80; 31 | 32 | //Size of the rectified projection image 33 | const int PROJECTED_WIDTH = 500; 34 | const int PROJECTED_HEIGHT = 300; 35 | 36 | const int KBD_IMG_HEIGHT = 300; 37 | const int KBD_IMG_WIDTH = SRC_IMG_WIDTH; 38 | 39 | const int MAX_SENSE_DESTANCE = PROJECTED_HEIGHT-10; 40 | 41 | 42 | // desired camera exposure level 43 | const int CAM_EXPOSURE_LEVEL = -5; 44 | const int CAM_EXPOSURE_LEVELv2 = -9; 45 | 46 | 47 | const int REFIRE_DELAY = 1000; 48 | const int REFIRE_INTERVAL = 100; 49 | 50 | static const char * FILEPATH_PREDEFINE_CAMERA_INTRINSICS = "intrinsics_cam.xml"; 51 | static const char * FILEPATH_PREDEFINE_CAMERA_DISTORT = "intrinsics_distort.xml"; 52 | 53 | 54 | static const char * FILEPATH_CAMERA_INTRINSICS = "config/intrinsics_cam.xml"; 55 | static const char * FILEPATH_CAMERA_DISTORT = "config/intrinsics_distort.xml"; 56 | static const char * FILEPATH_LOC_CALIB_DATA = "loc_data.xml"; 57 | static const char * FILEPATH_CONFIG_FILE = "config/general.txt"; 58 | static const char * FILEPATH_LOC_CALIB_FOLDER = "config/"; 59 | 60 | static const char * FILEPATH_RESOURCE_COMMON_FOLDER = "res/common/"; 61 | static const char * FILEPATH_RESOURCE_LANG_FOLDER = "res/lang/"; 62 | 63 | static const char * FILEPATH_RESOURCE_PREDEFINE_FOLDER = "res/prefined/"; 64 | static const char * FILEPATH_RESOURCE_SOUND_FOLDER = "res/sound/"; 65 | 66 | static const char * FILEPATH_CONFIG_NEWMODEL_PREFIX = "v2_"; 67 | 68 | // sketch pad related 69 | const int SKETCH_AREA_HEIGHT = 500; 70 | const int SKETCH_AREA_WIDTH = 1000; 71 | const int SKETCH_AUTOCLEAR_TIMEOUT = 10; //10 sec 72 | 73 | 74 | // release option 75 | #define RELEASE_PRODUCT_TYPE "laserkbd" 76 | #define RELEASE_VENDOR_TYPE "DFRobot" 77 | #define RELEASE_VERSION_INFO "1.2" 78 | #define UPDATE_POST_URL "http://update.robopeak.com/check_update" 79 | 80 | 81 | 82 | const unsigned short release_usb_pid = 0x3450; 83 | const unsigned short release_usb_vid = 0x0ac8; 84 | const unsigned short release_usb_hw_rev = 0x0900; 85 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/keyboard_emu/keyboard_emu.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Keyboard event emulator and trigger 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #pragma once 11 | 12 | #include "layout_provider.h" 13 | 14 | class KeyboardEmu { 15 | public: 16 | KeyboardEmu(KeyLayoutProvider & provider); 17 | ~KeyboardEmu(); 18 | void onKeyboardTick(const std::vector &, bool injectevent = true); 19 | 20 | const std::vector & getPressedKeyIdx() { return _last_key_pressed; } 21 | protected: 22 | bool injectKeyArray(const std::vector &); 23 | IplImage* _kdb_img; 24 | std::vector _last_key_pressed; 25 | unsigned long _last_fire_time; 26 | bool _is_refire_mode ; 27 | KeyLayoutProvider & _provider; 28 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/keyboard_emu/layout_provider.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Keyboard layout manager and provider 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #pragma once 11 | 12 | typedef unsigned short KEY_VAL_T; 13 | 14 | #define KEY_FN 0x92 15 | 16 | struct KeyDesc_t { 17 | float x; 18 | float y; 19 | float width; 20 | float height; 21 | KEY_VAL_T lcase_val; 22 | KEY_VAL_T ucase_val; 23 | const char * desc; 24 | }; 25 | 26 | 27 | class KeyLayoutProvider { 28 | public: 29 | KeyLayoutProvider(); 30 | ~KeyLayoutProvider(); 31 | 32 | const KeyDesc_t * getKeyAt(int pos); 33 | size_t getCount(); 34 | 35 | int findKeyIdxByPoint(float x, float y); 36 | 37 | static bool IsButtonHit(float x, float y, const KeyDesc_t & key); 38 | 39 | void renderLayout(IplImage* img, const std::vector & key_pressed); 40 | 41 | const cv::Size2f & getLayoutSize() const { return _size; } 42 | int getTopLeftKeyIdx() {return _id_tl; } 43 | int getTopRightKeyIdx() { return _id_tr; } 44 | int getBottomLeftKeyIdx() { return _id_bl; } 45 | int getBottomRightKeyIdx() { return _id_br; } 46 | 47 | int getKeyIdxByKeyVal(int ch); 48 | 49 | CvPoint2D32f keyboardPosToWindowPos(const CvPoint2D32f & ); 50 | 51 | protected: 52 | void * _kd_tree; 53 | 54 | int _id_tl, _id_tr, _id_bl, _id_br; 55 | cv::Size2f _size; 56 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/model_selector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Camera Selection UI 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2014 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #pragma once 13 | 14 | #include "cvui/cvui.h" 15 | 16 | class ModelSelector 17 | { 18 | public: 19 | ModelSelector(); 20 | ~ModelSelector(); 21 | 22 | void setPredefinedModel(int modelID, bool specified); 23 | 24 | int doModal(); 25 | 26 | protected: 27 | 28 | IplImage * windowImg; 29 | rp::cvui::RenderContainer uicontainer; 30 | 31 | 32 | rp::cvui::Button _ui_modelv1; 33 | rp::cvui::Button _ui_modelv2; 34 | rp::cvui::ImageFrame _img_title; 35 | int _working_flg; // 1-working 0-exit 36 | int _predefined_model; 37 | bool _model_specified; 38 | 39 | void renderTxtContent(); 40 | 41 | static void s_onSelectV1(void * data, int button, int x, int y); 42 | static void s_onSelectV2(void * data, int button, int x, int y); 43 | static void s_onMouse(int mouse_event, int x, int y,int, void* pThis); 44 | 45 | 46 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/common/PowerVideoCapture.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Powerful Video Capture Class 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | #pragma once 11 | 12 | class PowerVideoCapture 13 | { 14 | 15 | public: 16 | static PowerVideoCapture * CreateCaptureByID( int id); 17 | static size_t EnumCaptureDevices(std::vector & list); 18 | 19 | public: 20 | virtual ~PowerVideoCapture() {} 21 | virtual bool setImageSize(int width, int height) = 0; 22 | virtual bool getImageSize(int & width, int & height) = 0; 23 | virtual bool setExposureVal(long level) = 0; 24 | virtual IplImage* retrieveFrame() = 0; 25 | 26 | 27 | protected: 28 | PowerVideoCapture() {} 29 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/common/keyinjector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * OS Key Events Injector 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | enum KeyEventType { 14 | KEY_EVENT_RELEASED = 0, 15 | KEY_EVENT_PRESSED = 1, 16 | }; 17 | 18 | struct KeyEventDesc { 19 | KeyEventDesc(KeyEventType t, int v) 20 | : type(t), keyval(v) {} 21 | 22 | KeyEventDesc(): type(KEY_EVENT_RELEASED), keyval(0) {} 23 | 24 | KeyEventType type; 25 | int keyval; 26 | }; 27 | 28 | class OSKeyInjector 29 | { 30 | public: 31 | // WARNING: race condition will occur when these functions are used in 32 | // multi-thread envirnoment. 33 | 34 | static OSKeyInjector * GetInstance(); 35 | static void ReleaseInstance(); 36 | 37 | protected: 38 | OSKeyInjector() {} 39 | 40 | static OSKeyInjector* g_inst; 41 | 42 | public: 43 | virtual ~OSKeyInjector() {} 44 | 45 | virtual bool injectKeyEvents( const std::vector & ) = 0; 46 | 47 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/common/platform_language.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Platform language state supporting lib 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | const char * GetBestMatchedLanguageString(); -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/common/productid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Product Identification Supporting Lib 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | 14 | const char * GetPlatformName(); 15 | 16 | struct platform_id_t { 17 | unsigned char id_buf[6]; 18 | }; 19 | 20 | bool GetPlatformIdentification(platform_id_t & id); 21 | bool IsTargetProductPresent(); -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/common/updatechecker.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Client Update Checker 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #pragma once 12 | 13 | 14 | 15 | class UpdateChecker 16 | { 17 | public: 18 | static UpdateChecker * GetInstance(); 19 | 20 | virtual ~UpdateChecker(){}; 21 | 22 | virtual void sendQueryRequest( const char * vendortype, const char * productString, const char * versionString) = 0; 23 | 24 | virtual bool getResponseUrl(std::string & buffer) = 0; 25 | 26 | virtual bool isResponseReady() { return _isResponseReady; } 27 | 28 | protected: 29 | volatile bool _isResponseReady; 30 | 31 | protected: 32 | UpdateChecker() : _isResponseReady(false) {}; 33 | 34 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/linux/inc/arch_inc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Common Includes for Linux Deepin 3 | * Copyright (C) 2013 Deepin, Inc. 4 | * Leslie Zhai 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | static inline unsigned long getms() 11 | { 12 | timeval now; 13 | gettimeofday(&now, NULL); 14 | return now.tv_sec * 1000 + now.tv_usec / 1000; 15 | } 16 | 17 | static inline void gotoURL(const char* url) 18 | { 19 | } 20 | 21 | static inline const char* getPlatformResPrefix() 22 | { 23 | return "./"; 24 | } 25 | 26 | static inline const char* getPlatformConfigPrefix() 27 | { 28 | return "./"; 29 | } 30 | 31 | static inline bool checkPlatformExitFlag() 32 | { 33 | return false; 34 | } 35 | 36 | #ifndef _countof 37 | #define _countof(x) (sizeof(x) / sizeof(x[0])) 38 | #endif 39 | 40 | // Virtual Key defines 41 | #define VK_MULTIPLY '*' 42 | #define VK_OEM_MINUS '-' 43 | #define VK_ADD '+' 44 | #define VK_OEM_PLUS '=' 45 | /* TODO it is based on /usr/share/X11/xkb/keycodes/evdev */ 46 | #define VK_ESCAPE 9 47 | #define VK_BACK 22 48 | #define VK_CAPITAL 66 //non-spec 49 | #define VK_TAB '\t' 50 | #define VK_OEM_1 ';' 51 | #define VK_RETURN 36 52 | #define VK_LSHIFT 50 //non-spec 53 | #define VK_OEM_3 '`' 54 | #define VK_OEM_5 '\\' 55 | #define VK_OEM_PERIOD '.' 56 | #define VK_OEM_2 '/' 57 | #define VK_UP 111 //non-spec 58 | #define VK_RSHIFT 62 //non-spec 59 | #define VK_CONTROL 37 //non-spec 60 | #define VK_MENU 135 //non-spec , alt 61 | #define VK_OEM_4 '[' 62 | #define VK_OEM_6 ']' 63 | #define VK_SPACE ' ' 64 | #define VK_DELETE 119 //non-spec 65 | #define VK_LEFT 113 //non-spec 66 | #define VK_DOWN 116 //non-spec 67 | #define VK_RIGHT 114 //non-spec 68 | #define VK_OEM_7 '\'' 69 | #define VK_OEM_COMMA ',' 70 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/linux/platform_language_linux.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Deepin, Inc. 3 | * 2013 Leslie Zhai 4 | * 5 | * Author: Leslie Zhai 6 | * Maintainer: Leslie Zhai 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | 24 | #include "common.h" 25 | #include "port/common/platform_language.h" 26 | 27 | const char* GetBestMatchedLanguageString() 28 | { 29 | char* env = getenv("LANG"); 30 | std::string lang = ""; 31 | 32 | if (env) 33 | { 34 | lang = env; 35 | if (lang.find("zh_") != std::string::npos) 36 | return "cn"; 37 | } 38 | 39 | return "en"; 40 | } 41 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/3rd/UVCCameraControl.h: -------------------------------------------------------------------------------- 1 | #import 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | #define UVC_INPUT_TERMINAL_ID 0x01 11 | #define UVC_PROCESSING_UNIT_ID 0x02 12 | 13 | #define UVC_CONTROL_INTERFACE_CLASS 14 14 | #define UVC_CONTROL_INTERFACE_SUBCLASS 1 15 | 16 | #define UVC_SET_CUR 0x01 17 | #define UVC_GET_CUR 0x81 18 | #define UVC_GET_MIN 0x82 19 | #define UVC_GET_MAX 0x83 20 | 21 | typedef struct { 22 | int min, max; 23 | } uvc_range_t; 24 | 25 | typedef struct { 26 | int unit; 27 | int selector; 28 | int size; 29 | } uvc_control_info_t; 30 | 31 | typedef struct { 32 | uvc_control_info_t autoExposure; 33 | uvc_control_info_t exposure; 34 | uvc_control_info_t brightness; 35 | uvc_control_info_t contrast; 36 | uvc_control_info_t gain; 37 | uvc_control_info_t saturation; 38 | uvc_control_info_t sharpness; 39 | uvc_control_info_t whiteBalance; 40 | uvc_control_info_t autoWhiteBalance; 41 | } uvc_controls_t ; 42 | 43 | 44 | @interface UVCCameraControl : NSObject { 45 | long dataBuffer; 46 | IOUSBInterfaceInterface190 **interface; 47 | } 48 | 49 | 50 | - (id)initWithLocationID:(UInt32)locationID; 51 | - (id)initWithVendorID:(long)vendorID productID:(long)productID; 52 | - (IOUSBInterfaceInterface190 **)getControlInferaceWithDeviceInterface:(IOUSBDeviceInterface **)deviceInterface; 53 | 54 | - (BOOL)sendControlRequest:(IOUSBDevRequest)controlRequest; 55 | - (BOOL)setData:(long)value withLength:(int)length forSelector:(int)selector at:(int)unitID; 56 | - (long)getDataFor:(int)type withLength:(int)length fromSelector:(int)selector at:(int)unitID; 57 | 58 | - (uvc_range_t)getRangeForControl:(const uvc_control_info_t *)control; 59 | - (float)mapValue:(float)value fromMin:(float)fromMin max:(float)fromMax toMin:(float)toMin max:(float)toMax; 60 | - (float)getValueForControl:(const uvc_control_info_t *)control; 61 | - (BOOL)setValue:(float)value forControl:(const uvc_control_info_t *)control; 62 | 63 | 64 | - (BOOL)setAutoExposure:(BOOL)enabled; 65 | - (BOOL)getAutoExposure; 66 | - (BOOL)setExposure:(float)value; 67 | - (float)getExposure; 68 | - (BOOL)setGain:(float)value; 69 | - (float)getGain; 70 | - (BOOL)setBrightness:(float)value; 71 | - (float)getBrightness; 72 | - (BOOL)setContrast:(float)value; 73 | - (float)getContrast; 74 | - (BOOL)setSaturation:(float)value; 75 | - (float)getSaturation; 76 | - (BOOL)setSharpness:(float)value; 77 | - (float)getSharpness; 78 | - (BOOL)setAutoWhiteBalance:(BOOL)enabled; 79 | - (BOOL)getAutoWhiteBalance; 80 | - (BOOL)setWhiteBalance:(float)value; 81 | - (float)getWhiteBalance; 82 | 83 | @end 84 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/3rd/opencv/cap_qtkit.h: -------------------------------------------------------------------------------- 1 | // 2 | // cap_qtkit.h 3 | // LaserKeyborad 4 | // 5 | // Created by Shikai Chen on 13-3-27. 6 | // Copyright (c) 2013年 RoboPeak. All rights reserved. 7 | // 8 | 9 | #ifndef LaserKeyborad_cap_qtkit_h 10 | #define LaserKeyborad_cap_qtkit_h 11 | 12 | 13 | #import 14 | 15 | #ifndef QTKIT_VERSION_7_6_3 16 | #define QTKIT_VERSION_7_6_3 70603 17 | #define QTKIT_VERSION_7_0 70000 18 | #endif 19 | 20 | #ifndef QTKIT_VERSION_MAX_ALLOWED 21 | #define QTKIT_VERSION_MAX_ALLOWED QTKIT_VERSION_7_0 22 | #endif 23 | 24 | #define DISABLE_AUTO_RESTART 999 25 | 26 | 27 | #import "port/macos/3rd/UVCCameraControl.h" 28 | 29 | 30 | 31 | @interface CaptureDelegateLocal : NSObject 32 | { 33 | int newFrame; 34 | CVImageBufferRef mCurrentImageBuffer; 35 | char* imagedata; 36 | IplImage* image; 37 | char* bgr_imagedata; 38 | IplImage* bgr_image; 39 | size_t currSize; 40 | 41 | UVCCameraControl * cameraControl; 42 | } 43 | 44 | - (void)captureOutput:(QTCaptureOutput *)captureOutput 45 | didOutputVideoFrame:(CVImageBufferRef)videoFrame 46 | withSampleBuffer:(QTSampleBuffer *)sampleBuffer 47 | fromConnection:(QTCaptureConnection *)connection; 48 | 49 | - (void)captureOutput:(QTCaptureOutput *)captureOutput 50 | didDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBuffer 51 | fromConnection:(QTCaptureConnection *)connection; 52 | 53 | - (int)updateImage; 54 | - (IplImage*)getOutput; 55 | 56 | @end 57 | 58 | 59 | class QTKitCapture { 60 | public: 61 | 62 | static size_t listDevices(std::vector &); 63 | 64 | QTKitCapture(int cameraNum = -1) ; 65 | ~QTKitCapture(); 66 | bool grabFrame(); 67 | IplImage* retrieveFrame(int); 68 | double getProperty(int property_id); 69 | bool setProperty(int property_id, double value); 70 | int didStart(); 71 | 72 | bool setExposureLevel(int level); 73 | 74 | private: 75 | QTCaptureSession *mCaptureSession; 76 | QTCaptureDeviceInput *mCaptureDeviceInput; 77 | QTCaptureDecompressedVideoOutput *mCaptureDecompressedVideoOutput; 78 | 79 | UVCCameraControl * cameraControl; 80 | 81 | CaptureDelegateLocal* capture; 82 | 83 | int startCaptureDevice(int cameraNum); 84 | void stopCaptureDevice(); 85 | 86 | void setWidthHeight(); 87 | bool grabFrame(double timeOut); 88 | 89 | int camNum; 90 | int width; 91 | int height; 92 | int settingWidth; 93 | int settingHeight; 94 | int started; 95 | int disableAutoRestart; 96 | 97 | int uniqueID; 98 | 99 | }; 100 | 101 | 102 | 103 | #endif 104 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/inc/arch_inc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Common Includes for MacOS 3 | * By Shikai Chen (csk@live.com) 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | #include 10 | 11 | 12 | 13 | #include 14 | #include 15 | #include 16 | #undef check 17 | #undef MIN 18 | 19 | static inline unsigned long getms() { 20 | timeval now; 21 | gettimeofday(&now, NULL); 22 | return now.tv_sec*1000 + now.tv_usec/1000; 23 | } 24 | 25 | static inline void gotoURL(const char * url) { 26 | CFURLRef urlref = CFURLCreateWithBytes ( 27 | NULL, // allocator 28 | (UInt8*)url, // URLBytes 29 | strlen(url), // length 30 | kCFStringEncodingASCII, // encoding 31 | NULL // baseURL 32 | ); 33 | LSOpenCFURLRef(urlref,0); 34 | CFRelease(urlref); 35 | 36 | } 37 | 38 | extern char PLATFORM_RES_PREFIX[1024]; 39 | extern char PLATFORM_CONFIG_PREFIX[1024]; 40 | extern bool _macos_quit_flag; 41 | 42 | static inline const char * getPlatformResPrefix() { 43 | return PLATFORM_RES_PREFIX; 44 | } 45 | 46 | static inline const char * getPlatformConfigPrefix() { 47 | return PLATFORM_CONFIG_PREFIX; 48 | } 49 | 50 | static inline bool checkPlatformExitFlag() { 51 | return _macos_quit_flag; 52 | } 53 | 54 | #ifndef _countof 55 | #define _countof(x) (sizeof(x)/sizeof(x[0])) 56 | #endif 57 | 58 | // Virtual Key defines 59 | #define VK_MULTIPLY '*' 60 | #define VK_OEM_MINUS '-' 61 | #define VK_ADD '+' 62 | #define VK_OEM_PLUS '=' 63 | #define VK_ESCAPE 27 64 | #define VK_BACK 127 65 | #define VK_CAPITAL 2 //non-spec 66 | #define VK_TAB '\t' 67 | #define VK_OEM_1 ';' 68 | #define VK_RETURN 13 69 | #define VK_LSHIFT 4 //non-spec 70 | #define VK_OEM_3 '`' 71 | #define VK_OEM_5 '\\' 72 | #define VK_OEM_PERIOD '.' 73 | #define VK_OEM_2 '/' 74 | #define VK_UP 5 //non-spec 75 | #define VK_RSHIFT 6 //non-spec 76 | #define VK_CONTROL 7 //non-spec 77 | #define VK_MENU 8 //non-spec , alt 78 | #define VK_OEM_4 '[' 79 | #define VK_OEM_6 ']' 80 | #define VK_SPACE ' ' 81 | #define VK_DELETE 18 //non-spec 82 | #define VK_LEFT 10 //non-spec 83 | #define VK_DOWN 11 //non-spec 84 | #define VK_RIGHT 12 //non-spec 85 | #define VK_OEM_7 '\'' 86 | #define VK_OEM_COMMA ',' -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/platform_language_macOS.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Platform language state supporting lib 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #include "common.h" 13 | #include "port/common/platform_language.h" 14 | 15 | 16 | 17 | 18 | const char * GetBestMatchedLanguageString() 19 | { 20 | CFArrayRef langid_arr = CFLocaleCopyPreferredLanguages(); 21 | if (langid_arr) { 22 | 23 | CFStringRef firstPreferred = (CFStringRef)CFArrayGetValueAtIndex(langid_arr, 0); 24 | char stringbuf[100]; 25 | if (CFStringGetCString(firstPreferred, stringbuf, 100, kCFStringEncodingASCII)) { 26 | if (strncmp(stringbuf, "zh-", strlen("zh-"))==0) { 27 | return "cn"; 28 | } 29 | 30 | } 31 | CFRelease(langid_arr); 32 | } 33 | return "en"; 34 | 35 | } -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/powervideocap_macOS.mm: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Powerful Video Capture Class 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #include "common.h" 13 | #include "cv_common.h" 14 | #include "port/common/PowerVideoCapture.h" 15 | #import "port/macos/3rd/opencv/cap_qtkit.h" 16 | 17 | class PowerVideoCapture_QTKit : public PowerVideoCapture{ 18 | public: 19 | virtual ~PowerVideoCapture_QTKit(); 20 | virtual bool setImageSize(int width, int height); 21 | virtual bool getImageSize(int & width, int & height) ; 22 | virtual bool setExposureVal(long level) ; 23 | virtual IplImage* retrieveFrame() ; 24 | PowerVideoCapture_QTKit(int idx); 25 | 26 | bool isAlive(); 27 | protected: 28 | 29 | 30 | int _deviceidx; 31 | IplImage* _cached_frame; 32 | QTKitCapture _capture; 33 | }; 34 | 35 | 36 | // ---- 37 | 38 | PowerVideoCapture * PowerVideoCapture::CreateCaptureByID( int id) 39 | { 40 | 41 | if (id < 0) return NULL; 42 | 43 | PowerVideoCapture_QTKit * newborn = new PowerVideoCapture_QTKit(id); 44 | if (!newborn) return NULL; 45 | 46 | if (!newborn->isAlive()) goto badthing_happened; 47 | 48 | return newborn; 49 | 50 | badthing_happened: 51 | delete newborn; 52 | return NULL; 53 | } 54 | 55 | size_t PowerVideoCapture::EnumCaptureDevices(std::vector & list) 56 | { 57 | return QTKitCapture::listDevices(list); 58 | } 59 | 60 | 61 | // ---- 62 | 63 | PowerVideoCapture_QTKit::PowerVideoCapture_QTKit(int idx) 64 | : _deviceidx(idx) 65 | , _cached_frame(NULL) 66 | , _capture(idx) 67 | { 68 | 69 | } 70 | 71 | bool PowerVideoCapture_QTKit::isAlive() { 72 | return _capture.didStart(); 73 | } 74 | 75 | PowerVideoCapture_QTKit::~PowerVideoCapture_QTKit() 76 | { 77 | _deviceidx = -1; 78 | 79 | } 80 | 81 | bool PowerVideoCapture_QTKit::setImageSize(int width, int height) 82 | { 83 | if( width > 0 && height > 0 ) 84 | { 85 | return _capture.setProperty(CV_CAP_PROP_FRAME_WIDTH, (double)width); 86 | _capture.setProperty(CV_CAP_PROP_FRAME_HEIGHT, (double)height); 87 | } 88 | return false; 89 | } 90 | 91 | 92 | bool PowerVideoCapture_QTKit::getImageSize(int & width, int & height) 93 | { 94 | width = (int)_capture.getProperty(CV_CAP_PROP_FRAME_WIDTH); 95 | height = (int)_capture.getProperty(CV_CAP_PROP_FRAME_HEIGHT); 96 | return true; 97 | } 98 | 99 | 100 | bool PowerVideoCapture_QTKit::setExposureVal(long level) 101 | { 102 | return _capture.setExposureLevel(level); 103 | } 104 | 105 | 106 | 107 | IplImage* PowerVideoCapture_QTKit::retrieveFrame() 108 | { 109 | _capture.grabFrame(); 110 | return _capture.retrieveFrame(0); 111 | } 112 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/macos/productid_macOS.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Product Identification Supporting Lib 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #include "common.h" 13 | #include "port/common/productid.h" 14 | 15 | 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | #include 22 | 23 | const char * GetPlatformName() 24 | { 25 | return "macOS"; 26 | } 27 | 28 | static const unsigned char xor_keyring[6] = {0x02, 0x4D, 0x8E, 0x1C, 0x48, 0x3F,}; 29 | 30 | // Get the first network mac as the platform id, xor it for privacy protection 31 | bool GetPlatformIdentification(platform_id_t & id) 32 | { 33 | 34 | FILE * peer_fd = popen("ifconfig -L", "r"); 35 | 36 | if (!peer_fd) return false; 37 | 38 | 39 | bool ans = false; 40 | char linebuffer[2048]; 41 | 42 | 43 | 44 | while (fgets(linebuffer, sizeof(linebuffer), peer_fd)) { 45 | std::vector dest; 46 | split(linebuffer, dest); 47 | if (dest.size() < 2) continue; 48 | 49 | if (dest[0].compare("\tether")==0) { 50 | int tmpbuf[6]; 51 | dest[1]+="\n"; 52 | sscanf(dest[1].c_str(), "%02x:%02x:%02x:%02x:%02x:%02x", 53 | &tmpbuf[0], 54 | &tmpbuf[1], 55 | &tmpbuf[2], 56 | &tmpbuf[3], 57 | &tmpbuf[4], 58 | &tmpbuf[5]); 59 | 60 | for (int i=0; i<6; ++i) { 61 | id.id_buf[i] = (unsigned char)tmpbuf[i] ^ xor_keyring[i]; 62 | } 63 | ans = true; 64 | goto _final; 65 | } 66 | 67 | } 68 | 69 | _final: 70 | 71 | pclose(peer_fd); 72 | 73 | return ans; 74 | } 75 | 76 | bool IsTargetProductPresent() 77 | { 78 | 79 | 80 | 81 | CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName); 82 | CFNumberRef numberRef; 83 | 84 | 85 | long pid, vid, rev; 86 | pid = release_usb_pid; 87 | vid = release_usb_vid; 88 | rev = release_usb_hw_rev; 89 | 90 | numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &vid); 91 | CFDictionarySetValue( matchingDict, CFSTR(kUSBVendorID), numberRef ); 92 | CFRelease(numberRef); 93 | 94 | numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &pid); 95 | CFDictionarySetValue( matchingDict, CFSTR(kUSBProductID), numberRef ); 96 | CFRelease(numberRef); 97 | 98 | 99 | numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &rev); 100 | CFDictionarySetValue( matchingDict, CFSTR(kUSBDeviceReleaseNumber), numberRef ); 101 | CFRelease(numberRef); 102 | 103 | io_service_t camera = IOServiceGetMatchingService( kIOMasterPortDefault, matchingDict ); 104 | if (camera) return true; 105 | else return false; 106 | } 107 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/win32/inc/arch_inc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Common Includes for Windows 3 | * By Shikai Chen (csk@live.com) 4 | */ 5 | 6 | #pragma once 7 | 8 | #pragma warning (disable: 4996) 9 | #pragma warning (disable: 4305) 10 | #define _CRT_SECURE_NO_WARNINGS 11 | 12 | 13 | #include 14 | #include 15 | 16 | static inline int mkdir(const char * path, int mode){ 17 | return _mkdir(path); //ignore the mode flags 18 | } 19 | 20 | static inline unsigned long getms() { 21 | return timeGetTime(); 22 | } 23 | 24 | static inline void gotoURL(const char * url) { 25 | ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL); 26 | 27 | } 28 | 29 | static inline const char * getPlatformResPrefix() { 30 | return ""; 31 | } 32 | 33 | static inline const char * getPlatformConfigPrefix() { 34 | return ""; 35 | } 36 | 37 | static inline bool checkPlatformExitFlag() { 38 | return false; 39 | } 40 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/port/win32/keyinjector_win32.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Keyboard event injector for Win32 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | #include "common.h" 11 | #include "port/common/keyinjector.h" 12 | 13 | #include "config_mgr.h" 14 | extern ConfigBundle g_config_bundle; 15 | 16 | class OSKeyInjector_Win32 : public OSKeyInjector 17 | { 18 | public : 19 | OSKeyInjector_Win32() { 20 | 21 | 22 | } 23 | 24 | virtual ~OSKeyInjector_Win32() { 25 | 26 | } 27 | 28 | 29 | virtual bool injectKeyEvents( const std::vector & intputlist) 30 | { 31 | if (!intputlist.size()) return false; 32 | 33 | bool hasinputs = false; 34 | 35 | INPUT * inputs = new INPUT[intputlist.size()]; 36 | 37 | do 38 | { 39 | for (int pos=0; pos::const_iterator itr 34 | = _image_pool.find(imagename); 35 | 36 | if (itr != _image_pool.end()) { 37 | return itr->second; 38 | } 39 | 40 | 41 | //load resources based on the following order: 42 | // a. current language 43 | // b. common 44 | std::string loadpath; 45 | loadpath = getPlatformResPrefix(); 46 | loadpath+= FILEPATH_RESOURCE_LANG_FOLDER; 47 | loadpath+= GetBestMatchedLanguageString(); 48 | loadpath+= "/"; 49 | loadpath+= imagename; 50 | 51 | IplImage * ans = cvLoadImage(loadpath.c_str()); 52 | 53 | if (ans) { 54 | _image_pool[imagename] = ans; 55 | return ans; 56 | } 57 | 58 | loadpath = getPlatformResPrefix(); 59 | loadpath+= FILEPATH_RESOURCE_COMMON_FOLDER; 60 | loadpath+= imagename; 61 | ans = cvLoadImage(loadpath.c_str()); 62 | if (ans) { 63 | _image_pool[imagename] = ans; 64 | } 65 | return ans; 66 | } 67 | 68 | void ResourceMgr::releaseStuffs() 69 | { 70 | std::map::iterator itr 71 | = _image_pool.begin(); 72 | 73 | while (itr != _image_pool.end()) { 74 | cvReleaseImage(&itr->second); 75 | ++itr; 76 | } 77 | } -------------------------------------------------------------------------------- /laser_kbd_neo/src/resource_mgr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Resource Loader and Manager 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #pragma once 13 | 14 | #include 15 | 16 | class ResourceMgr { 17 | public: 18 | ResourceMgr(); 19 | ~ResourceMgr(); 20 | 21 | 22 | IplImage * getImageRes(const char * imagename); 23 | 24 | protected: 25 | void releaseStuffs(); 26 | 27 | std::map _image_pool; 28 | 29 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/sketchpad/sketch_pad.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * multi-touch sketch pad 3 | * 4 | * By Shikai Chen (csk@live.com) 5 | * 6 | * Copyright 2009 - 2013 RoboPeak Team 7 | * http://www.robopeak.net 8 | */ 9 | 10 | 11 | #include "../common.h" 12 | #include "../cv_common.h" 13 | #include "../keyboard_emu/layout_provider.h" 14 | #include "sketch_pad.h" 15 | #include 16 | 17 | 18 | 19 | const CvScalar colorArr[10] = 20 | { 21 | cvScalar(128,128,255), 22 | cvScalar(0xff,0,0xf6), 23 | cvScalar(255,0,248), 24 | cvScalar(255,168,0), 25 | cvScalar(255,240,0), 26 | cvScalar(96,255,0), 27 | cvScalar(0,138,0), 28 | cvScalar(255,25,161), 29 | cvScalar(13,233,220), 30 | cvScalar(142,129,20), 31 | }; 32 | 33 | SketchPad::SketchPad(KeyLayoutProvider & p) 34 | : _provider(p) 35 | { 36 | int winWidth = p.getLayoutSize().width*2; 37 | _sketch_img = cvCreateImage(cvSize(winWidth,SKETCH_AREA_HEIGHT), 8, 3); 38 | cvFillImage(_sketch_img, 0xFFFFFF); 39 | } 40 | 41 | SketchPad::~SketchPad() 42 | { 43 | cvReleaseImage(&_sketch_img); 44 | 45 | if (cvGetWindowHandle("sketchpad")) 46 | cvDestroyWindow("sketchpad"); 47 | } 48 | 49 | void SketchPad::s_onMouse(int mouse_event, int x, int y,int, void* pThis) 50 | { 51 | SketchPad * This = reinterpret_cast(pThis); 52 | if (mouse_event == CV_EVENT_RBUTTONDOWN) { 53 | This->onClear(); 54 | } 55 | } 56 | 57 | void SketchPad::onClear() 58 | { 59 | idle_time = time(NULL); 60 | cvFillImage(_sketch_img, 0xFFFFFF); 61 | cvShowImage("sketchpad", _sketch_img); 62 | } 63 | 64 | void SketchPad::onSketchPadTick(const std::vector & points) 65 | { 66 | 67 | if (points.size() == 0) 68 | { 69 | #if 0 70 | if ( time(NULL) - idle_time > SKETCH_AUTOCLEAR_TIMEOUT) 71 | { 72 | onClear(); 73 | } 74 | #endif 75 | } else { 76 | for (int pos=0; pos & points); 18 | 19 | protected: 20 | IplImage* _sketch_img; 21 | unsigned long idle_time; 22 | 23 | KeyLayoutProvider & _provider; 24 | 25 | 26 | static void s_onMouse(int mouse_event, int x, int y,int, void* pThis); 27 | void onClear(); 28 | }; -------------------------------------------------------------------------------- /laser_kbd_neo/src/utils.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Utilities 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | #include 12 | 13 | #include "common.h" 14 | 15 | std::string trim( const char * src, char ch) 16 | { 17 | int startpos = 0; 18 | int endpos = strlen(src) -1; 19 | 20 | while( startpos<=endpos && src[startpos] == ch) ++startpos; 21 | if ( startpos>endpos) return ""; 22 | 23 | while( endpos>=startpos && src[endpos] == ch) --endpos; 24 | 25 | return std::string( src+startpos, endpos-startpos+1); 26 | } 27 | 28 | int split( const char * src, std::vector & dest, char ch) 29 | { 30 | int item_count = 0; 31 | int last_offset = 0,current_pos, src_len; 32 | 33 | dest.clear(); 34 | 35 | src_len = strlen( src); 36 | if (src_len == 0) return 0; 37 | 38 | current_pos = 0; 39 | do 40 | { 41 | if ( src[current_pos] == ch || current_pos==src_len) 42 | { 43 | if ( current_pos == last_offset) //null string 44 | { 45 | //dest.push_back( "" ); 46 | }else 47 | { 48 | std::string ans = trim(std::string( src+last_offset, current_pos - last_offset).c_str()); 49 | if (ans.size()) 50 | dest.push_back(ans); 51 | } 52 | item_count++; 53 | last_offset = current_pos+1; 54 | } 55 | } 56 | while( (++current_pos)<=src_len); 57 | 58 | 59 | return dest.size(); 60 | } 61 | -------------------------------------------------------------------------------- /laser_kbd_neo/src/utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Laser Keyboard 3 | * Utilities 4 | * 5 | * By Shikai Chen (csk@live.com) 6 | * 7 | * Copyright 2009 - 2013 RoboPeak Team 8 | * http://www.robopeak.net 9 | */ 10 | 11 | 12 | #pragma once 13 | 14 | std::string trim( const char * src, char ch = ' '); 15 | int split( const char * src, std::vector & dest, char ch = ' '); -------------------------------------------------------------------------------- /laser_kbd_neo/test/SConstruct: -------------------------------------------------------------------------------- 1 | env = Environment(CCFLAGS='-g') 2 | env['CPPPATH'] = ['./../src'] 3 | env['LIBS'] = ['libv4l2', 'libX11'] 4 | env.ParseConfig('pkg-config --cflags --libs atspi-2 libusb-1.0 x11 xtst') 5 | 6 | env.Program('test_productid', ['test_productid.cpp', 7 | './../src/port/linux/productid_linux.cpp']) 8 | 9 | env.Program('test_atspi.cpp') 10 | 11 | env.Program('test_xtest.cpp') 12 | 13 | env.Program('test_keycode.cpp') 14 | 15 | env.Program('test_v4l2.cpp') 16 | -------------------------------------------------------------------------------- /laser_kbd_neo/test/test_atspi.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Deepin, Inc. 3 | * 2013 Leslie Zhai 4 | * 5 | * Author: Leslie Zhai 6 | * Maintainer: Leslie Zhai 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | #include 24 | 25 | int main(int argc, char* argv[]) 26 | { 27 | atspi_generate_keyboard_event(56, NULL, ATSPI_KEY_PRESS, NULL); 28 | usleep(100); 29 | atspi_generate_keyboard_event(56, NULL, ATSPI_KEY_RELEASE, NULL); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /laser_kbd_neo/test/test_productid.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Deepin, Inc. 3 | * 2013 Leslie Zhai 4 | * 5 | * Author: Leslie Zhai 6 | * Maintainer: Leslie Zhai 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | 24 | #include "port/common/productid.h" 25 | 26 | int main(int argc, char* argv[]) 27 | { 28 | struct platform_id_t platform_id; 29 | 30 | GetPlatformIdentification(platform_id); 31 | std::cout << "DEBUG: " << platform_id.id_buf << std::endl; 32 | std::cout << "DEBUG: " << IsTargetProductPresent() << std::endl; 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /laser_kbd_neo/test/test_v4l2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Deepin, Inc. 3 | * 2013 Leslie Zhai 4 | * 5 | * Author: Leslie Zhai 6 | * Maintainer: Leslie Zhai 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | int main(int argc, char* argv[]) 28 | { 29 | std::cout << "DEBUG: " << int(O_RDWR) << std::endl; 30 | int fd = v4l2_open(argv[1] ? argv[1] : "/dev/video0", O_RDWR); 31 | struct v4l2_control ctrl; 32 | 33 | if (fd == -1) 34 | std::cout << "fail to open video device" << std::endl; 35 | 36 | ctrl.id = V4L2_CID_EXPOSURE_AUTO; 37 | ctrl.value = V4L2_EXPOSURE_MANUAL; 38 | if (v4l2_ioctl(fd, VIDIOC_S_CTRL, &ctrl) == -1) 39 | std::cout << "fail to set exposure auto" << std::endl; 40 | 41 | ctrl.id = V4L2_CID_EXPOSURE_ABSOLUTE; 42 | ctrl.value = 2000; 43 | if (v4l2_ioctl(fd, VIDIOC_S_CTRL, &ctrl) == -1) 44 | std::cout << "fail to set exposure absolute" << std::endl; 45 | 46 | v4l2_close(fd); 47 | fd = -1; 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /laser_kbd_neo/test/test_xtest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Deepin, Inc. 3 | * 2013 Leslie Zhai 4 | * 5 | * Author: Leslie Zhai 6 | * Maintainer: Leslie Zhai 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | void click_key(Display* display , KeyCode keycode) 29 | { 30 | XTestFakeKeyEvent(display, keycode, True, 0); // key press event 31 | XTestFakeKeyEvent(display, keycode, False, 0); // key release event 32 | XFlush(display); 33 | 34 | return; 35 | } 36 | 37 | int main(int argc, char* argv[]) 38 | { 39 | Display* display = XOpenDisplay(NULL); 40 | 41 | printf("DEBUG: %d\n", XKeysymToKeycode(display, 10)); 42 | // xmodmap -pke 43 | click_key(display, 56); 44 | 45 | XCloseDisplay(display); 46 | display = NULL; 47 | 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "scale" : "2x", 6 | "size" : "16x16" 7 | }, 8 | { 9 | "size" : "16x16", 10 | "idiom" : "mac", 11 | "filename" : "rplogo16x16.png", 12 | "scale" : "1x" 13 | }, 14 | { 15 | "size" : "32x32", 16 | "idiom" : "mac", 17 | "filename" : "rplogo32x32.png", 18 | "scale" : "1x" 19 | }, 20 | { 21 | "idiom" : "mac", 22 | "scale" : "2x", 23 | "size" : "32x32" 24 | }, 25 | { 26 | "idiom" : "mac", 27 | "scale" : "1x", 28 | "size" : "128x128" 29 | }, 30 | { 31 | "idiom" : "mac", 32 | "scale" : "2x", 33 | "size" : "128x128" 34 | }, 35 | { 36 | "idiom" : "mac", 37 | "scale" : "1x", 38 | "size" : "256x256" 39 | }, 40 | { 41 | "idiom" : "mac", 42 | "scale" : "2x", 43 | "size" : "256x256" 44 | }, 45 | { 46 | "idiom" : "mac", 47 | "scale" : "1x", 48 | "size" : "512x512" 49 | }, 50 | { 51 | "idiom" : "mac", 52 | "scale" : "2x", 53 | "size" : "512x512" 54 | } 55 | ], 56 | "info" : { 57 | "version" : 1, 58 | "author" : "xcode" 59 | } 60 | } -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/AppIcon.appiconset/rplogo16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/AppIcon.appiconset/rplogo16x16.png -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/AppIcon.appiconset/rplogo32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/AppIcon.appiconset/rplogo32x32.png -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logo.png" 7 | } 8 | ], 9 | "info" : { 10 | "version" : 1, 11 | "author" : "xcode" 12 | } 13 | } -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/logo.imageset/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/xcode/LaserKeyborad/Images.xcassets/logo.imageset/logo.png -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/LaserKeyborad-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | rplogo 11 | CFBundleIdentifier 12 | robopeak.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSApplicationCategoryType 26 | public.app-category.utilities 27 | LSMinimumSystemVersion 28 | ${MACOSX_DEPLOYMENT_TARGET} 29 | NSHumanReadableCopyright 30 | Copyright © 2009 - 2013 RoboPeak. All rights reserved. 31 | NSMainNibFile 32 | 33 | NSPrincipalClass 34 | NSApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/LaserKeyborad-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'LaserKeyborad' target in the 'LaserKeyborad' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/laserkbdAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // laserkbdAppDelegate.h 3 | // LaserKeyborad 4 | // 5 | // Created by Shikai Chen on 13-3-27. 6 | // Copyright (c) 2013年 RoboPeak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface laserkbdAppDelegate : NSObject 12 | 13 | @property (assign) IBOutlet NSWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/laserkbdAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // laserkbdAppDelegate.m 3 | // LaserKeyborad 4 | // 5 | // Created by Shikai Chen on 13-3-27. 6 | // Copyright (c) 2013年 RoboPeak. All rights reserved. 7 | // 8 | 9 | #import "laserkbdAppDelegate.h" 10 | 11 | @implementation laserkbdAppDelegate 12 | 13 | - (void)dealloc 14 | { 15 | [super dealloc]; 16 | } 17 | 18 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 19 | { 20 | // Insert code here to initialize your application 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/LaserKeyborad/main.mm: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LaserKeyborad MacOS Entry 4 | // 5 | // Created by Shikai Chen on 13-3-27. 6 | // Copyright (c) 2013 RoboPeak. All rights reserved. 7 | // 8 | 9 | #import 10 | #include 11 | #include 12 | 13 | char PLATFORM_RES_PREFIX[1024]; 14 | char PLATFORM_CONFIG_PREFIX[1024]; 15 | bool _macos_quit_flag = false; 16 | extern int cpp_entry(int argc, char * argv[]); 17 | 18 | 19 | @interface AppEventListener : NSObject 20 | { 21 | 22 | } 23 | 24 | //handler for the quit apple event 25 | - (void)handleQuitEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent; 26 | 27 | - (void)registerQuitListener; 28 | 29 | - (void)unregisterQuitListener; 30 | 31 | @end 32 | 33 | @implementation AppEventListener 34 | 35 | - (id)init { 36 | [super init]; 37 | 38 | return self; 39 | } 40 | 41 | 42 | 43 | 44 | - (void)deadlloc { 45 | 46 | [super dealloc]; 47 | } 48 | 49 | - (void)registerQuitListener 50 | { 51 | //install the custom quit event handler 52 | NSAppleEventManager* appleEventManager = [NSAppleEventManager sharedAppleEventManager]; 53 | [appleEventManager setEventHandler:self andSelector:@selector(handleQuitEvent:withReplyEvent:) forEventClass:kCoreEventClass andEventID:kAEQuitApplication]; 54 | 55 | } 56 | 57 | - (void)unregisterQuitListener 58 | { 59 | NSAppleEventManager* appleEventManager = [NSAppleEventManager sharedAppleEventManager]; 60 | [appleEventManager removeEventHandlerForEventClass:kCoreEventClass andEventID:kAEQuitApplication]; 61 | } 62 | 63 | - (void)handleQuitEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent { 64 | _macos_quit_flag = true; 65 | } 66 | 67 | @end 68 | 69 | 70 | int main(int argc, char *argv[]) 71 | { 72 | 73 | AppEventListener * listener = [[AppEventListener alloc] init]; 74 | [listener registerQuitListener]; 75 | 76 | NSBundle * bundle = [NSBundle mainBundle]; 77 | NSString * bundlepath = [bundle bundlePath]; 78 | 79 | sprintf(PLATFORM_RES_PREFIX, "%s/Contents/Resources/", [bundlepath UTF8String]); 80 | 81 | 82 | NSArray * docPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 83 | 84 | if (!docPaths || [docPaths count] == 0) { 85 | // not found? use user home instead 86 | sprintf(PLATFORM_CONFIG_PREFIX, "%s/.rp_laserkbd/", getenv("HOME")); 87 | } else { 88 | NSString * dir = [docPaths objectAtIndex:0]; 89 | sprintf(PLATFORM_CONFIG_PREFIX, "%s/rp_laserkbd/", [dir UTF8String]); 90 | mkdir(PLATFORM_CONFIG_PREFIX, 0755); 91 | } 92 | 93 | for (int pos = 0; pos < argc; ++pos ){ 94 | printf("%d: %s\n", pos, argv[pos]); 95 | 96 | } 97 | 98 | int ans= cpp_entry(1,argv); 99 | 100 | [listener unregisterQuitListener]; 101 | [listener release]; 102 | 103 | return ans; 104 | } 105 | -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/xcode/logo.png -------------------------------------------------------------------------------- /laser_kbd_neo/xcode/rplogo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/laser_kbd_neo/xcode/rplogo.icns -------------------------------------------------------------------------------- /sdkpack/README.txt: -------------------------------------------------------------------------------- 1 | The following 3rd Open Source Libraries are used in RoboPeak Laserkdb opensource project. 2 | For your convenience, the C headers and win32 prebuilt binaries are included in this folder. 3 | 4 | If you want to retrieve their source code, please refer to the following info: 5 | 6 | - OpenCV (with version 2.46) 7 | You can download its full source code via the following URL: 8 | http://opencv.org/ 9 | 10 | The copyright and license files have been included inside the license folder. 11 | 12 | The prebuilt binaries (*.lib and *.dll) were generated using VS2010 compiler on Win7 x64 system without any modification to the OpenCV library. 13 | The prebuilt binaries (*.dylib) were generated using CMake & gcc compiler on MacOS 10.8 x86 without any modification to the source. 14 | 15 | - libusbX (with version 1.0.11) 16 | You can download its full source code via the following URL: 17 | http://libusbx.org/ 18 | 19 | The copyright and license files have been included inside the license folder. 20 | 21 | The prebuilt binaries (*.lib and *.dll) were generated using VS2010 compiler on Win7 x64 system without any modification to the libusbX library. 22 | The prebuilt binaries (*.dylib) were generated using CMake & gcc compiler on MacOS 10.8 x86 without any modification to the source. -------------------------------------------------------------------------------- /sdkpack/license_and_copyrights/OpenCV/README: -------------------------------------------------------------------------------- 1 | See http://opencv.willowgarage.com 2 | 3 | -------------------------------------------------------------------------------- /sdkpack/license_and_copyrights/OpenCV/license.txt: -------------------------------------------------------------------------------- 1 | IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 2 | 3 | By downloading, copying, installing or using the software you agree to this license. 4 | If you do not agree to this license, do not download, install, 5 | copy or use the software. 6 | 7 | 8 | License Agreement 9 | For Open Source Computer Vision Library 10 | 11 | Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 12 | Copyright (C) 2008-2011, Willow Garage Inc., all rights reserved. 13 | Third party copyrights are property of their respective owners. 14 | 15 | Redistribution and use in source and binary forms, with or without modification, 16 | are permitted provided that the following conditions are met: 17 | 18 | * Redistributions of source code must retain the above copyright notice, 19 | this list of conditions and the following disclaimer. 20 | 21 | * Redistributions in binary form must reproduce the above copyright notice, 22 | this list of conditions and the following disclaimer in the documentation 23 | and/or other materials provided with the distribution. 24 | 25 | * The name of the copyright holders may not be used to endorse or promote products 26 | derived from this software without specific prior written permission. 27 | 28 | This software is provided by the copyright holders and contributors "as is" and 29 | any express or implied warranties, including, but not limited to, the implied 30 | warranties of merchantability and fitness for a particular purpose are disclaimed. 31 | In no event shall the Intel Corporation or contributors be liable for any direct, 32 | indirect, incidental, special, exemplary, or consequential damages 33 | (including, but not limited to, procurement of substitute goods or services; 34 | loss of use, data, or profits; or business interruption) however caused 35 | and on any theory of liability, whether in contract, strict liability, 36 | or tort (including negligence or otherwise) arising in any way out of 37 | the use of this software, even if advised of the possibility of such damage. 38 | -------------------------------------------------------------------------------- /sdkpack/license_and_copyrights/libusbX/AUTHORS: -------------------------------------------------------------------------------- 1 | Copyright © 2001 Johannes Erdfelt 2 | Copyright © 2007-2009 Daniel Drake 3 | Copyright © 2008-2011 Nathan Hjelm 4 | Copyright © 2009-2012 Pete Batard 5 | Copyright © 2010-2012 Michael Plante 6 | Copyright © 2011-2012 Hans de Goede 7 | Copyright © 2012 Martin Pieuchot 8 | 9 | Other contributors: 10 | Alan Ott 11 | Alan Stern 12 | Alex Vatchenko 13 | Artem Egorkine 14 | Aurelien Jarno 15 | Bastien Nocera 16 | Dave Camarillo 17 | David Engraf 18 | David Moore 19 | Felipe Balbi 20 | Francesco Montorsi 21 | Graeme Gill 22 | Hans Ulrich Niedermann 23 | Hector Martin 24 | Hoi-Ho Chan 25 | James Hanko 26 | Konrad Rzepecki 27 | Ludovic Rousseau 28 | Martin Koegler 29 | Mike Frysinger 30 | Mikhail Gusarov 31 | Pekka Nikander 32 | Peter Stuge 33 | Rob Walker 34 | Sean McBride 35 | Sebastian Pipping 36 | Thomas Röfer 37 | Toby Gray 38 | Toby Peterson 39 | Trygve Laugstøl 40 | Uri Lublin 41 | Vasily Khoruzhick 42 | Vitali Lovich 43 | Xiaofan Chen 44 | -------------------------------------------------------------------------------- /sdkpack/license_and_copyrights/libusbX/README: -------------------------------------------------------------------------------- 1 | libusbx 2 | ======= 3 | 4 | libusbx is a library for USB device access from Linux, Mac OS X, 5 | Windows and OpenBSD userspace (with OpenBSD, and to a lesser extent 6 | Windows, currently being considered EXPERIMENTAL). 7 | It is written in C and licensed under the GNU Lesser General Public 8 | License version 2.1 or (at your option) any later version (see COPYING). 9 | 10 | libusbx is abstracted internally in such a way that it can hopefully 11 | be ported to other operating systems. Please see the PORTING file 12 | for more information. 13 | 14 | libusbx homepage: 15 | http://libusbx.org/ 16 | 17 | Developers will wish to consult the API documentation: 18 | http://libusbx.sourceforge.net/api-1.0/ 19 | 20 | Use the mailing list for questions, comments, etc: 21 | https://lists.sourceforge.net/lists/listinfo/libusbx-devel 22 | 23 | - Pete Batard 24 | - Hans de Goede 25 | - Xiaofan Chen 26 | - Ludovic Rousseau 27 | (use the mailing list rather than mailing developers directly) 28 | -------------------------------------------------------------------------------- /sdkpack/ref/dll/libusb-1.0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/libusb-1.0.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_calib3d246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_calib3d246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_contrib246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_contrib246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_core246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_core246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_features2d246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_features2d246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_ffmpeg246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_ffmpeg246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_flann246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_flann246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_gpu246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_gpu246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_highgui246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_highgui246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_imgproc246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_imgproc246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_legacy246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_legacy246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_ml246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_ml246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_nonfree246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_nonfree246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_objdetect246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_objdetect246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_stitching246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_stitching246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_superres246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_superres246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_ts246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_ts246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_video246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_video246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dll/opencv_videostab246.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dll/opencv_videostab246.dll -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_calib3d.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_calib3d.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_contrib.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_contrib.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_core.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_core.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_features2d.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_features2d.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_flann.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_flann.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_gpu.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_gpu.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_highgui.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_highgui.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_imgproc.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_imgproc.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_legacy.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_legacy.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_ml.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_ml.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_objdetect.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_objdetect.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libopencv_video.2.3.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libopencv_video.2.3.dylib -------------------------------------------------------------------------------- /sdkpack/ref/dylib/libpng15.15.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/dylib/libpng15.15.dylib -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cv.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_OLD_CV_HPP__ 44 | #define __OPENCV_OLD_CV_HPP__ 45 | 46 | //#if defined(__GNUC__) 47 | //#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" 48 | //#endif 49 | 50 | #include 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cvaux.h: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // Intel License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000, Intel Corporation, all rights reserved. 14 | // Third party copyrights are property of their respective owners. 15 | // 16 | // Redistribution and use in source and binary forms, with or without modification, 17 | // are permitted provided that the following conditions are met: 18 | // 19 | // * Redistribution's of source code must retain the above copyright notice, 20 | // this list of conditions and the following disclaimer. 21 | // 22 | // * Redistribution's in binary form must reproduce the above copyright notice, 23 | // this list of conditions and the following disclaimer in the documentation 24 | // and/or other materials provided with the distribution. 25 | // 26 | // * The name of Intel Corporation may not be used to endorse or promote products 27 | // derived from this software without specific prior written permission. 28 | // 29 | // This software is provided by the copyright holders and contributors "as is" and 30 | // any express or implied warranties, including, but not limited to, the implied 31 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 | // In no event shall the Intel Corporation or contributors be liable for any direct, 33 | // indirect, incidental, special, exemplary, or consequential damages 34 | // (including, but not limited to, procurement of substitute goods or services; 35 | // loss of use, data, or profits; or business interruption) however caused 36 | // and on any theory of liability, whether in contract, strict liability, 37 | // or tort (including negligence or otherwise) arising in any way out of 38 | // the use of this software, even if advised of the possibility of such damage. 39 | // 40 | //M*/ 41 | 42 | #ifndef __OPENCV_OLD_AUX_H__ 43 | #define __OPENCV_OLD_AUX_H__ 44 | 45 | //#if defined(__GNUC__) 46 | //#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" 47 | //#endif 48 | 49 | #include "opencv2/core/core_c.h" 50 | #include "opencv2/core/core.hpp" 51 | #include "opencv2/imgproc/imgproc_c.h" 52 | #include "opencv2/imgproc/imgproc.hpp" 53 | #include "opencv2/video/tracking.hpp" 54 | #include "opencv2/video/background_segm.hpp" 55 | #include "opencv2/features2d/features2d.hpp" 56 | #include "opencv2/calib3d/calib3d.hpp" 57 | #include "opencv2/objdetect/objdetect.hpp" 58 | #include "opencv2/legacy/legacy.hpp" 59 | #include "opencv2/legacy/compat.hpp" 60 | #include "opencv2/legacy/blobtrack.hpp" 61 | #include "opencv2/contrib/contrib.hpp" 62 | 63 | #endif 64 | 65 | /* End of file. */ 66 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cvaux.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // Intel License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000, Intel Corporation, all rights reserved. 14 | // Third party copyrights are property of their respective owners. 15 | // 16 | // Redistribution and use in source and binary forms, with or without modification, 17 | // are permitted provided that the following conditions are met: 18 | // 19 | // * Redistribution's of source code must retain the above copyright notice, 20 | // this list of conditions and the following disclaimer. 21 | // 22 | // * Redistribution's in binary form must reproduce the above copyright notice, 23 | // this list of conditions and the following disclaimer in the documentation 24 | // and/or other materials provided with the distribution. 25 | // 26 | // * The name of Intel Corporation may not be used to endorse or promote products 27 | // derived from this software without specific prior written permission. 28 | // 29 | // This software is provided by the copyright holders and contributors "as is" and 30 | // any express or implied warranties, including, but not limited to, the implied 31 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 | // In no event shall the Intel Corporation or contributors be liable for any direct, 33 | // indirect, incidental, special, exemplary, or consequential damages 34 | // (including, but not limited to, procurement of substitute goods or services; 35 | // loss of use, data, or profits; or business interruption) however caused 36 | // and on any theory of liability, whether in contract, strict liability, 37 | // or tort (including negligence or otherwise) arising in any way out of 38 | // the use of this software, even if advised of the possibility of such damage. 39 | // 40 | //M*/ 41 | 42 | #ifndef __OPENCV_OLD_AUX_HPP__ 43 | #define __OPENCV_OLD_AUX_HPP__ 44 | 45 | //#if defined(__GNUC__) 46 | //#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" 47 | //#endif 48 | 49 | #include 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cvwimage.h: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 3 | // 4 | // By downloading, copying, installing or using the software you agree to 5 | // this license. If you do not agree to this license, do not download, 6 | // install, copy or use the software. 7 | // 8 | // License Agreement 9 | // For Open Source Computer Vision Library 10 | // 11 | // Copyright (C) 2008, Google, all rights reserved. 12 | // Third party copyrights are property of their respective owners. 13 | // 14 | // Redistribution and use in source and binary forms, with or without 15 | // modification, are permitted provided that the following conditions are met: 16 | // 17 | // * Redistribution's of source code must retain the above copyright notice, 18 | // this list of conditions and the following disclaimer. 19 | // 20 | // * Redistribution's in binary form must reproduce the above copyright notice, 21 | // this list of conditions and the following disclaimer in the documentation 22 | // and/or other materials provided with the distribution. 23 | // 24 | // * The name of Intel Corporation or contributors may not be used to endorse 25 | // or promote products derived from this software without specific 26 | // prior written permission. 27 | // 28 | // This software is provided by the copyright holders and contributors "as is" 29 | // and any express or implied warranties, including, but not limited to, the 30 | // implied warranties of merchantability and fitness for a particular purpose 31 | // are disclaimed. In no event shall the Intel Corporation or contributors be 32 | // liable for any direct, indirect, incidental, special, exemplary, or 33 | // consequential damages 34 | // (including, but not limited to, procurement of substitute goods or services; 35 | // loss of use, data, or profits; or business interruption) however caused 36 | // and on any theory of liability, whether in contract, strict liability, 37 | // or tort (including negligence or otherwise) arising in any way out of 38 | // the use of this software, even if advised of the possibility of such damage. 39 | 40 | 41 | #ifndef __OPENCV_OLD_WIMAGE_HPP__ 42 | #define __OPENCV_OLD_WIMAGE_HPP__ 43 | 44 | #include "opencv2/core/wimage.hpp" 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cxcore.h: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_OLD_CXCORE_H__ 44 | #define __OPENCV_OLD_CXCORE_H__ 45 | 46 | //#if defined(__GNUC__) 47 | //#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" 48 | //#endif 49 | 50 | #include "opencv2/core/core_c.h" 51 | #include "opencv2/core/core.hpp" 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cxcore.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_OLD_CXCORE_HPP__ 44 | #define __OPENCV_OLD_CXCORE_HPP__ 45 | 46 | //#if defined(__GNUC__) 47 | //#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" 48 | //#endif 49 | 50 | #include 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cxeigen.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_OLD_EIGEN_HPP__ 44 | #define __OPENCV_OLD_EIGEN_HPP__ 45 | 46 | #include "opencv2/core/eigen.hpp" 47 | 48 | #endif 49 | 50 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/cxmisc.h: -------------------------------------------------------------------------------- 1 | #ifndef __OPENCV_OLD_CXMISC_H__ 2 | #define __OPENCV_OLD_CXMISC_H__ 3 | 4 | #include "opencv2/core/internal.hpp" 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/highgui.h: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // Intel License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000, Intel Corporation, all rights reserved. 14 | // Third party copyrights are property of their respective owners. 15 | // 16 | // Redistribution and use in source and binary forms, with or without modification, 17 | // are permitted provided that the following conditions are met: 18 | // 19 | // * Redistribution's of source code must retain the above copyright notice, 20 | // this list of conditions and the following disclaimer. 21 | // 22 | // * Redistribution's in binary form must reproduce the above copyright notice, 23 | // this list of conditions and the following disclaimer in the documentation 24 | // and/or other materials provided with the distribution. 25 | // 26 | // * The name of Intel Corporation may not be used to endorse or promote products 27 | // derived from this software without specific prior written permission. 28 | // 29 | // This software is provided by the copyright holders and contributors "as is" and 30 | // any express or implied warranties, including, but not limited to, the implied 31 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 | // In no event shall the Intel Corporation or contributors be liable for any direct, 33 | // indirect, incidental, special, exemplary, or consequential damages 34 | // (including, but not limited to, procurement of substitute goods or services; 35 | // loss of use, data, or profits; or business interruption) however caused 36 | // and on any theory of liability, whether in contract, strict liability, 37 | // or tort (including negligence or otherwise) arising in any way out of 38 | // the use of this software, even if advised of the possibility of such damage. 39 | // 40 | //M*/ 41 | 42 | #ifndef __OPENCV_OLD_HIGHGUI_H__ 43 | #define __OPENCV_OLD_HIGHGUI_H__ 44 | 45 | #include "opencv2/core/core_c.h" 46 | #include "opencv2/core/core.hpp" 47 | #include "opencv2/highgui/highgui_c.h" 48 | #include "opencv2/highgui/highgui.hpp" 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv/ml.h: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // Intel License Agreement 11 | // 12 | // Copyright (C) 2000, Intel Corporation, all rights reserved. 13 | // Third party copyrights are property of their respective owners. 14 | // 15 | // Redistribution and use in source and binary forms, with or without modification, 16 | // are permitted provided that the following conditions are met: 17 | // 18 | // * Redistribution's of source code must retain the above copyright notice, 19 | // this list of conditions and the following disclaimer. 20 | // 21 | // * Redistribution's in binary form must reproduce the above copyright notice, 22 | // this list of conditions and the following disclaimer in the documentation 23 | // and/or other materials provided with the distribution. 24 | // 25 | // * The name of Intel Corporation may not be used to endorse or promote products 26 | // derived from this software without specific prior written permission. 27 | // 28 | // This software is provided by the copyright holders and contributors "as is" and 29 | // any express or implied warranties, including, but not limited to, the implied 30 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 31 | // In no event shall the Intel Corporation or contributors be liable for any direct, 32 | // indirect, incidental, special, exemplary, or consequential damages 33 | // (including, but not limited to, procurement of substitute goods or services; 34 | // loss of use, data, or profits; or business interruption) however caused 35 | // and on any theory of liability, whether in contract, strict liability, 36 | // or tort (including negligence or otherwise) arising in any way out of 37 | // the use of this software, even if advised of the possibility of such damage. 38 | // 39 | //M*/ 40 | 41 | #ifndef __OPENCV_OLD_ML_H__ 42 | #define __OPENCV_OLD_ML_H__ 43 | 44 | #include "opencv2/core/core_c.h" 45 | #include "opencv2/core/core.hpp" 46 | #include "opencv2/ml/ml.hpp" 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/core/version.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // Intel License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright( C) 2000, Intel Corporation, all rights reserved. 14 | // Third party copyrights are property of their respective owners. 15 | // 16 | // Redistribution and use in source and binary forms, with or without modification, 17 | // are permitted provided that the following conditions are met: 18 | // 19 | // * Redistribution's of source code must retain the above copyright notice, 20 | // this list of conditions and the following disclaimer. 21 | // 22 | // * Redistribution's in binary form must reproduce the above copyright notice, 23 | // this list of conditions and the following disclaimer in the documentation 24 | // and/or other materials provided with the distribution. 25 | // 26 | // * The name of Intel Corporation may not be used to endorse or promote products 27 | // derived from this software without specific prior written permission. 28 | // 29 | // This software is provided by the copyright holders and contributors "as is" and 30 | // any express or implied warranties, including, but not limited to, the implied 31 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 | // In no event shall the Intel Corporation or contributors be liable for any direct, 33 | // indirect, incidental, special, exemplary, or consequential damages 34 | //(including, but not limited to, procurement of substitute goods or services; 35 | // loss of use, data, or profits; or business interruption) however caused 36 | // and on any theory of liability, whether in contract, strict liability, 37 | // or tort(including negligence or otherwise) arising in any way out of 38 | // the use of this software, even if advised of the possibility of such damage. 39 | // 40 | //M*/ 41 | 42 | /* 43 | definition of the current version of OpenCV 44 | Usefull to test in user programs 45 | */ 46 | 47 | #ifndef __OPENCV_VERSION_HPP__ 48 | #define __OPENCV_VERSION_HPP__ 49 | 50 | #define CV_MAJOR_VERSION 2 51 | #define CV_MINOR_VERSION 3 52 | #define CV_SUBMINOR_VERSION 1 53 | 54 | #define CVAUX_STR_EXP(__A) #__A 55 | #define CVAUX_STR(__A) CVAUX_STR_EXP(__A) 56 | #define CV_VERSION CVAUX_STR(CV_MAJOR_VERSION) "." CVAUX_STR(CV_MINOR_VERSION) "." CVAUX_STR(CV_SUBMINOR_VERSION) 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/flann/config.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 5 | * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * 1. Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * 2. Redistributions in binary form must reproduce the above copyright 14 | * notice, this list of conditions and the following disclaimer in the 15 | * documentation and/or other materials provided with the distribution. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | *************************************************************************/ 28 | 29 | 30 | #ifndef OPENCV_FLANN_CONFIG_H_ 31 | #define OPENCV_FLANN_CONFIG_H_ 32 | 33 | #ifdef FLANN_VERSION_ 34 | #undef FLANN_VERSION_ 35 | #endif 36 | #define FLANN_VERSION_ "1.6.10" 37 | 38 | #endif /* OPENCV_FLANN_CONFIG_H_ */ 39 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/flann/dummy.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef OPENCV_FLANN_DUMMY_H_ 3 | #define OPENCV_FLANN_DUMMY_H_ 4 | 5 | namespace cvflann 6 | { 7 | 8 | #if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS 9 | __declspec(dllexport) 10 | #endif 11 | void dummyfunc(); 12 | 13 | } 14 | 15 | 16 | #endif /* OPENCV_FLANN_DUMMY_H_ */ 17 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/flann/general.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 5 | * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 6 | * 7 | * THE BSD LICENSE 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * 1. Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * 2. Redistributions in binary form must reproduce the above copyright 16 | * notice, this list of conditions and the following disclaimer in the 17 | * documentation and/or other materials provided with the distribution. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | *************************************************************************/ 30 | 31 | #ifndef OPENCV_FLANN_GENERAL_H_ 32 | #define OPENCV_FLANN_GENERAL_H_ 33 | 34 | #include "defines.h" 35 | #include 36 | #include 37 | 38 | namespace cvflann 39 | { 40 | 41 | class FLANNException : public std::runtime_error 42 | { 43 | public: 44 | FLANNException(const char* message) : std::runtime_error(message) { } 45 | 46 | FLANNException(const std::string& message) : std::runtime_error(message) { } 47 | }; 48 | 49 | } 50 | 51 | 52 | #endif /* OPENCV_FLANN_GENERAL_H_ */ 53 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/flann/sampling.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 5 | * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * 1. Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * 2. Redistributions in binary form must reproduce the above copyright 14 | * notice, this list of conditions and the following disclaimer in the 15 | * documentation and/or other materials provided with the distribution. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | *************************************************************************/ 28 | 29 | 30 | #ifndef OPENCV_FLANN_SAMPLING_H_ 31 | #define OPENCV_FLANN_SAMPLING_H_ 32 | 33 | #include "matrix.h" 34 | #include "random.h" 35 | 36 | namespace cvflann 37 | { 38 | 39 | template 40 | Matrix random_sample(Matrix& srcMatrix, long size, bool remove = false) 41 | { 42 | Matrix newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols); 43 | 44 | T* src,* dest; 45 | for (long i=0; i 63 | Matrix random_sample(const Matrix& srcMatrix, size_t size) 64 | { 65 | UniqueRandom rand(srcMatrix.rows); 66 | Matrix newSet(new T[size * srcMatrix.cols], size,srcMatrix.cols); 67 | 68 | T* src,* dest; 69 | for (size_t i=0; i 35 | 36 | 37 | namespace cvflann 38 | { 39 | 40 | /** 41 | * A start-stop timer class. 42 | * 43 | * Can be used to time portions of code. 44 | */ 45 | class StartStopTimer 46 | { 47 | clock_t startTime; 48 | 49 | public: 50 | /** 51 | * Value of the timer. 52 | */ 53 | double value; 54 | 55 | 56 | /** 57 | * Constructor. 58 | */ 59 | StartStopTimer() 60 | { 61 | reset(); 62 | } 63 | 64 | /** 65 | * Starts the timer. 66 | */ 67 | void start() 68 | { 69 | startTime = clock(); 70 | } 71 | 72 | /** 73 | * Stops the timer and updates timer value. 74 | */ 75 | void stop() 76 | { 77 | clock_t stopTime = clock(); 78 | value += ( (double)stopTime - startTime) / CLOCKS_PER_SEC; 79 | } 80 | 81 | /** 82 | * Resets the timer value to 0. 83 | */ 84 | void reset() 85 | { 86 | value = 0; 87 | } 88 | 89 | }; 90 | 91 | } 92 | 93 | #endif // FLANN_TIMER_H 94 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/gpu/stream_accessor.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other GpuMaterials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_GPU_STREAM_ACCESSOR_HPP__ 44 | #define __OPENCV_GPU_STREAM_ACCESSOR_HPP__ 45 | 46 | #include "opencv2/gpu/gpu.hpp" 47 | #include "cuda_runtime_api.h" 48 | 49 | namespace cv 50 | { 51 | namespace gpu 52 | { 53 | // This is only header file that depends on Cuda. All other headers are independent. 54 | // So if you use OpenCV binaries you do noot need to install Cuda Toolkit. 55 | // But of you wanna use GPU by yourself, may get cuda stream instance using the class below. 56 | // In this case you have to install Cuda Toolkit. 57 | struct StreamAccessor 58 | { 59 | CV_EXPORTS static cudaStream_t getStream(const Stream& stream); 60 | }; 61 | } 62 | } 63 | 64 | #endif /* __OPENCV_GPU_STREAM_ACCESSOR_HPP__ */ -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/opencv.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_ALL_HPP__ 44 | #define __OPENCV_ALL_HPP__ 45 | 46 | #include "opencv2/core/core_c.h" 47 | #include "opencv2/core/core.hpp" 48 | #include "opencv2/flann/miniflann.hpp" 49 | #include "opencv2/imgproc/imgproc_c.h" 50 | #include "opencv2/imgproc/imgproc.hpp" 51 | #include "opencv2/photo/photo.hpp" 52 | #include "opencv2/video/video.hpp" 53 | #include "opencv2/features2d/features2d.hpp" 54 | #include "opencv2/objdetect/objdetect.hpp" 55 | #include "opencv2/calib3d/calib3d.hpp" 56 | #include "opencv2/ml/ml.hpp" 57 | #include "opencv2/highgui/highgui_c.h" 58 | #include "opencv2/highgui/highgui.hpp" 59 | #include "opencv2/contrib/contrib.hpp" 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /sdkpack/ref/inc/opencv_new/opencv2/video/video.hpp: -------------------------------------------------------------------------------- 1 | /*M/////////////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 | // 5 | // By downloading, copying, installing or using the software you agree to this license. 6 | // If you do not agree to this license, do not download, install, 7 | // copy or use the software. 8 | // 9 | // 10 | // License Agreement 11 | // For Open Source Computer Vision Library 12 | // 13 | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 | // Third party copyrights are property of their respective owners. 16 | // 17 | // Redistribution and use in source and binary forms, with or without modification, 18 | // are permitted provided that the following conditions are met: 19 | // 20 | // * Redistribution's of source code must retain the above copyright notice, 21 | // this list of conditions and the following disclaimer. 22 | // 23 | // * Redistribution's in binary form must reproduce the above copyright notice, 24 | // this list of conditions and the following disclaimer in the documentation 25 | // and/or other materials provided with the distribution. 26 | // 27 | // * The name of the copyright holders may not be used to endorse or promote products 28 | // derived from this software without specific prior written permission. 29 | // 30 | // This software is provided by the copyright holders and contributors "as is" and 31 | // any express or implied warranties, including, but not limited to, the implied 32 | // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 | // In no event shall the Intel Corporation or contributors be liable for any direct, 34 | // indirect, incidental, special, exemplary, or consequential damages 35 | // (including, but not limited to, procurement of substitute goods or services; 36 | // loss of use, data, or profits; or business interruption) however caused 37 | // and on any theory of liability, whether in contract, strict liability, 38 | // or tort (including negligence or otherwise) arising in any way out of 39 | // the use of this software, even if advised of the possibility of such damage. 40 | // 41 | //M*/ 42 | 43 | #ifndef __OPENCV_VIDEO_HPP__ 44 | #define __OPENCV_VIDEO_HPP__ 45 | 46 | #include "opencv2/video/tracking.hpp" 47 | #include "opencv2/video/background_segm.hpp" 48 | 49 | #endif //__OPENCV_VIDEO_HPP__ 50 | -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/libusb-1.0.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/libusb-1.0.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_calib3d246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_calib3d246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_contrib246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_contrib246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_core246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_core246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_features2d246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_features2d246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_flann246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_flann246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_gpu246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_gpu246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_haartraining_engined.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_haartraining_engined.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_highgui246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_highgui246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_imgproc246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_imgproc246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_legacy246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_legacy246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_ml246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_ml246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_nonfree246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_nonfree246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_objdetect246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_objdetect246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_photo246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_photo246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_stitching246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_stitching246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_superres246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_superres246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_ts246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_ts246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_video246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_video246.lib -------------------------------------------------------------------------------- /sdkpack/ref/lib/win32/x86/opencv_videostab246.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robopeak/laserkbd/9ffdbc26cda9eafb702c4f8a20b2c8e9b4c51998/sdkpack/ref/lib/win32/x86/opencv_videostab246.lib --------------------------------------------------------------------------------