Skip to content

Instantly share code, notes, and snippets.

View optozorax's full-sized avatar

ilya sheprut optozorax

View GitHub Profile
@optozorax
optozorax / each_key_is_function.cpp
Created August 31, 2019 16:05
Каждая клавиша - функция. Идея паттерна для программируемых клавиатур
/** Идея для программируемых клавиатур, когда каждая клавиша - функция.
В чатике много шутили, типо: давайте сделаем каждую клавишу - процессом)))000)), а давайте http-сервером)))00)). Так вот, эта идея является серьезной реализацией этих шуток, причём это даже может быть удобно.
*/
typedef std::function<void()> Key;
//----------------------------------------------------------------------------
// Стандартные клавиши
Key KC_NULL = [](){};
Key KC_0 = [](){
@optozorax
optozorax / REAME.md
Last active August 27, 2019 09:06
Очередная шутка про говно
Курить посреди улицы Пердеть посреди улицы
Портишь воздух
Длительность Минуты Секунды
Наркотическая зависимость
Риск развития рака лёгких
Риск пожара
Общественное порицание

КАКОГО ЧЁРТА???

@optozorax
optozorax / common.h
Created August 25, 2019 11:39
Использование std::funciton для QMK
inline void press_key(int key, std::function<void()> f = [](){}) {
register_code(key);
f();
unregister_code(key);
}
@optozorax
optozorax / level_keys.md
Last active August 17, 2019 15:33
Концепция клавиш разного уровня

Итак, введём новые клавиши, под кодовым названием: lv буква, lv слово, lv строка, lv вкладка, lv окно, lv экран.

Эти клавиши означают что действие будет применяться к конкретному уровню, например, если нажать lv буква + Left, то курсор подвинется на одну букву влево, если же нажать lv окно + Left, то фокус переключится на окно слева в списке открытых окон.

Распишу некоторые интересные использования этих клавиш в комбинации с другими:

Действие lv буква lv слово lv строка lv вкладка lv окно lv экран
Стрелки вправо-влево Left, Right Ctrl+Left, Right Home, End Ctrl+Tab, Ctrl+Shift+Tab (Переключение на правую-левую вкладку относительно текущей) Переключение на левое-право окно относительно текущего в списке приложений Переключение фокуса на правый-левый экран
@optozorax
optozorax / genetic_algorithm.cpp
Last active June 18, 2019 16:20
Genetic algorithm without crossover to solve travelling salesman problem
// https://www.youtube.com/watch?v=XP8R0yzAbdo
// CROSSOVER IS OVERRATED, I USED ONLY 1 MUTATION PER CHILDREN TO GET BEST RESULT ON CIRCLE GRAPH
#define _USE_MATH_DEFINES
#include <vector>
#include <random>
#include <algorithm>
#include <cmath>
#include <iostream>
@optozorax
optozorax / random.cpp
Last active January 12, 2019 12:54
random by mt19937
#include <random>
double random(void) {
static std::mt19937 generator(time(0));
static std::uniform_real_distribution<double> distribution(0, 1);
return distribution(generator);
}