Giter Club home page Giter Club logo

halmak's Introduction

Halmak Keyboard Layout

This is an AI designed keyboard layout that was built within the keyboard-genetics project. More details and a documented process can be found on the blog Nikolay Rocks.

Keyboard Layout

Features

  • Build based on the real world hand movements analysis
  • Nearly maximal possible typing efficiency
  • Very low overall fingers movement distance
  • Very low same finger / same hand usage overheads
  • Very low overall horizontal hands movement
  • Highly symmetrical design that accounts for individual fingers strength
  • Designed with the modern, web based English in mind

Comparisons

During the research I've identified the following results: in terms of efficiency

  • QWERTY - 0% (baseline)
  • Dvorak - +77%
  • Colemak - +84%
  • Workman - +101%
  • Halmak - +134%

Please refer to the article Halmak Reborn for the more detailed breakdown of the results.

All scripts are opensourced and can be verified in the keyboard-genetics repository.

The Name

The name is a combination of HAL-9000, as a reference to the layout being designed by an AI. And, Dvorak as a gratitude to Mr. Dvorak for his dedication to the layouts optimizations process. The letter m in between is just to make it sound nicer. Or is it!?...

Installation

  • Git clone all the stuff somewhere
  • Copy Halmak.bundle into your /Library/Keyboard Layouts folder (create if it is missing)
  • Sign out, Sign in
  • Go to the keyboard preferences and add the Halmak layout
  • Ask here in issues if nothing works

Android installation for physical keyboards

  1. Install Extra Physical Keyboard Layouts from the Play Store
    Source code is available on github
  2. Connect a physical keyboard to your Android device e.g. via bluetooth or OTG
  3. Select the Halmak layout in your system menu e.g. System > Language and Input > Physical keyboard > Keyboard Name

Integrations

Karabiner Elements

To enable virtual key mapping for Halmak on your macOS machine via Karabiner Elements, you can use the following configuration inside your simple_modifications section of your $HOME/.config/karabiner/karabiner.json file:

{ "from": { "key_code": "q" }, "to": [{ "key_code": "w" }] },
{ "from": { "key_code": "w" }, "to": [{ "key_code": "l" }] },
{ "from": { "key_code": "e" }, "to": [{ "key_code": "r" }] },
{ "from": { "key_code": "r" }, "to": [{ "key_code": "b" }] },
{ "from": { "key_code": "t" }, "to": [{ "key_code": "z" }] },
{ "from": { "key_code": "y" }, "to": [{ "key_code": "semicolon" }] },
{ "from": { "key_code": "u" }, "to": [{ "key_code": "q" }] },
{ "from": { "key_code": "i" }, "to": [{ "key_code": "u" }] },
{ "from": { "key_code": "o" }, "to": [{ "key_code": "d" }] },
{ "from": { "key_code": "p" }, "to": [{ "key_code": "j" }] },
{ "from": { "key_code": "a" }, "to": [{ "key_code": "s" }] },
{ "from": { "key_code": "s" }, "to": [{ "key_code": "h" }] },
{ "from": { "key_code": "d" }, "to": [{ "key_code": "n" }] },
{ "from": { "key_code": "f" }, "to": [{ "key_code": "t" }] },
{ "from": { "key_code": "g" }, "to": [{ "key_code": "comma" }] },
{ "from": { "key_code": "h" }, "to": [{ "key_code": "period" }] },
{ "from": { "key_code": "j" }, "to": [{ "key_code": "a" }] },
{ "from": { "key_code": "k" }, "to": [{ "key_code": "e" }] },
{ "from": { "key_code": "l" }, "to": [{ "key_code": "o" }] },
{ "from": { "key_code": "semicolon" }, "to": [{ "key_code": "i" }] },
{ "from": { "key_code": "z" }, "to": [{ "key_code": "f" }] },
{ "from": { "key_code": "x" }, "to": [{ "key_code": "m" }] },
{ "from": { "key_code": "c" }, "to": [{ "key_code": "v" }] },
{ "from": { "key_code": "v" }, "to": [{ "key_code": "c" }] },
{ "from": { "key_code": "b" }, "to": [{ "key_code": "slash" }] },
{ "from": { "key_code": "n" }, "to": [{ "key_code": "g" }] },
{ "from": { "key_code": "m" }, "to": [{ "key_code": "p" }] },
{ "from": { "key_code": "comma" }, "to": [{ "key_code": "x" }] },
{ "from": { "key_code": "period" }, "to": [{ "key_code": "k" }] },
{ "from": { "key_code": "slash" }, "to": [{ "key_code": "y" }] }

Kinesis Advantage 2

To enable native key mapping for Halmak on your Kinesis Advantage 2

  1. Download our 1_qwerty.txt file
  2. Program+Shift+Escape to enable power user mode (should see 4 LED flashes)
  3. Program+F1 to mount to the keyboard as a drive (should see a few flashes)
  4. Drag the downloaded 1_qwerty.txt file into ADVANTAGE2 / active
  5. Open Disk Utility, right-click on the drive, select Eject (must be "Eject", as unmount will not write the file)
  6. Program+F3 to enable QWERTY, then Program+1 to enable our Halmak modification of QWERTY

Refer to the Kinesis Advantage 2 support page for assistance.

Type Fu

To learn Halmak, we have an integration for Type Fu.

  1. Download our Halmak.tfl file
  2. Open Type Fu
  3. Preferences
  4. Keyboard
  5. Hamburger menu
  6. Import from File
  7. Select the file you downloaded from the first step

Copyright & License

Again, I'm not sure if there is a point to this. But I guess it's MIT.

Copyright (C) 2016 Nikolay Nemshilov

halmak's People

Contributors

kaievns avatar balupton avatar dessalines avatar austintraver avatar fsargent avatar sierrachapman avatar calin-darie avatar dennisorlando avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.