Able to generate layouts
This commit is contained in:
parent
863ace8c2c
commit
b665f2edf7
|
|
@ -1,6 +1,6 @@
|
||||||
use core::f64;
|
use core::f64;
|
||||||
use eyre::Result;
|
use eyre::Result;
|
||||||
use rand::rngs::ThreadRng;
|
use rand::{rngs::ThreadRng, Rng};
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
io::{self, Write},
|
io::{self, Write},
|
||||||
|
|
@ -49,9 +49,9 @@ const RINDEX: Finger = F!(Right, Index);
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
const MATRIX_EFFORT: &[f64; MATRIX_COUNT] = &[
|
const MATRIX_EFFORT: &[f64; MATRIX_COUNT] = &[
|
||||||
15., 3.0, 1.5, 3.0, 10., 10., 3.0, 1.5, 3.0, 15.,
|
100., 3., 5., 3., 30., 30., 3., 5., 3., 100.,
|
||||||
8., 1., 0.5, 0.5, 4., 4., 0.5, 0.5, 1., 8.,
|
50., 2., 1., 1., 15., 15., 1., 1., 2., 50.,
|
||||||
1.5, 2.0, 1., 1., 7., 5., 1., 2.0, 1.5, 10.,
|
25., 7., 5., 7., 30., 1., 5., 7., 5., 100.,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
|
|
@ -227,10 +227,21 @@ fn all_bigrams() -> &'static [String] {
|
||||||
unsafe { ALL_BIGRAMS.as_ref().unwrap_unchecked() }
|
unsafe { ALL_BIGRAMS.as_ref().unwrap_unchecked() }
|
||||||
}
|
}
|
||||||
|
|
||||||
const N_WORKERS: usize = 16;
|
const N_WORKERS: usize = 32;
|
||||||
|
|
||||||
fn mutate_layout(layout: &mut Layout, rng: &mut ThreadRng, num_swaps: usize) {
|
fn mutate_layout(layout: &mut Layout, rng: &mut ThreadRng, num_swaps: usize) {
|
||||||
for _ in 0..num_swaps {}
|
for _ in 0..num_swaps {
|
||||||
|
let ch1 = CHARACTERS
|
||||||
|
.chars()
|
||||||
|
.nth(rng.gen_range(0..CHARACTERS.len()))
|
||||||
|
.unwrap();
|
||||||
|
let ch2 = CHARACTERS
|
||||||
|
.chars()
|
||||||
|
.nth(rng.gen_range(0..CHARACTERS.len()))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
layout.key_indices.swap(ch1 as usize, ch2 as usize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct WorkerThreadInit {
|
struct WorkerThreadInit {
|
||||||
|
|
@ -291,6 +302,7 @@ fn ui_thread_run(rx: Receiver<(f64, Layout)>) {
|
||||||
for (eff, layout) in rx.iter() {
|
for (eff, layout) in rx.iter() {
|
||||||
clear_screen();
|
clear_screen();
|
||||||
print_layout(layout);
|
print_layout(layout);
|
||||||
|
println!();
|
||||||
println!("{eff}");
|
println!("{eff}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -314,6 +326,11 @@ fn aggregator_thread_run(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
|
unsafe {
|
||||||
|
init_all_bigrams();
|
||||||
|
init_bigram_freqs();
|
||||||
|
};
|
||||||
|
|
||||||
let (tx_agg, rx_agg) = std::sync::mpsc::channel();
|
let (tx_agg, rx_agg) = std::sync::mpsc::channel();
|
||||||
let (tx_ui, rx_ui) = std::sync::mpsc::channel();
|
let (tx_ui, rx_ui) = std::sync::mpsc::channel();
|
||||||
|
|
||||||
|
|
@ -332,7 +349,7 @@ fn main() -> Result<()> {
|
||||||
worker_thread_run(WorkerThreadInit {
|
worker_thread_run(WorkerThreadInit {
|
||||||
initial_layout: INITIAL_LAYOUT,
|
initial_layout: INITIAL_LAYOUT,
|
||||||
report: tx,
|
report: tx,
|
||||||
max_dev: 1000.,
|
max_dev: 200.,
|
||||||
swaps: 1,
|
swaps: 1,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue