sway-launchpad

A small rust script to switch sway workspaces using a Launchpad S
git clone git://archive.git.mtrnord.blog/MTRNord/sway-launchpad.git
Log | Files | Refs | LICENSE

mod.rs (990B)


      1 use crate::utils::globals::SHOWING_NUMBER;
      2 use crate::utils::numbers::{INNER_KEYS, NUMBERS};
      3 use midir::MidiOutputConnection;
      4 use std::convert::TryInto;
      5 use std::sync::atomic::Ordering;
      6 
      7 pub mod globals;
      8 mod numbers;
      9 
     10 pub fn show_number(conn_out: &mut MidiOutputConnection, number: usize) {
     11     SHOWING_NUMBER.store(true, Ordering::SeqCst);
     12     conn_out.send(&[176, 0, 0]).unwrap();
     13     show_array(conn_out, NUMBERS[number]);
     14     conn_out.send(&[144, 24, 63]).unwrap();
     15     conn_out.send(&[144, 8, 63]).unwrap();
     16     conn_out.send(&[144, 40, 63]).unwrap();
     17 }
     18 
     19 pub fn show_array(conn_out: &mut MidiOutputConnection, array: [[bool; 8]; 8]) {
     20     for (row_n, row) in array.iter().enumerate() {
     21         for (column_n, column) in row.iter().enumerate() {
     22             if *column {
     23                 let key = INNER_KEYS[row_n][column_n];
     24                 conn_out
     25                     .send(&[144, (key as i32).try_into().unwrap(), 60])
     26                     .unwrap();
     27             }
     28         }
     29     }
     30 }