@@ -365,9 +365,12 @@ fn main() {
365365 let mut needs_redraw = true ;
366366 let mut drm = open_card ( ) . unwrap ( ) ;
367367 let bl_path = find_backlight ( ) . unwrap ( ) ;
368- let mut input = Libinput :: new_with_udev ( Interface ) ;
369- input. udev_assign_seat ( "seat0" ) . unwrap ( ) ;
370- let pollfd = PollFd :: new ( input. as_raw_fd ( ) , PollFlags :: POLLIN ) ;
368+ let mut input_tb = Libinput :: new_with_udev ( Interface ) ;
369+ let mut input_main = Libinput :: new_with_udev ( Interface ) ;
370+ input_tb. udev_assign_seat ( "seat-touchbar" ) . unwrap ( ) ;
371+ input_main. udev_assign_seat ( "seat0" ) . unwrap ( ) ;
372+ let pollfd_tb = PollFd :: new ( input_tb. as_raw_fd ( ) , PollFlags :: POLLIN ) ;
373+ let pollfd_main = PollFd :: new ( input_main. as_raw_fd ( ) , PollFlags :: POLLIN ) ;
371374 let mut uinput = UInputHandle :: new ( OpenOptions :: new ( ) . write ( true ) . open ( "/dev/uinput" ) . unwrap ( ) ) ;
372375 uinput. set_evbit ( EventKind :: Key ) . unwrap ( ) ;
373376 for button in & layer. buttons {
@@ -406,9 +409,10 @@ fn main() {
406409 map. as_mut ( ) [ ..data. len ( ) ] . copy_from_slice ( & data) ;
407410 drm. card . dirty_framebuffer ( drm. fb , & [ ClipRect { x1 : 0 , y1 : 0 , x2 : DFR_HEIGHT as u16 , y2 : DFR_WIDTH as u16 } ] ) . unwrap ( ) ;
408411 }
409- poll ( & mut [ pollfd] , TIMEOUT_MS ) . unwrap ( ) ;
410- input. dispatch ( ) . unwrap ( ) ;
411- for event in & mut input {
412+ poll ( & mut [ pollfd_tb, pollfd_main] , TIMEOUT_MS ) . unwrap ( ) ;
413+ input_tb. dispatch ( ) . unwrap ( ) ;
414+ input_main. dispatch ( ) . unwrap ( ) ;
415+ for event in & mut input_tb. clone ( ) . chain ( input_main. clone ( ) ) {
412416 match event {
413417 Event :: Device ( DeviceEvent :: Added ( evt) ) => {
414418 let dev = evt. device ( ) ;
0 commit comments