_    _______   __   _             _____    ____      
| | _| ____\ \ / /__| |   _   _ __|_   _|__|  _ \ ___ 
| |/ /  _|  \ V / __| |  | | | / __|| |/ _ \ |_) / __|
|   <| |___  | | (__| |__| |_| \__ \| |  __/  _ <\__ \
|_|\_\_____| |_|\___|_____\__,_|___/|_|\___|_| \_\___/
< DRAFT >
< #DEV >
< #WORKFLOW >

keyclusters bundles keys together to help you perform repetitive keyboard stuff, etc.
!!!!!! NEED TO REPRODUCE 2021

Revisions:
    20170217 stub
    20170224 overview
    20171007 replicated
    20210319 MO + cleanup <d

Ties to:
    🔗dev-hyperpaste
    /DEV/key-combinations




Info

Define keyboard phrases / key snippets / key combinations, and replay them.

Works on:
    Ubuntu 14.04, 16.04, ...

Default shortcuts configuration by:
    * hairyfotr, dcht00, CHT (includes specific uses)

STATUS:
    Works! 2017-10-07




Features

Done:
    * navigating and editing Etherpad (indentation, ...):
        * "down + delete/add four spaces"
        * [...]
    * switching between screens (contexts), with external key systems
    * [...]

Next:
    * recording macros:
        press key to start
        press key to end
        press key to assign/replay
        -------------------------------------
        Example:
            double shift = start/end recording
            alt+shift = re-run instance
        TODO: see xmacro
    * autostart on boot, and reload on config change
    * [...]

Later:
    * guile is a new more advanced lisp/scheme config format for xbindkeys -> check + migrate







*** CONFIGURE + RUN


INSTALLATION

This uses xbindkeys.

$ sudo apt-get install xbindkeys xbindkeys-config xvkbd xdotool xmacro

Now put default config (below) on path.

_______________

[~/.xbindkeysrc]

_______________

    * also "xautomation" for "xte"
        $ xte "key a" "key b" "key c" !



Adding a command

Don't use the GUI thing, it's messed up.
### ???

* get key

* put into the config file

$ xbindkeys
    to restart



COMMANDS

RUN
$ xbindkeys

CONFIG GUI
$ xbindkeys-config

RELOAD CONFIG
$ pkill -HUP xbindkeys

CAPTURE KEY COMBINATION
$ xbindkeys -k / --key
        get key
        take the last line

$ xbindkeys --multikey






*** SHARED CONFIGURATION


Basic

# LEFT 4 TIMES on X220 "key above left" (usually goes forward/backward in browser which sucks anyway)
"xvkbd -xsendevent -text '\[Left]\[Left]\[Left]\[Left]'"
    XF86Back

# ... RIGHT 4 TIMES
"xvkbd -xsendevent -text '\[Right]\[Right]\[Right]\[Right]'"
    XF86Forward

# LEFT SHIFT IN ETHERPAD (delete one level, set position on the next line)
"xvkbd -xsendevent -text '\[BackSpace]\[Down]\[Right]\[Right]\[Right]\[Right]'"
    Control+XF86Back
"xvkbd -xsendevent -text '\[BackSpace]\[Down]\[Right]\[Right]\[Right]\[Right]'"
    Shift+XF86Back

# RIGHT SHIFT IN ETHERPAD (4 spaces)
"xvkbd -xsendevent -text '    \[Down]\[Left]\[Left]'"
    Control+XF86Forward
"xvkbd -xsendevent -text '    \[Down]\[Left]\[Left]'"
    Shift+XF86Forward



More!

# REPLACE BULLET WITH STAR IN ETHERPAD (delete one char, make a star, set position on the next line
# Note: Combination Shift+Control+8 is based on US keyboard, where Shift+8 is * - set key combination according to locale
"xvkbd -xsendevent -text '\[BackSpace]* \[Down]'"
    Shift+Control+8

# PAUSE / UNPAUSE currently active window
# Note: during pause mouse/keyboard events are still received - don't touch stopped windows
"kill -STOP $(xdotool getwindowpid $(xdotool getactivewindow))"
    Pause
"kill -CONT $(xdotool getwindowpid $(xdotool getactivewindow))"
    Control+Pause

# CONTROL MOUSE WITH Ctrl+Win+Arrow KEYS
"xdotool mousemove_relative -- -10 0"
    Control+Mod4 + Left
"xdotool mousemove_relative -- 10 0"
    Control+Mod4 + Right
"xdotool mousemove_relative -- 0 10"
    Control+Mod4 + Down
"xdotool mousemove_relative -- 0 -10"
    Control+Mod4 + Up
"xdotool click 1"
    Control+Mod4 + XF86Back
# TODO: doesn't work
#"xdotool click 3"
#    Control+Mod4 + XF86Forward







*** PAD



Key names

# List of modifier (on my keyboard): 
#   Control, Shift, Mod1 (Alt), Mod2 (NumLock), 
#   Mod3 (CapsLock), Mod4, Mod5 (Scroll). 


Also see / alternatives ?

    * AUTOKEY (alternative?):
        don't think it works with left/right (control) keys, only "text"?
    * http://help.ubuntu.com/community/KeyboardShortcuts#Text_Entry_Shortcuts



workon combo: ?

# put "~" on that key under ESCP... that does nothing but ˇ¸°¨°¸ˇ ...



(L:)[!→→] ORDERING/KEYBOARDS— Researching which external keyboard to buy
(20221206; via XXX🔗lies-hvb job)
>L; work on this frag, move out 

What are good (mechanical) keyboards
<Matic> in telegram
"""
Mine is Nuphy Air75 https://nuphy.com/ and it's one of the rare low-profile ones, which feel similar to laptop keyboards. The 2nd hand ones are all high-profile, so they feel like old desktop computer keyboards, but better :)

Only a few ads say which switches they have, but the main types are clicky (loud clicks, good feedback; usually called "blue"), tactile (some feedback, probably best choice; usually called "brown"), linear (no sound or feedback until you hit bottom - gamers prefer this; usually called "red").

Another choice is the layout. I like 75% and TKL, because I couldn't do all of my shortcuts with a smaller one like Ducky One 2 SF (no F1-F12 keys, home, end, print screen, ...). The larger ones usually also have a number pad.

I've heard Keychron K2 is good, but it's somehow cheaper new ( https://www.keychron.com/products/keychron-k2-wireless-mechanical-keyboard ). I don't know the company, but the Leopold FC750R SP with the finger mouse seems good and not expensive.

I could also send send you one of my Air75 keyboards, because I have 2x Air75, and another one ( https://en.akkogear.com/product/silent-3084-bt-5-0white-led-mechanical-keyboard/ ).
"""




<----------------------------- ((new))