-
Notifications
You must be signed in to change notification settings - Fork 1
Module API
Passerelle adds some functionalities to Lua. here is the full list of the available methods.
I have changed methods name to start with a lower case to match most Lua libraries. If you still want to use the upper case version you should use the legacy version of the module.
addPage()findWindow()getNumDevices()getVersion()listen()poll()registerDeviceChangeCallback()registerPageCallback()registerSoftButtonCallback()registerSoftButtonDownCallback()registerSoftButtonUpCallback()removePage()setImage()setImageFromFile()setLed()setMode()setProfile()setString()sleep()
Window
win:capture()win:getSize()win:isMaximized()win:isMinimized()win:isValid()win:maximize()win:minimize()win:restore()win:setPosition()win:setSize()
Bitmap
These methods will be remove in future versions of the module.
passerelle.addPage(model, index, page, activate)Adds a new page identified by page to the model located at index and activates it if requested.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
activate |
boolean | should the page be activated |
Compatibility: SFIP, X52P
passerelle.registerPageCallback(model, index, callback)Adds a button state change notification callback to the model located at index. Pass nil to remove the callback.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
callback |
function | name of the callback function in Lua |
Compatibility: SFIP, X52P
passerelle.registerSoftButtonCallback(model, index, callback)Adds a button state change notification callback to the model located at index. Pass nil to remove the callback.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
callback |
function | name of the callback function in Lua |
Compatibility: SFIP, X52P
passerelle.registerSoftButtonDownCallback(model, index, callback) -- >= v0.2Adds a button pressed notification callback to the model located at index. Pass nil to remove the callback.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
callback |
function | name of the callback function in Lua |
Compatibility: SFIP, X52P
passerelle.registerSoftButtonUpCallback(model, index, callback) -- >= v0.2Adds a button released notification callback to the model located at index. Pass nil to remove the callback.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
callback |
function | name of the callback function in Lua |
Compatibility: SFIP, X52P
passerelle.removePage(model, index, page)Removes a previously added page identified by page from the model located at index.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
Compatibility: SFIP, X52P
passerelle.setImage(model, index, page, image, data)Tries to display the data on the page identified by page on the model located at index. For now only the GD module is supported. Data is obtained for instance using win:capture() or using gd2 with im:gd2Str(320, gd.GD2_FMT_RAW) on a gd.createTrueColor(320, 240).
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
image |
integer(1) | index of the image (always 1) |
data |
varying | bitmap or lua string containing the image data |
Compatibility: SFIP
passerelle.setImageFromFile(model, index, page, image, path[, stretch])Tries to load the image (BMP or JPEG) located at path and display it on the page identified by page on the model located at index.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
image |
integer(1) | index of the image (always 1) |
path |
string | path to the image to be loaded |
stretch |
boolean | should the image be stretched |
Compatibility: SFIP
passerelle.setLed(model, index, page, led, state)Turns on or off a led at index led for the page identified by page on the model located at index.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
led |
integer | index of the led |
state |
boolean | should the led be turned on |
Compatibility: SFIP, X52P
passerelle.setProfile(model, index, path) -- >= v0.2Loads the profile located at path into the device. Pass nil to unload the profile.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
path |
string | path to the profile to be loaded |
Compatibility: X52P
passerelle.setString(model, index, page, line, str)Tries to display the str at line on the page identified by page on the model located at index. The X52P can display up to 16 characters per line. If the text is longer, the line will scroll.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
index |
integer(1..n) | index of the device of type model
|
page |
integer | numerical value to identify the page |
line |
integer(1..3) | index of the string line |
str |
string | text to display |
Compatibility: X52P
passerelle.findWindow(class, name) -- >= v0.8Tries to capture the client area of the window whose class name and window name match the specified strings. Coordinates are in percent of the client area dimensions. This method use the same parameters as the Windows FindWindow() function. To find the class name and the window name you can use WinLister.
| Parameter | Type | Description |
|---|---|---|
class |
string | class name of the window |
name |
string | window name |
Upon success, returns an new object representing the window.
WARNING: if your are capturing a window in a loop, the memory usage will grow very fast because the created bitmap objects are not collected immediately by Lua. Refer to the Lua documentation in order to know how to track and force garbage collection when needed.
passerelle.getNumDevices([model])Retreives the number of available devices of type model or all available devices if model is not specified.
| Parameter | Type | Description |
|---|---|---|
model |
char(4) | model code |
passerelle.getVersion() -- >= v0.5Returns the current module version as a multiple result set. The table has the following structure.
| Return | Type | Description |
|---|---|---|
| R1 | string | full version number |
| R2 | integer | major version |
| R3 | integer | minor version |
| R4 | integer | build version |
| R5 | integer | patch version |
You can also use the new _NAME, _VERSION and _COPYRIGHT constants, added in v0.5.6, to get more version information.
passerelle.listen()Convenience function to help testing the API in the Lua development environment. It will suspend the script execution so that callbacks can be evaluated easily.
passerelle.poll() -- >= 0.7Executes the waiting callbacks if any.
passerelle.registerDeviceChangeCallback(callback) -- >= v0.2Adds a device change notification callback. Pass nil to remove the callback.
| Parameter | Type | Description |
|---|---|---|
callback |
function | name of the callback function in Lua |
passerelle.setMode(mode) -- >= v0.7Sets the callback mode. You can choose between CBM_DIRECT, which is the legacy and default mode, CBM_EVENT for event-based polling and CBM_FSUIPC to work with FSUIPC (32-bit version only).
| Parameter | Type | Description |
|---|---|---|
mode |
integer | model code |
Using FSUIPC, the offset address is 0x736D. When you receive an event for this address you must call the poll() method to execute all the pending callbacks synchronously. The value has not specific meaning and should be ignored.
passerelle.sleep(time) -- >= 0.7Convenience function to pause the execution for time milliseconds and reduce CPU usage. Useful when working with event-based callbacks.
| Parameter | Type | Description |
|---|---|---|
time |
integer | time to wait in milliseconds |
passerelle.Initialize() -- obsolete >= v0.5Previously, initializes the Saitek API. Now does nothing. Kept for compatibility purpose only.
passerelle.Release() -- obsolete >= v0.5Previously, frees resources allocated for the Saitek API. Now does nothing. Kept for compatibility purpose only.
The window object exposes loads of methods to control almost any opened window.
-- Find the task manager window
local win = passerelle.findWindow("TaskManagerWindow", nil);win:capture(x, y, w, h) -- >= v0.8Tries to capture the client area of the related window. Coordinates are in percent of the client area dimensions
| Parameter | Type | Description |
|---|---|---|
x |
float(0..100) | x position of the capture in % |
y |
float(0..100) | y position of the capture in % |
w |
float(0..100) | width of the capture in % |
h |
float(0..100) | height of the capture in % |
Upon success, returns an new object representing the window.
win:getSize() -- >= v0.8Returns the width and height of the window client area as a multiple result set.
| Return | Type | Description |
|---|---|---|
| R1 | integer | width of the window client area |
| R2 | integer | height of the window client area |
win:isMaximized() -- >= v0.8Returns whether the window is maximized.
win:isMinimized() -- >= v0.8Returns whether the window is minimized.
win:isValid() -- >= v0.8Returns whether the window is a valid object.
win:maximize() -- >= v0.8Maximizes the window if possible.
win:minimize() -- >= v0.8Minimizes the window if possible.
win:restore() -- >= v0.8Restores the window to its previous state if possible.
win:setPosition(x, y) -- >= v0.8Sets the window position if possible.
| Parameter | Type | Description |
|---|---|---|
x |
integer | horizontal position of the window |
y |
integer | vertical position of the window |
win:setSize(width, height) -- >= v0.8Sets the client area size of the window if possible.
| Parameter | Type | Description |
|---|---|---|
width |
integer | width position of the window client area |
height |
integer | height position of the window client area |
If the window menu is very long, it may be displayed on multiple lines when reducing the size of the window. You may have to call this function twice to properly size the window in height.
The bitmap object is internally used to handle window capture and can be exported to be used in a GD2 context.
-- Capture the task manager window
local bitmap = win.capture(0, 0, 100, 100);bitmap:getSize() -- >= v0.8Returns the width and height of the bitmap as a multiple result set.
| Return | Type | Description |
|---|---|---|
| R1 | integer | width of the bitmap |
| R2 | integer | height of the bitmap |
bitmap:gd2Str() -- >= v0.8Returns an image in the gd2 format as a Lua string using the GD2_FMT_RAW format.
| Return | Type | Description |
|---|---|---|
| R1 | string | image data in gd2 format |