You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.3 KiB
Makefile
133 lines
3.3 KiB
Makefile
# Tarmak 1-4 xmodmap file generator
|
|
#
|
|
# Run 'make' inside this directory to create a bunch of xmodmap files based
|
|
# on your current layout, along with another xmodmap file to reset
|
|
# back to your current layout
|
|
|
|
# File names
|
|
FILE1=tarmak1.xmodmap
|
|
FILE2=tarmak2.xmodmap
|
|
FILE3=tarmak3.xmodmap
|
|
FILE4=tarmak4.xmodmap
|
|
FILER=reset.xmodmap
|
|
|
|
# Keycodes for letters/symbols in the QWERTY layout
|
|
E=26
|
|
R=27
|
|
T=28
|
|
Y=29
|
|
O=32
|
|
P=33
|
|
S=39
|
|
D=40
|
|
F=41
|
|
G=42
|
|
J=44
|
|
K=45
|
|
SC=47
|
|
N=57
|
|
|
|
# Function to swap keycode $(1) to $(2) - and save it to file $(3)
|
|
swap = \
|
|
xmodmap -pke | \
|
|
grep "^keycode *$(2)" | \
|
|
sed "s/keycode *$(2)/keycode $(1)/" >> $(3); \
|
|
grep -v '^keycode *$(1)' $(FILER) > $(FILER).tmp; \
|
|
mv $(FILER).tmp $(FILER); \
|
|
xmodmap -pke | \
|
|
grep "^keycode *$(1)" >> $(FILER)
|
|
|
|
all: tarmak1 tarmak2 tarmak3 tarmak4 endmsg
|
|
|
|
clean:
|
|
rm -f $(FILE1)
|
|
rm -f $(FILE2)
|
|
rm -f $(FILE3)
|
|
rm -f $(FILE4)
|
|
rm -f $(FILER)
|
|
|
|
# Tarmak 1: E
|
|
tarmak1:
|
|
echo '! Tarmak 1' > $(FILE1)
|
|
echo '! Reset Tarmak 1' >> $(FILER)
|
|
# E => J
|
|
$(call swap,$(E),$(J),$(FILE1))
|
|
# J => N
|
|
$(call swap,$(J),$(N),$(FILE1))
|
|
# K => E
|
|
$(call swap,$(K),$(E),$(FILE1))
|
|
# N => K
|
|
$(call swap,$(N),$(K),$(FILE1))
|
|
|
|
# Tarmak 2: ET
|
|
tarmak2: tarmak1
|
|
grep -v '$(G)\|$(E)\|$(F)\|$(T)' $(FILE1) > $(FILE2)
|
|
echo '! Tarmak 2' >> $(FILE2)
|
|
echo '! Reset Tarmak 2' >> $(FILER)
|
|
# G => J
|
|
$(call swap,$(G),$(J),$(FILE2))
|
|
# E => F
|
|
$(call swap,$(E),$(F),$(FILE2))
|
|
# F => T
|
|
$(call swap,$(F),$(T),$(FILE2))
|
|
# T => G
|
|
$(call swap,$(T),$(G),$(FILE2))
|
|
|
|
# Tarmak 3: ETR
|
|
tarmak3: tarmak2
|
|
grep -v '$(S)\|$(D)\|$(R)\|$(G)' $(FILE2) > $(FILE3)
|
|
echo '! Tarmak 3' >> $(FILE3)
|
|
echo '! Reset Tarmak 4' >> $(FILER)
|
|
# S => R
|
|
$(call swap,$(S),$(R),$(FILE3))
|
|
# D => S
|
|
$(call swap,$(D),$(S),$(FILE3))
|
|
# R => J
|
|
$(call swap,$(R),$(J),$(FILE3))
|
|
# G => D
|
|
$(call swap,$(G),$(D),$(FILE3))
|
|
|
|
# Tarmak 4: ETRO
|
|
tarmak4: tarmak3
|
|
grep -v '$(O)\|$(SC)\|$(P)\|$(R)\|$(Y)' $(FILE3) > $(FILE4)
|
|
echo '! Tarmak 4' >> $(FILE4)
|
|
echo '! Reset Tarmak 4' >> $(FILER)
|
|
# O => Y
|
|
$(call swap,$(O),$(Y),$(FILE4))
|
|
# ; => O
|
|
$(call swap,$(SC),$(O),$(FILE4))
|
|
# P => ;
|
|
$(call swap,$(P),$(SC),$(FILE4))
|
|
# R => P
|
|
$(call swap,$(R),$(P),$(FILE4))
|
|
# Y => J
|
|
$(call swap,$(Y),$(J),$(FILE4))
|
|
|
|
endmsg:
|
|
@echo
|
|
@echo "Finished successfully!"
|
|
@echo
|
|
@echo "You can now switch to another layout using one of:"
|
|
@echo
|
|
@echo " xmodmap $(FILE1)"
|
|
@echo " xmodmap $(FILE2)"
|
|
@echo " xmodmap $(FILE3)"
|
|
@echo " xmodmap $(FILE4)"
|
|
@echo
|
|
@echo "And if you want to reset back to your current (qwerty) layout,"
|
|
@echo "just call this:"
|
|
@echo
|
|
@echo " xmodmap $(FILER)"
|
|
@echo
|
|
@echo "When you are done with Tarmak 4, run the $(FILER) file and"
|
|
@echo "switch to the Colemak layout using your DE (desktop enviroment)"
|
|
@echo "settings (or run setxkbmap -variant colemak)"
|
|
@echo
|
|
@echo "Tip #1: Open a new terminal window in this folder and type in"
|
|
@echo " "xmodmap $(FILER)" so that you can just press enter if"
|
|
@echo " you get cold feet."
|
|
@echo
|
|
@echo "Tip #2: Do a \"ln -s $(FILE1) ~/.Xmodmap\" to run $(FILE1)"
|
|
@echo " when you log in."
|
|
@echo
|