├── .gitignore ├── Air Mouse 2 ├── icon.png ├── layout.xml ├── meta.prop └── remote.lua ├── Air Mouse ├── icon.png ├── layout.xml ├── meta.prop └── remote.lua ├── Custom Mouse ├── layout.xml ├── meta.prop └── remote.lua ├── Games ├── ETS2 │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Emu Controller │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FSX │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ ├── remote.lua │ └── settings.prop ├── Google Earth │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Joystick │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Minecraft │ ├── README.md │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ ├── remote.lua │ └── screen1.png ├── Orientation │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Touch Joystick │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── TrackMania │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua └── Walk Look │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── LaunchApps ├── LaunchApps.png ├── layout.xml ├── meta.prop └── remote.lua ├── Layout ├── Button │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Color Chanage │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Color Change 2 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Colors Bad │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Colors │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Dialogs │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Grid Cols │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Grid Empty Row │ ├── layout.xml │ └── meta.prop ├── Grid Nested │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Grid Rows │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Grid Wrap │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Hold │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Image │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Label │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── List │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── No Layout │ ├── meta.prop │ └── remote.lua ├── Scroll Few │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Scroll Tab │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Scroll Tabs │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Scroll │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Slider │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Tabs Nested │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Tabs │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Text │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Toggle │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Touch │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Visibility │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Wrap │ ├── layout.xml │ ├── meta.prop │ └── remote.lua └── test.png ├── Libs ├── Buffer │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── COM │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Data │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Device │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Execute │ ├── layout.xml │ ├── meta.prop │ ├── remote.lua │ └── test.bat ├── Extension │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FFI │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FFI2 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FS 2 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FS 3 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FS Attributes │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── FS │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── GPIO 2 │ ├── meta.prop │ └── remote.lua ├── GPIO │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── IO │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Joystick │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Keyboard │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Log │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Mouse │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Network │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── OAuth1 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── OAuth2 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── OS │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── PS │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Script │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Socket │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Timer │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── UTF8 Perf │ ├── TestUTF8Perf.txt │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── UTF8 │ ├── layout.xml │ ├── meta.prop │ └── remote.lua └── Win │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Loading ├── Icon Custom │ ├── custom.png │ ├── icon.png │ └── meta.prop ├── Icon Error │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── test ├── Icon Missing │ ├── meta.prop │ └── test ├── Icon None │ └── meta.prop ├── Icon Platform │ ├── icon.png │ ├── icon_linux.png │ ├── icon_osx.png │ ├── icon_win.png │ └── meta.prop ├── Layout Empty │ ├── layout.xml │ ├── meta.prop │ └── test ├── Layout Error │ ├── layout.xml │ ├── meta.prop │ └── test ├── Layout Missing │ ├── meta.prop │ └── test ├── Layout None │ └── meta.prop ├── Layout Platform │ ├── layout.xml │ ├── layout_linux.xml │ ├── layout_osx.xml │ ├── layout_win.xml │ └── meta.prop ├── Lua Empty │ ├── meta.prop │ └── remote.lua ├── Lua Error │ ├── meta.prop │ ├── remote.lua │ └── test ├── Lua Missing │ ├── meta.prop │ └── test ├── Lua None │ └── meta.prop ├── Lua Platform │ ├── meta.prop │ ├── remote.lua │ ├── remote_linux.lua │ ├── remote_osx.lua │ └── remote_win.lua ├── Lua Require Error │ ├── meta.prop │ ├── remote.lua │ └── test ├── Meta All │ └── meta.prop ├── Meta Empty │ ├── meta.prop │ └── test ├── Meta Good │ └── meta.prop ├── Meta ID Bad │ ├── meta.prop │ └── test ├── Meta ID Duplicate 2 │ ├── meta.prop │ └── test ├── Meta ID Duplicate │ └── meta.prop ├── Meta ID Override │ └── meta.prop ├── Meta ID │ └── meta.prop ├── Meta Invalid │ ├── meta.prop │ └── test ├── Meta Missing Author │ ├── meta.prop │ └── test ├── Meta Missing Name │ ├── meta.prop │ └── test ├── Meta Platform Linux │ └── meta.prop ├── Meta Platform OSX │ └── meta.prop ├── Meta Platform Win │ └── meta.prop ├── Meta Unknown │ ├── meta.prop │ └── test ├── Preload Empty │ ├── meta.prop │ └── remote.lua ├── Preload Error │ ├── meta.prop │ ├── remote.lua │ └── test ├── README.md ├── Settings Empty │ ├── meta.prop │ └── settings.prop ├── Settings Error │ ├── meta.prop │ ├── settings.prop │ └── test ├── Settings Missing │ ├── meta.prop │ └── test ├── Settings None │ └── meta.prop └── Settings Platform │ ├── meta.prop │ ├── settings.prop │ ├── settings_linux.prop │ ├── settings_osx.prop │ └── settings_win.prop ├── Pending ├── Facebook Web │ ├── icon.png │ ├── layout.xml │ ├── like_logo.png │ ├── meta.prop │ └── remote.lua ├── README.md └── Start │ ├── icon.png │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── README.md ├── Readme Test ├── README.md ├── icon.png ├── icon_hires.png ├── layout.xml ├── meta.prop ├── remote.lua └── screen.png ├── Remote ├── Callback Throw │ ├── meta.prop │ └── remote.lua ├── Date Time │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Delay │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Documentation │ ├── meta.prop │ └── remote.lua ├── Empty Events │ ├── meta.prop │ └── remote.lua ├── Events │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Exception │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Helpers │ ├── layout.xml │ ├── meta.prop │ ├── remote.lua │ └── settings.prop ├── Icon │ ├── icon.png │ ├── meta.prop │ └── remote.lua ├── Long Running │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── No Events │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Nothing │ ├── meta.prop │ └── remote.lua ├── Order │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Settings │ ├── layout.xml │ ├── meta.prop │ ├── remote.lua │ └── settings.prop ├── Test.Queues │ ├── layout.xml │ ├── meta.prop │ └── remote.lua ├── Threading │ ├── layout.xml │ ├── meta.prop │ └── remote.lua └── Throw │ ├── meta.prop │ └── remote.lua ├── Template ├── README.txt ├── layout.xml ├── meta.prop └── remote.lua ├── Test ├── layout.xml ├── meta.prop └── remote.lua ├── Volume rocker example ├── layout.xml ├── meta.prop └── remote.lua └── Windows Media Center (with recording) ├── icon.png ├── layout.xml ├── meta.prop └── remote.lua /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Spotify Advanced 2/latest_coverart.png 3 | Spotify Advanced 2/*.json 4 | Spotify Advanced 2/*.prop -------------------------------------------------------------------------------- /Air Mouse 2/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unifiedremote/Test-Remotes/3bfca287852bd71626aea45c108ad6035faf13be/Air Mouse 2/icon.png -------------------------------------------------------------------------------- /Air Mouse 2/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /Air Mouse 2/meta.prop: -------------------------------------------------------------------------------- 1 | meta.name: Air Mouse 2 2 | meta.author: Unified 3 | meta.description: Control mouse using accelerometer. 4 | -------------------------------------------------------------------------------- /Air Mouse 2/remote.lua: -------------------------------------------------------------------------------- 1 | local ms = libs.mouse; 2 | local screen = libs.screen; 3 | local j = libs.joystick; 4 | local kb = libs.keyboard; 5 | 6 | 7 | local zero = { x = 0, y = 0 }; 8 | local size = { w = 0, h = 0 }; 9 | local last = { x = 0, y = 0 }; 10 | 11 | events.focus = function () 12 | has = false; 13 | size.w, size.h = screen.size(); 14 | end 15 | 16 | 17 | local buf_x = { }; 18 | local buf_y = { }; 19 | local buf_len = 10; 20 | 21 | 22 | function buf_fill(buf, value) 23 | for i = 0, buf_len - 1 do 24 | buf[i] = value; 25 | end 26 | end 27 | 28 | function buf_avg(buf, value) 29 | -- shift all values to the right 30 | for i = 0, buf_len - 2 do 31 | buf[5-i] = buf[5-i-1]; 32 | end 33 | -- add new value 34 | buf[0] = value; 35 | -- calc avg 36 | local sum = 0; 37 | for i = 0, buf_len - 1 do 38 | sum = sum + buf[i]; 39 | end 40 | return sum / buf_len; 41 | end 42 | 43 | 44 | actions.orientation = function (x, y, z) 45 | 46 | layout.info.text = x .. " " .. y; 47 | 48 | if (not has) then 49 | -- Set zero position 50 | zero.x = x; 51 | zero.y = y; 52 | 53 | buf_fill(buf_x, 0); 54 | buf_fill(buf_y, 0); 55 | 56 | has = true; 57 | 58 | last.x = x; 59 | last.y = y; 60 | end 61 | 62 | local delta = { 63 | x = x - last.x, 64 | y = y - last.y 65 | }; 66 | 67 | --local Aperture = 10; 68 | --local A = Aperture; 69 | --local Divisions = 100; 70 | --local Step = Aperture / Divisions; 71 | 72 | --local div_x = math.round(Aperture / Divisions * delta.x); 73 | --local div_y = math.round(Aperture / Divisions * delta.y); 74 | 75 | --if (div_x > Divisions) then div_x = Divisions; end 76 | --if (div_y > Divisions) then div_y = Divisions; end 77 | --if (div_x < -Divisions) then div_x = -Divisions; end 78 | --if (div_y < -Divisions) then div_y = -Divisions; end 79 | 80 | --x = buf_avg(buf_x, delta.x); 81 | --y = buf_avg(buf_y, delta.y); 82 | 83 | x = math.round(x / 20) * 1; 84 | y = math.round(y / 20) * 1; 85 | 86 | ms.moveraw(x, y); 87 | kb.press("ctrl"); 88 | 89 | last.x = x; 90 | last.y = y; 91 | end 92 | -------------------------------------------------------------------------------- /Air Mouse/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unifiedremote/Test-Remotes/3bfca287852bd71626aea45c108ad6035faf13be/Air Mouse/icon.png -------------------------------------------------------------------------------- /Air Mouse/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /Air Mouse/meta.prop: -------------------------------------------------------------------------------- 1 | meta.name: Air Mouse 2 | meta.author: Unified 3 | meta.description: Control mouse using accelerometer. 4 | -------------------------------------------------------------------------------- /Air Mouse/remote.lua: -------------------------------------------------------------------------------- 1 | local ms = libs.mouse; 2 | local screen = libs.screen; 3 | local j = libs.joystick; 4 | local kb = libs.keyboard; 5 | 6 | 7 | local zero = { x = 0, y = 0 }; 8 | local size = { w = 0, h = 0 }; 9 | 10 | events.focus = function () 11 | has = false; 12 | size.w, size.h = screen.size(); 13 | end 14 | 15 | 16 | local buf_x = { }; 17 | local buf_y = { }; 18 | local buf_len = 10; 19 | 20 | 21 | function buf_fill(buf, value) 22 | for i = 0, buf_len - 1 do 23 | buf[i] = value; 24 | end 25 | end 26 | 27 | function buf_avg(buf, value) 28 | -- shift all values to the right 29 | for i = 0, buf_len - 2 do 30 | buf[5-i] = buf[5-i-1]; 31 | end 32 | -- add new value 33 | buf[0] = value; 34 | -- calc avg 35 | local sum = 0; 36 | for i = 0, buf_len - 1 do 37 | sum = sum + buf[i]; 38 | end 39 | return sum / buf_len; 40 | end 41 | 42 | 43 | actions.orientation = function (x, y, z) 44 | 45 | layout.info.text = x .. " " .. y; 46 | 47 | if (not has) then 48 | -- Set zero position 49 | zero.x = x; 50 | zero.y = y; 51 | 52 | buf_fill(buf_x, 50); 53 | buf_fill(buf_y, 50); 54 | 55 | has = true; 56 | end 57 | 58 | local delta = { 59 | x = x - zero.x, 60 | y = y - zero.y 61 | }; 62 | 63 | --local Aperture = 10; 64 | --local A = Aperture; 65 | --local Divisions = 100; 66 | --local Step = Aperture / Divisions; 67 | 68 | --local div_x = math.round(Aperture / Divisions * delta.x); 69 | --local div_y = math.round(Aperture / Divisions * delta.y); 70 | 71 | --if (div_x > Divisions) then div_x = Divisions; end 72 | --if (div_y > Divisions) then div_y = Divisions; end 73 | --if (div_x < -Divisions) then div_x = -Divisions; end 74 | --if (div_y < -Divisions) then div_y = -Divisions; end 75 | 76 | local A = 20; 77 | local D = 100; 78 | local div_x = j.normalize(delta.x, -A, A, 0, D); 79 | local div_y = j.normalize(delta.y, -A, A, 0, D); 80 | 81 | 82 | --div_x = buf_avg(buf_x, div_x); 83 | --div_y = buf_avg(buf_y, div_y); 84 | 85 | x = math.round(size.w / D * div_x); 86 | y = math.round(size.h / D * div_y); 87 | 88 | --layout.info.text = x .. " " .. y; 89 | 90 | 91 | ms.moveto(x, y); 92 | kb.press("ctrl"); 93 | end 94 | -------------------------------------------------------------------------------- /Custom Mouse/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /Custom Mouse/meta.prop: -------------------------------------------------------------------------------- 1 | meta.name: Custom Mouse 2 | meta.author: Unified 3 | -------------------------------------------------------------------------------- /Custom Mouse/remote.lua: -------------------------------------------------------------------------------- 1 | local mouse = libs.mouse; 2 | 3 | actions.down = function () 4 | 5 | end 6 | 7 | actions.up = function () 8 | mouse.up(); 9 | end 10 | 11 | actions.delta = function (id, x, y) 12 | mouse.moveby(x, y); 13 | end 14 | 15 | actions.hold = function () 16 | mouse.down(); 17 | end 18 | -------------------------------------------------------------------------------- /Games/ETS2/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unifiedremote/Test-Remotes/3bfca287852bd71626aea45c108ad6035faf13be/Games/ETS2/icon.png -------------------------------------------------------------------------------- /Games/ETS2/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |