There's a bunch of ways to do this.
On windows, I would just use AutoHotKey.
On a linux distro, setxkbmap
does the trick, but it is not as flexible.
The goal:
- remapping the capslock to control
- remap something else to toggle capslock
#!/bin/bash | |
# xinput --list to identify the different input devices availiable to you. | |
# xinput query-state [device] where the device is a keyboard. Returns all the keys' states. | |
# xdotool mousedown 1 automates holding down the left mouse click. | |
# xdotool mouseup 1 automates releasing the left mouse click. | |
# This program begins by checking if the keyboard button is pressed at the time of its execution. | |
# If the keyboard button is in the DOWN position, then "press down" the mouse left click. | |
# wait for a bit (but not too long!), and then check the keyboard position again. |
package main | |
import ( | |
"os" | |
"flag" | |
"fmt" | |
"log" | |
"net/http" | |
"path" | |
) |
import sys | |
import math | |
def fib(n): | |
a = (1 + 5**(1/2)) / 2 | |
b = (1 - 5**(1/2)) / 2 | |
return (a**n - b**n)/ 5**(1/2) | |
if len(sys.argv) is not 2: |
def title(s, L=70): | |
L = L - len(s) - 4 | |
l1 = L // 2 | |
l2 = L - l1 | |
prefix = l1*'═' + '╡' | |
postfix = '╞' + l2*'═' | |
print(prefix, s, postfix) | |
/* | |
randintNorm returns an integer in [min, max] including min and max. | |
The distribution will be closer to a normal distribution because it adds | |
2 instances of Math.random() together, like rolling 2 dice and adding them together. | |
*/ | |
const randintNorm = (min, max)=> { | |
min = Math.ceil(min); | |
max = Math.floor(max); | |
let r = (Math.random() + Math.random()) / 2; | |
return Math.floor(r * (max - min + 1)) + min; |
#include <iostream> | |
#include <map> | |
#include <set> | |
/** | |
* WeightedGraph | |
* | |
* @tparam _Key: Type of key used to reference nodes. | |
* | |
*/ |
#include <iostream> | |
#include <map> | |
#include <set> | |
/** | |
* WeightedGraph | |
* | |
* @tparam _Key: Type of key used to reference nodes. | |
* | |
*/ |
package main | |
import ( | |
"fmt" | |
"math/big" | |
) | |
var memo = map[int]*big.Int{ | |
0: big.NewInt(0), | |
1: big.NewInt(1), |
package main | |
import ( | |
"fmt" | |
) | |
type node struct { | |
terminal bool | |
m map[rune]*node | |
} |