├── .gitignore ├── README.md ├── concepts ├── action-events.md ├── cross-platform.md ├── includes.md ├── layout.md ├── metadata.md ├── preloading.md ├── remote.md ├── settings.md ├── structure.md └── uri.md ├── controls ├── button.md ├── dialogs.md ├── grid.md ├── label.md ├── layout.md ├── list.md ├── slider.md ├── styling.md ├── tabs.md ├── text.md ├── toggle.md └── touch.md ├── intro ├── basic-template.md ├── compatibility.md ├── debugging.md ├── getting-started.md └── whats-included.md ├── libs ├── bit.md ├── buffer.md ├── com.md ├── data.md ├── device.md ├── ffi.md ├── fs.md ├── gpio.md ├── http.md ├── keyboard.md ├── layout.md ├── log.md ├── lua.md ├── math.md ├── mouse.md ├── os.md ├── ps.md ├── screen.md ├── script.md ├── server.md ├── settings.md ├── socket.md ├── timer.md ├── uia.md ├── utf8.md └── win.md └── res ├── buttons.md ├── icons.md ├── icons ├── adjust.png ├── adn.png ├── align-center.png ├── align-justify.png ├── align-left.png ├── align-right.png ├── ambulance.png ├── anchor.png ├── android.png ├── angle-double-down.png ├── angle-double-left.png ├── angle-double-right.png ├── angle-double-up.png ├── angle-down.png ├── angle-left.png ├── angle-right.png ├── angle-up.png ├── apple.png ├── archive.png ├── arrow-circle-down.png ├── arrow-circle-left.png ├── arrow-circle-o-down.png ├── arrow-circle-o-left.png ├── arrow-circle-o-right.png ├── arrow-circle-o-up.png ├── arrow-circle-right.png ├── arrow-circle-up.png ├── arrow-down.png ├── arrow-left.png ├── arrow-right.png ├── arrow-up.png ├── arrows-alt.png ├── arrows-h.png ├── arrows-v.png ├── arrows.png ├── asterisk.png ├── automobile.png ├── backward.png ├── ban.png ├── bank.png ├── bar-chart-o.png ├── barcode.png ├── bars.png ├── beer.png ├── behance-square.png ├── behance.png ├── bell-o.png ├── bell.png ├── bitbucket-square.png ├── bitbucket.png ├── bitcoin.png ├── bold.png ├── bolt.png ├── bomb.png ├── book.png ├── bookmark-o.png ├── bookmark.png ├── briefcase.png ├── btc.png ├── bug.png ├── building-o.png ├── building.png ├── bullhorn.png ├── bullseye.png ├── cab.png ├── calendar-o.png ├── calendar.png ├── camera-retro.png ├── camera.png ├── car.png ├── caret-down.png ├── caret-left.png ├── caret-right.png ├── caret-square-o-down.png ├── caret-square-o-left.png ├── caret-square-o-right.png ├── caret-square-o-up.png ├── caret-up.png ├── certificate.png ├── chain-broken.png ├── chain.png ├── check-circle-o.png ├── check-circle.png ├── check-square-o.png ├── check-square.png ├── check.png ├── chevron-circle-down.png ├── chevron-circle-left.png ├── chevron-circle-right.png ├── chevron-circle-up.png ├── chevron-down.png ├── chevron-left.png ├── chevron-right.png ├── chevron-up.png ├── child.png ├── circle-o-notch.png ├── circle-o.png ├── circle-thin.png ├── circle.png ├── clipboard.png ├── clock-o.png ├── cloud-download.png ├── cloud-upload.png ├── cloud.png ├── cny.png ├── code-fork.png ├── code.png ├── codepen.png ├── coffee.png ├── cog.png ├── cogs.png ├── columns.png ├── comment-o.png ├── comment.png ├── comments-o.png ├── comments.png ├── compass.png ├── compress.png ├── copy.png ├── credit-card.png ├── crop.png ├── crosshairs.png ├── css3.png ├── cube.png ├── cubes.png ├── cut.png ├── cutlery.png ├── dashboard.png ├── database.png ├── dedent.png ├── delicious.png ├── desktop.png ├── deviantart.png ├── digg.png ├── dollar.png ├── dot-circle-o.png ├── download.png ├── dribbble.png ├── dropbox.png ├── drupal.png ├── edit.png ├── eject.png ├── ellipsis-h.png ├── ellipsis-v.png ├── empire.png ├── envelope-o.png ├── envelope-square.png ├── envelope.png ├── eraser.png ├── eur.png ├── euro.png ├── exchange.png ├── exclamation-circle.png ├── exclamation-triangle.png ├── exclamation.png ├── expand.png ├── external-link-square.png ├── external-link.png ├── eye-slash.png ├── eye.png ├── facebook-square.png ├── facebook.png ├── fast-backward.png ├── fast-forward.png ├── fax.png ├── female.png ├── fighter-jet.png ├── file-archive-o.png ├── file-audio-o.png ├── file-code-o.png ├── file-excel-o.png ├── file-image-o.png ├── file-movie-o.png ├── file-o.png ├── file-pdf-o.png ├── file-photo-o.png ├── file-picture-o.png ├── file-powerpoint-o.png ├── file-sound-o.png ├── file-text-o.png ├── file-text.png ├── file-video-o.png ├── file-word-o.png ├── file-zip-o.png ├── file.png ├── files-o.png ├── film.png ├── filter.png ├── fire-extinguisher.png ├── fire.png ├── flag-checkered.png ├── flag-o.png ├── flag.png ├── flash.png ├── flask.png ├── flickr.png ├── floppy-o.png ├── folder-o.png ├── folder-open-o.png ├── folder-open.png ├── folder.png ├── font.png ├── forward.png ├── foursquare.png ├── frown-o.png ├── gamepad.png ├── gavel.png ├── gbp.png ├── ge.png ├── gear.png ├── gears.png ├── gift.png ├── git-square.png ├── git.png ├── github-alt.png ├── github-square.png ├── github.png ├── gittip.png ├── glass.png ├── globe.png ├── google-plus-square.png ├── google-plus.png ├── google.png ├── graduation-cap.png ├── group.png ├── h-square.png ├── hacker-news.png ├── hand-o-down.png ├── hand-o-left.png ├── hand-o-right.png ├── hand-o-up.png ├── hdd-o.png ├── header.png ├── headphones.png ├── heart-o.png ├── heart.png ├── history.png ├── home.png ├── hospital-o.png ├── html5.png ├── im-play-pause.png ├── image.png ├── inbox.png ├── indent.png ├── info-circle.png ├── info.png ├── inr.png ├── instagram.png ├── institution.png ├── italic.png ├── joomla.png ├── jpy.png ├── jsfiddle.png ├── key.png ├── keyboard-o.png ├── krw.png ├── language.png ├── laptop.png ├── leaf.png ├── legal.png ├── lemon-o.png ├── level-down.png ├── level-up.png ├── life-bouy.png ├── life-ring.png ├── life-saver.png ├── lightbulb-o.png ├── link.png ├── linkedin-square.png ├── linkedin.png ├── linux.png ├── list-alt.png ├── list-ol.png ├── list-ul.png ├── list.png ├── location-arrow.png ├── lock.png ├── long-arrow-down.png ├── long-arrow-left.png ├── long-arrow-right.png ├── long-arrow-up.png ├── magic.png ├── magnet.png ├── mail-forward.png ├── mail-reply-all.png ├── mail-reply.png ├── male.png ├── map-marker.png ├── maxcdn.png ├── medkit.png ├── meh-o.png ├── microphone-slash.png ├── microphone.png ├── minus-circle.png ├── minus-square-o.png ├── minus-square.png ├── minus.png ├── mobile-phone.png ├── mobile.png ├── money.png ├── moon-o.png ├── mortar-board.png ├── music.png ├── navicon.png ├── openid.png ├── outdent.png ├── pagelines.png ├── paper-plane-o.png ├── paper-plane.png ├── paperclip.png ├── paragraph.png ├── paste.png ├── pause.png ├── paw.png ├── pencil-square-o.png ├── pencil-square.png ├── pencil.png ├── phone-square.png ├── phone.png ├── photo.png ├── picture-o.png ├── pied-piper-alt.png ├── pied-piper-square.png ├── pied-piper.png ├── pinterest-square.png ├── pinterest.png ├── plane.png ├── play-circle-o.png ├── play-circle.png ├── play.png ├── plus-circle.png ├── plus-square-o.png ├── plus-square.png ├── plus.png ├── power-off.png ├── print.png ├── puzzle-piece.png ├── qq.png ├── qrcode.png ├── question-circle.png ├── question.png ├── quote-left.png ├── quote-right.png ├── ra.png ├── random.png ├── rebel.png ├── recycle.png ├── reddit-square.png ├── reddit.png ├── refresh.png ├── renren.png ├── reorder.png ├── repeat.png ├── reply-all.png ├── reply.png ├── retweet.png ├── rmb.png ├── road.png ├── rocket.png ├── rotate-left.png ├── rotate-right.png ├── rouble.png ├── rss-square.png ├── rss.png ├── rub.png ├── ruble.png ├── rupee.png ├── save.png ├── scissors.png ├── search-minus.png ├── search-plus.png ├── search.png ├── send-o.png ├── send.png ├── share-alt-square.png ├── share-alt.png ├── share-square-o.png ├── share-square.png ├── share.png ├── shield.png ├── shopping-cart.png ├── sign-in.png ├── sign-out.png ├── signal.png ├── sitemap.png ├── skype.png ├── slack.png ├── sliders.png ├── smile-o.png ├── sort-alpha-asc.png ├── sort-alpha-desc.png ├── sort-amount-asc.png ├── sort-amount-desc.png ├── sort-asc.png ├── sort-desc.png ├── sort-down.png ├── sort-numeric-asc.png ├── sort-numeric-desc.png ├── sort-up.png ├── sort.png ├── soundcloud.png ├── space-shuttle.png ├── spinner.png ├── spoon.png ├── spotify.png ├── square-o.png ├── square.png ├── stack-exchange.png ├── stack-overflow.png ├── star-half-empty.png ├── star-half-full.png ├── star-half-o.png ├── star-half.png ├── star-o.png ├── star.png ├── steam-square.png ├── steam.png ├── step-backward.png ├── step-forward.png ├── stethoscope.png ├── stop.png ├── strikethrough.png ├── stumbleupon-circle.png ├── stumbleupon.png ├── subscript.png ├── suitcase.png ├── sun-o.png ├── superscript.png ├── support.png ├── table.png ├── tablet.png ├── tachometer.png ├── tag.png ├── tags.png ├── tasks.png ├── taxi.png ├── tencent-weibo.png ├── terminal.png ├── text-height.png ├── text-width.png ├── th-large.png ├── th-list.png ├── th.png ├── thumb-tack.png ├── thumbs-down.png ├── thumbs-o-down.png ├── thumbs-o-up.png ├── thumbs-up.png ├── ticket.png ├── times-circle-o.png ├── times-circle.png ├── times.png ├── tint.png ├── toggle-down.png ├── toggle-left.png ├── toggle-right.png ├── toggle-up.png ├── trash-o.png ├── tree.png ├── trello.png ├── trophy.png ├── truck.png ├── try.png ├── tumblr-square.png ├── tumblr.png ├── turkish-lira.png ├── twitter-square.png ├── twitter.png ├── umbrella.png ├── underline.png ├── undo.png ├── university.png ├── unlink.png ├── unlock-alt.png ├── unlock.png ├── unsorted.png ├── upload.png ├── usd.png ├── user-md.png ├── user.png ├── users.png ├── video-camera.png ├── vimeo-square.png ├── vine.png ├── vk.png ├── volume-down.png ├── volume-off.png ├── volume-up.png ├── warning.png ├── wechat.png ├── weibo.png ├── weixin.png ├── wheelchair.png ├── windows.png ├── won.png ├── wordpress.png ├── wrench.png ├── xing-square.png ├── xing.png ├── yahoo.png ├── yen.png ├── youtube-play.png ├── youtube-square.png └── youtube.png └── keys.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Documentation 2 | 3 | ## [Introduction](intro/) 4 | * [Getting Started](intro/getting-started.md) 5 | * [What's Included](intro/whats-included.md) 6 | * [Basic Template](intro/basic-template.md) 7 | * [Debugging](intro/debugging.md) 8 | * [Compatibility](intro/compatibility.md) 9 | 10 | ## [Concepts](concepts/) 11 | 12 | #### Structure 13 | * [Structure](concepts/structure.md) 14 | * [Metadata](concepts/metadata.md) 15 | * [Remote](concepts/remote.md) 16 | * [Layout](concepts/layout.md) 17 | * [Settings](concepts/settings.md) 18 | * [URI](concepts/uri.md) 19 | 20 | #### Advanced 21 | * [Cross-Platform](concepts/cross-platform.md) 22 | * [Includes](concepts/includes.md) 23 | * [Action Events](concepts/action-events.md) 24 | * [Preloading](concepts/preloading.md) 25 | 26 | ## [Controls](controls/) 27 | * [Grid](controls/grid.md) 28 | * [Button](controls/button.md) 29 | * [Label](controls/label.md) 30 | * [Layout](controls/layout.md) 31 | * [Slider](controls/slider.md) 32 | * [Styling](controls/styling.md) 33 | * [Tabs](controls/tabs.md) 34 | * [Toggle](controls/toggle.md) 35 | * [List](controls/list.md) 36 | * [Text](controls/text.md) 37 | * [Touch](controls/touch.md) 38 | * [Dialogs](controls/dialogs.md) 39 | 40 | ## [Libraries](libs/) 41 | * [Lua](libs/lua.md) 42 | * [OS](libs/os.md) 43 | * [Math](libs/math.md) 44 | * [Bit](libs/bit.md) 45 | * [Server](libs/server.md) 46 | * [Layout](libs/layout.md) 47 | * [Settings](libs/settings.md) 48 | * [Device](libs/device.md) 49 | * [Mouse](libs/mouse.md) 50 | * [Keyboard](libs/keyboard.md) 51 | * [Joystick](libs/joystick.md) 52 | * [Script](libs/script.md) 53 | * [HTTP](libs/http.md) 54 | * [Windows](libs/win.md) 55 | * [File System (FS)](libs/fs.md) 56 | * [Processes (PS)](libs/ps.md) 57 | * [GPIO](libs/gpio.md) 58 | * [COM](libs/com.md) 59 | * [FFI](libs/ffi.md) 60 | * [UIA](libs/uia.md) 61 | * [Socket](libs/socket.md) 62 | * [UTF8](libs/utf8.md) 63 | * [Data](libs/data.md) 64 | * [Timer](libs/timer.md) 65 | * [Buffer](libs/buffer.md) 66 | * [Log](libs/log.md) 67 | 68 | ## [Resources](/res/) 69 | * [Keys](/res/keys.md) 70 | * [Buttons](/res/buttons.md) 71 | * [Icons](/res/icons.md) 72 | -------------------------------------------------------------------------------- /concepts/action-events.md: -------------------------------------------------------------------------------- 1 | 2 | # Action Events 3 | 4 | Action events can be used to perform some functionality before and after an action is executed. This is useful for 5 | executing common functionality for many actions, logging, setup and tear down, filtering actions etc. 6 | 7 | events.preaction = function (name, extras) 8 | -- Do something before actions are executed... 9 | return true; 10 | end 11 | 12 | events.postaction = function (name, extras) 13 | -- Do something after actions are executed... 14 | end 15 | 16 | actions.foo = function () 17 | -- My foo bar function... 18 | end 19 | 20 | Note that the preaction event should return a boolean value indicating whether or not the action should be executed. 21 | If preaction returns true then the action and consequently the postaction event will be triggered. Otherwise, they won't. 22 | If a preaction event isn't available, then actions will always be triggered. 23 | 24 | events.preaction = function (name, extras) 25 | -- Ignore all actions named "foo" 26 | if (name == "foo") then 27 | return false; 28 | end 29 | return true; 30 | end 31 | 32 | It is also possible to implement a catch-all (or fallback) event for actions. This event is used for catching actions 33 | that have not been explicitly defined. This is particularily useful for remotes that may need to use dynamically generated 34 | or variably named actions (where the action names are not know ahead of time). Note that it is executed if and only if an 35 | action is not explicitly implemented. 36 | 37 | events.action = function (name, extras) 38 | -- Catch undefined actions here... 39 | end 40 | -------------------------------------------------------------------------------- /concepts/cross-platform.md: -------------------------------------------------------------------------------- 1 | 2 | # Cross-Platform 3 | 4 | ## Metadata 5 | 6 | Some remotes can be implemented to work on all OS (Windows, Linux, Mac OS X). However some remotes may only 7 | work for a specific OS. This can be controlled by specifying the ``meta.platform`` field in the meta file for the remote: 8 | 9 | # only for windows 10 | meta.platform: windows 11 | 12 | It can also specify multiple allowed operating systems. 13 | 14 | # for windows and linux 15 | meta.platform: windows linux 16 | 17 | 18 | ## Qualifiers 19 | 20 | Another scenario is where you may want to support multiple OS, but need different implementations for some OS. 21 | This can be controlled by using qualifiers in the file names for the remote. The following example shows how you 22 | could have a default implementation plus a specific implementation for Mac OS X. 23 | 24 | Remotes/ 25 | Example/ 26 | meta.prop 27 | remote.lua 28 | remote_osx.lua 29 | layout.xml 30 | icon.png 31 | 32 | You could also specify a different implementation for each OS: 33 | 34 | Remotes/ 35 | Example/ 36 | meta.prop 37 | remote_win.lua 38 | remote_osx.lua 39 | remote_linux.lua 40 | layout.xml 41 | icon.png 42 | 43 | File qualifiers can also be applied to layout, property, and icon files. -------------------------------------------------------------------------------- /concepts/includes.md: -------------------------------------------------------------------------------- 1 | 2 | # Includes 3 | 4 | The ``include`` function can be used to simplify reuse of common functionality shared between multiple remotes. 5 | For example you may have a set of actions or functions that you want to use in multiple variations of a remote. 6 | You could place this in a file called ``common.lua``. 7 | 8 | Remotes/ 9 | Example/ 10 | common.lua 11 | Foo/ 12 | meta.prop 13 | remote.lua 14 | Bar/ 15 | meta.prop 16 | remote.lua 17 | 18 | In the implementation for each remote you could then include the common file and use whatever you placed in there. 19 | For example, in the ``remote.lua`` file for the ``Foo`` remote: 20 | 21 | include("../common.lua") 22 | 23 | actions.foo = function () 24 | func_from_common("foo"); 25 | end 26 | -------------------------------------------------------------------------------- /concepts/layout.md: -------------------------------------------------------------------------------- 1 | 2 | # Layout 3 | 4 | The layout file describes the visual components of a remote. For example, the buttons, lists, sliders, etc that the user 5 | sees when they open a remote in the app. The layout is described using XML. 6 | 7 | ```xml 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |