shabados / presenter

Desktop app for presenting the Shabad OS Database on projectors, TVs, and live streams
https://shabados.com
MIT License
19 stars 15 forks source link

Integrate Presentation Clicker/Remote #38

Open bhajneet opened 6 years ago

bhajneet commented 6 years ago

At least 3 buttons: Up, Down, and Autoselect. If more are available, then set Clear Display and Starting Line buttons.

Up and Down probably map to Page Up vs Down, in which case we will have to decide what to do with current hotkey bindings.

Harjot1Singh commented 6 years ago

Seems to mostly already work with my clicker O_o. AFAIK, up and down map to left and right, and there are usually stop and start presentation modes, whose keybindings can be mapped to maybe clear and autoselect.

bhajneet commented 6 years ago

What's the brand of remote? Please try on banis example as well. Also what can we use for autoselect?

Going to get a couple different remotes and see what they output

Harjot1Singh commented 6 years ago

Thought I replied.

Currently, https://www.amazon.co.uk/gp/product/B00CXNQR0Y/

I’ve also owned https://www.amazon.co.uk/gp/product/B017R3ZNRM/ and it appeared to work to the same effect.

Most of the presenters are designed to map presses to keyboard presses for powerpoint. I believe the start button is F5, and therefore it should be fairly simple to map that to autoselect, since it doesn’t do anything currently.

bhajneet commented 6 years ago

Using a Logitech R400:

Left and Right are acting as Page Up/Page Down (Prior/Next in the terminal, codes ^[[6~ and ^[[5~

Start presentation button toggles between F5 and Escape

Display/Presentation is a . period

xev results:

KeyPress event, serial 48, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12777582, (50,-2), root:(1330,548),
    state 0x10, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12777702, (50,-2), root:(1330,548),
    state 0x10, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12778326, (50,-2), root:(1330,548),
    state 0x10, keycode 117 (keysym 0xff56, Next), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12778494, (50,-2), root:(1330,548),
    state 0x10, keycode 117 (keysym 0xff56, Next), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12779694, (50,-2), root:(1330,548),
    state 0x10, keycode 71 (keysym 0xffc2, F5), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12779774, (50,-2), root:(1330,548),
    state 0x10, keycode 71 (keysym 0xffc2, F5), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12780166, (50,-2), root:(1330,548),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) ""
    XmbLookupString gives 1 bytes: (1b) ""
    XFilterEvent returns: False

KeyRelease event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12780181, (50,-2), root:(1330,548),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) ""
    XFilterEvent returns: False

KeyPress event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12781158, (50,-2), root:(1330,548),
    state 0x10, keycode 60 (keysym 0x2e, period), same_screen YES,
    XLookupString gives 1 bytes: (2e) "."
    XmbLookupString gives 1 bytes: (2e) "."
    XFilterEvent returns: False

KeyRelease event, serial 49, synthetic NO, window 0x3e00001,
    root 0x4b5, subw 0x0, time 12781286, (50,-2), root:(1330,548),
    state 0x10, keycode 60 (keysym 0x2e, period), same_screen YES,
    XLookupString gives 1 bytes: (2e) "."
    XFilterEvent returns: False
bhajneet commented 6 years ago

Page Up/Down are bound to jump sections in banis. So we should probably change that hotkey or remove it all together before mapping Page Up/Down to up/down / left/right arrow key functions.

Escape is also for clearing the display. Since esc has much more of a use-case than page-up / page-down currently does, I don't think we can remove that one. So I think make the . period autoselect and set F5 to also clear the display.

Does your remote also have a . full-stop button? I will also test the Doosl Wireless Presenter,Rechargeable Presentation Remote, 2.4GHz Rechargeable Powerpoint Presentation Remote Control soon to get the codes for that one.