MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-KeyBindings: Control your mirror with Amazon Fire Stick Remote and Generic Keyboard Inputs

    Scheduled Pinned Locked Moved Utilities
    keyboardremote controlfire stick remotebluetooth
    34 Posts 13 Posters 17.4k Views 12 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G Offline
      gregp
      last edited by gregp

      Hello,
      This module looks like exactly what I need, but unfortunately I’m having a hard time getting it to work with a standard USB keyboard directly connected. Reading through I believe I’ve got MMM-KeyBindings and MMM-Carousel set up appropriately, but no matter what I try it doesn’t appear to have any effect.

      I can use the mouse to click on the Carousel navigation to change pages. I’ve also ensured I’ve clicked within the window to make sure the browser has focus, but the keyboard events don’t do anything. Clicking CTRL-SHIFT-I, I can see in the debugger that MouseTrap is actually seeing the keyboard events, but I must have something wrong in the config preventing them from being handled appropriately.

      At first I was trying to get the right and left arrow keys on the keyboard to work, but it looks like the names of those are a bit more complicated (having similar-but-different names to the ArrowRight and ArrowLeft buttons on the remote), so I just switched to “r” and “l”. I’ve also tried the “keyBindings” both inside the MMM-Carousel “config” section and up at the module top level as shown below.

      I’m running the latest versions of both KeyBindings and Carousel as of today. Here’s the relevant sections of my config.js, any help is greatly appreciated:

      	{
                  module: 'MMM-KeyBindings',
      			config: {
                      enabledKeyStates: ["KEY_PRESSED"],
                      evdev: { enabled: false },
                      handleKeys: [ 'r', 'l' ],
                      enableMousetrap: true,
      			}
      		},
      
              {
                  module: 'MMM-Carousel',
                  position: 'top_bar', // Required only for navigation controls
                  config: {
                      transitionInterval: 0, //20000,
                      showPageIndicators: false,
                      showPageControls: true,
                      ignoreModules: ['MMM-ViewNotifications','alert','updatenotification','MMM-KeyBindings'],
                      mode: 'slides',
                      slides: {
                          main: [{name:'clock', classes:'zoom200'},'MMM-CalendarExt2', {name:'MMM-DarkSkyForecast', classes:'zoom200'}],
      					"Slide 2": ['MMM-BackgroundSlideshow',],
                          "Slide 3": [{name:'MMM-aviationwx', classes:'zoom200'},{name:'MMM-DarkSkyForecast', classes:'zoom200'},],
      				},
                  },
                  keyBindings: { 
                      //NextSlide: "ArrowRight", // Remote Key Name
                      NextSlide: "r",          // Keyboard Key Name
                      //PrevSlide: "ArrowLeft",  // Remote Key Name
                      PrevSlide: "l"           // Keyboard Key Name
                  },
              },
      
      1 Reply Last reply Reply Quote 0
      • G Offline
        gregp
        last edited by

        @shbatm and @jdfraser , I believe I figured it out after much debugging and banging my head on the desk.

        There’s a config property that’s not documented that needs to be configured to accept keyboard presses. You’ll need to add

        enableKeyboard: true,
        

        in your MMM-KeyBindings module config. Here’s my working config, there may or may not be some unneeded commands in there, but it was needed to get the “r” and “l” keys to move the MMM-Carousel page next and previous. Note you also need to add the “handleKeys” for any of the non-standard keys.

            {
                    module: 'MMM-KeyBindings',
        	    config: {
                        enabledKeyStates: ["KEY_PRESSED"],
                        evdev: { enabled: false },
                        handleKeys: [ 'r', 'l' ],
                        enableMousetrap: true,
                        enableKeyboard: true,
        			}
        		},
        
                {
                    module: 'MMM-Carousel',
                    position: 'top_bar', // Required only for navigation controls
                    config: {
                        transitionInterval: 0, //20000,
                        showPageIndicators: false,
                        showPageControls: true,
                        ignoreModules: ['MMM-ViewNotifications','alert','updatenotification','MMM-KeyBindings'],
                        mode: 'slides',
                        slides: {
                            main: [{name:'clock', classes:'zoom200'},'MMM-CalendarExt2', {name:'MMM-DarkSkyForecast', classes:'zoom200'}],
        					"Slide 2": ['MMM-BackgroundSlideshow',],
                            "Slide 3": [{name:'MMM-aviationwx', classes:'zoom200'},{name:'MMM-DarkSkyForecast', classes:'zoom200'},],
                        },
                        keyBindings: { 
                            enabled: true,
                            map: {
                                NextSlide: "r", 
                                PrevSlide: "l", 
                            },
                            mode: "DEFAULT"
                        }
                    },
                },
        
        S 1 Reply Last reply Reply Quote 0
        • S Offline
          shbatm Module Developer @gregp
          last edited by

          @gregp Glad you got it working. I’m not sure what happened with the README and where the details went around “enableKeyboard” and “enableKeyBindings”, looks like it got lost during an update. I will get it corrected on Github.

          Also, enableMousetrap was replaced by enableKeyboard as a breaking change during one of the recent updates. You no longer need enableMousetrap in your config, just enableKeyboard.

          Just a note, if you want to use ArrowLeft and ArrowRight you can (depending on your keyboard). This will not interfere with the “KeyBindings” (Bluetooth Remote) unless you want the ArrowLeft on the remote to do something different than the keyboard.

          Finally, it looks like you found it between your first and second post, but just for anyone else, the keyBindings section needs to be inside the config section for MMM-Carousel.

          Just to close the loop with @jdfraser, this was discussed further and closed in Issue #6 and Issue #7 on GitHub.

          1 Reply Last reply Reply Quote 1
          • G Offline
            gregp
            last edited by

            @shbatm Fantastic! Thanks again!

            1 Reply Last reply Reply Quote 0
            • M Offline
              mrdenmark
              last edited by

              on my miirror i have set up 3 pages with mmm-pages,i’ve installed mmm-keybindings as i want to use the arrow keys to cycle through the pages but so far i’m having no luck,could anyone suggest a config sample to set this up?

              L 1 Reply Last reply Reply Quote 0
              • Cr4z33C Offline
                Cr4z33
                last edited by

                @shbatm how comes I never noticed this topic before? 😅

                Can this module be adapted virtually for anything available in MagicMirror?

                What about your other module MMM-RTSPStream?
                Can I switch ie. streams by using the Fire Stick remote?

                1 Reply Last reply Reply Quote 0
                • L Offline
                  l0b5ter @mrdenmark
                  last edited by

                  @mrdenmark Did you get a response regarding this matter?
                  im having a hard time doing the same as you :(

                  1 Reply Last reply Reply Quote 0
                  • L Offline
                    l0b5ter
                    last edited by

                    Didnt get this really to work, tried the same but it wont change between the pages. Mind take a look? (https://forum.magicmirror.builders/topic/12332/mmm-keybindings-mmm-pages-mmm-page-indicator), Me really stuck :(

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      Mr.Gysy
                      last edited by

                      Hey,
                      Great Tool and I got it worked with my Keyboard but not with my remote.

                      Remote I bought: Remote

                      its a remote with a USB reciver.

                      Thats what I insert into my config file. Is something wrong?

                      alt text

                      Please help me guys. THX

                      M 1 Reply Last reply Reply Quote 0
                      • Cr4z33C Offline
                        Cr4z33
                        last edited by Cr4z33

                        @shbatm and everybody here I am trying to setup a Fire Stick, but I am stuck at step #3 of the module’s instructions because I don’t know WHERE in the file 99-btremote.rules I’ve got to insert the remote name (in my case it’s mice)? :confused_face:

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 3 / 4
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Sam, technical setup by Karsten.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy