Alternative layout visualizer for ZSA Moonlander keyboard

Overview

screenshot

General info

This is a keyboard layout visualizer for ZSA Moonlander keyboard (because I didn't find their Oryx or their training tool particularly useful). Layout information is created and updated manually in a TXT file (e.g. no automation of any kind, it doesn't read layouts from the keyboard itself, from Oryx, etc.) The intended usage is to keep it open somewhere in the corner of the screen while memorizing the layouts by typing and practicing.

Requirements

Python 3.x wxPython (pip install wxpython)

Usage

Run layout.pyw, it reads layouts information from all_layouts.txt

Layouts format

For each tab in the visualizer (the names can be anything):

SET name

...

END

The content of a set consists of one or more subsets, for example:

SUBSET normal
20 20
0 0 127
| Esc |  1  |  2  |  3  |  4  |  5  |  !  |-----|  '  |  6  |  7  |  8  |  9  |  0  |  -  |
| Prt |  Q  |  W  |  E  |  R  |  T  |  /  |-----|  .  |  Y  |  U  |  I  |  O  |  P  |     |
|  ⇧  |  A  |  S  |  D  |  F  |  G  |  \  |-----|  ,  |  H  |  J  |  K  |  L  |     |     |
|  ⇫  |  Z  |  X  |  C  |  V  |  B  |-----------------|  N  |  M  |     |     |     |  ⇫  |
|LCtrl|LAlt |     |LAlt |LCtrl|-----------------------------|  ▲  |  ▼  |RAlt |RCtrl|Ru/En|

------------------------| Win |-----------------------------|  ⏎  |------------------------
------------------------|  ⎵  | Tab |     |-----|     | Del |  ⌫  |------------------------

SUBSET symbols
10 2
220 128 0
|  +  | F1  | F2  | F3  | F4  | F5  |  *  |-----|     | F6  | F7  | F8  | F9  | F10 | F11 |
|  -  |  !  |  @  |  {  |  }  |  |  |     |-----|     |PgUp |Home |  ▲  | End |     | F12 |
|  =  |  #  |  $  |  (  |  )  |  `  |     |-----|     |PgDn |  ◀  |  ▼  |  ▶  |     | Ins |
|     |  %  |  &  |  [  |  ]  |  ~  |-----------------|     |     |     |     |     |     |
|     |     |  ^  |  <  |  >  |-----------------------------|     |     |     |     |     |

------------------------|     |-----------------------------|     |------------------------
------------------------|     |     | ⟲SYM|-----| ⟲SYM|     |     |------------------------

The second line represents where each key description is drawn, relative to the key's upper left corner.

The third line represents the RGB color of the key descriptions (decimal numbers in range 0~255).

The rest is this rigid 'matrix', each 'key' is 5 characters wide (if less than 5, should be padded with spaces), separated with vertical bars. Empty keys should be 5 spaces. The long sequences of - characters should be where they are.

Subsets are read from top to bottom of the file, if a key description in a 'lower' subset is identical to the key description in a 'higher' subset, the 'lower' one is ignored (e.g. not displayed again, possibly at different coordinates and in a different color).

Sets support a primitive form of 'inheritance': SET name2:name1 (name1 should be defined before name2). If both sets have subsets with the same name (say, symbols), and name2 had empty keys on its symbols subset, the key description from the set name1 subset symbols will be displayed for that key instead.

This is my favourite function - the Rastrigin function.

This is my favourite function - the Rastrigin function. What sparked my curiosity and interest in the function was its complexity in terms of many local optimum points, which makes it particularly in

1 Dec 27, 2021
Make visual music sheets for thatskygame (graphical representations of the Sky keyboard)

sky-python-music-sheet-maker This program lets you make visual music sheets for Sky: Children of the Light. It will ask you a few questions, and does

21 Aug 26, 2022
plotly scatterplots which show molecule images on hover!

molplotly Plotly scatterplots which show molecule images on hovering over the datapoints! Required packages: pandas rdkit jupyter_dash ➡️ See example.

150 Dec 28, 2022
A grammar of graphics for Python

plotnine Latest Release License DOI Build Status Coverage Documentation plotnine is an implementation of a grammar of graphics in Python, it is based

Hassan Kibirige 3.3k Jan 01, 2023
a robust room presence solution for home automation with nearly no false negatives

Argos Room Presence This project builds a room presence solution on top of Argos. Using just a cheap raspberry pi zero w (plus an attached pi camera,

Angad Singh 46 Sep 18, 2022
Fast scatter density plots for Matplotlib

About Plotting millions of points can be slow. Real slow... 😴 So why not use density maps? ⚡ The mpl-scatter-density mini-package provides functional

Thomas Robitaille 473 Dec 12, 2022
Data parsing and validation using Python type hints

pydantic Data validation and settings management using Python type hinting. Fast and extensible, pydantic plays nicely with your linters/IDE/brain. De

Samuel Colvin 12.1k Jan 06, 2023
Tidy data structures, summaries, and visualisations for missing data

naniar naniar provides principled, tidy ways to summarise, visualise, and manipulate missing data with minimal deviations from the workflows in ggplot

Nicholas Tierney 611 Dec 22, 2022
Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters

Somoclu Somoclu is a massively parallel implementation of self-organizing maps. It exploits multicore CPUs, it is able to rely on MPI for distributing

Peter Wittek 239 Nov 10, 2022
Create matplotlib visualizations from the command-line

MatplotCLI Create matplotlib visualizations from the command-line MatplotCLI is a simple utility to quickly create plots from the command-line, levera

Daniel Moura 46 Dec 16, 2022
Regress.me is an easy to use data visualization tool powered by Dash/Plotly.

Regress.me Regress.me is an easy to use data visualization tool powered by Dash/Plotly. Regress.me.-.Google.Chrome.2022-05-10.15-58-59.mp4 Get Started

Amar 14 Aug 14, 2022
A Jupyter - Leaflet.js bridge

ipyleaflet A Jupyter / Leaflet bridge enabling interactive maps in the Jupyter notebook. Usage Selecting a basemap for a leaflet map: Loading a geojso

Jupyter Widgets 1.3k Dec 27, 2022
A set of three functions, useful in geographical calculations of different sorts

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

72 Sep 30, 2022
The plottify package is makes matplotlib plots more legible

plottify The plottify package is makes matplotlib plots more legible. It's a thin wrapper around matplotlib that automatically adjusts font sizes, sca

Andy Jones 97 Nov 04, 2022
A minimal Python package that produces slice plots through h5m DAGMC geometry files

A minimal Python package that produces slice plots through h5m DAGMC geometry files Installation pip install dagmc_geometry_slice_plotter Python API U

Fusion Energy 4 Dec 02, 2022
A python package for animating plots build on matplotlib.

animatplot A python package for making interactive as well as animated plots with matplotlib. Requires Python = 3.5 Matplotlib = 2.2 (because slider

Tyler Makaro 394 Dec 18, 2022
哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看、waifu2x等功能。

picacomic-windows 哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看等功能。 功能介绍 登陆分流,还原安卓端的三个分流入口 分类,搜索,排行,收藏夹使用同一的逻辑,滚轮下滑自动加载下一页,双击打开 漫画详情,章节列表和评论列表 下载功能,目

1.8k Dec 31, 2022
GDSHelpers is an open-source package for automatized pattern generation for nano-structuring.

GDSHelpers GDSHelpers in an open-source package for automatized pattern generation for nano-structuring. It allows exporting the pattern in the GDSII-

Helge Gehring 76 Dec 16, 2022
A Python library created to assist programmers with complex mathematical functions

libmaths was created not only as a learning experience for me, but as a way to make mathematical models in seconds for Python users using mat

Simple 73 Oct 02, 2022
This is a super simple visualization toolbox (script) for transformer attention visualization ✌

Trans_attention_vis This is a super simple visualization toolbox (script) for transformer attention visualization ✌ 1. How to prepare your attention m

Mingyu Wang 3 Jul 09, 2022