mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-05 18:38:26 +02:00
Compare commits
140 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
eb5e77ffd6 | ||
![]() |
8ae3d3b792 | ||
![]() |
e36fa9216b | ||
![]() |
58d3273f3d | ||
![]() |
0f6cfb95cc | ||
![]() |
d2e5f25c8d | ||
![]() |
6529d3b909 | ||
![]() |
eeb87d3434 | ||
![]() |
fe8b0a2027 | ||
![]() |
4be9043f10 | ||
![]() |
65df97e8bf | ||
![]() |
9f3b4b0072 | ||
![]() |
e35e92fdbd | ||
![]() |
9c87cb2774 | ||
![]() |
3bd45bc627 | ||
![]() |
3b9ce890dc | ||
![]() |
a6688ffc44 | ||
![]() |
94128f7dbf | ||
![]() |
9a451bd93c | ||
![]() |
3dd930d1e5 | ||
![]() |
462ceb578c | ||
![]() |
b958668853 | ||
![]() |
1ae333f0ed | ||
![]() |
0baf62a261 | ||
![]() |
f35f75bd30 | ||
![]() |
e34ff1c86e | ||
![]() |
89500c97c6 | ||
![]() |
d9225a73ef | ||
![]() |
5f75f66852 | ||
![]() |
7e6011a0a9 | ||
![]() |
9608ef95ae | ||
![]() |
ab637704de | ||
![]() |
ed7c68a388 | ||
![]() |
f8f2df0d65 | ||
![]() |
ea70936454 | ||
![]() |
4849fb55ac | ||
![]() |
fb2f6674ad | ||
![]() |
dc2f9c332d | ||
![]() |
42218a3172 | ||
![]() |
6965d81c79 | ||
![]() |
74c66d91cc | ||
![]() |
08c02c2b8f | ||
![]() |
05ead51322 | ||
![]() |
deac0cfb0a | ||
![]() |
087d7a7d0e | ||
![]() |
e755c84b27 | ||
![]() |
1a07a55fa9 | ||
![]() |
192a640e6c | ||
![]() |
ccc081adba | ||
![]() |
336d883b03 | ||
![]() |
61e357b5da | ||
![]() |
407f781af0 | ||
![]() |
4250967d5a | ||
![]() |
c0785ac045 | ||
![]() |
c57b5a3603 | ||
![]() |
4d423de14b | ||
![]() |
ca4f9be6ee | ||
![]() |
a144a47836 | ||
![]() |
afcb4c3a73 | ||
![]() |
2846125c23 | ||
![]() |
25ce34a2fc | ||
![]() |
e1226afad8 | ||
![]() |
ead90abf94 | ||
![]() |
5bf6b06917 | ||
![]() |
e892f045f5 | ||
![]() |
00cfd67996 | ||
![]() |
c1c473c097 | ||
![]() |
969b74adda | ||
![]() |
7e6f872983 | ||
![]() |
b50522c5b1 | ||
![]() |
6a887ebdea | ||
![]() |
d7433092ff | ||
![]() |
d670579db8 | ||
![]() |
3389c512e2 | ||
![]() |
703f6131d4 | ||
![]() |
f3ab1e043b | ||
![]() |
78e537ac71 | ||
![]() |
b1851316de | ||
![]() |
812d2a4bcd | ||
![]() |
997d2dd39f | ||
![]() |
39c40bc315 | ||
![]() |
16f8b237d5 | ||
![]() |
7013d81686 | ||
![]() |
daaa1fd352 | ||
![]() |
87ca8e7566 | ||
![]() |
0e4160622f | ||
![]() |
47037d9619 | ||
![]() |
564360e9fa | ||
![]() |
91e692c76b | ||
![]() |
ce31232015 | ||
![]() |
6c46696bd4 | ||
![]() |
40c8d20513 | ||
![]() |
6b6e448e76 | ||
![]() |
f73a2c8420 | ||
![]() |
c6605c68cf | ||
![]() |
153c5e7b91 | ||
![]() |
548e248515 | ||
![]() |
4a51232b9d | ||
![]() |
4da8f97bf7 | ||
![]() |
bfd363107d | ||
![]() |
6a2948e8a5 | ||
![]() |
16d5531035 | ||
![]() |
5870f6b987 | ||
![]() |
557ba01eac | ||
![]() |
fd2234fae4 | ||
![]() |
21bfb6faae | ||
![]() |
b904235653 | ||
![]() |
1d59d8d643 | ||
![]() |
df9b8d974e | ||
![]() |
4078094e33 | ||
![]() |
c8ab5eb4ba | ||
![]() |
2c1fb05920 | ||
![]() |
48b3d3f7bd | ||
![]() |
68a2d95b72 | ||
![]() |
89beeb427b | ||
![]() |
d45b8e29dc | ||
![]() |
7cb14dfbf3 | ||
![]() |
19381a5528 | ||
![]() |
4a9ced9478 | ||
![]() |
51e86149bc | ||
![]() |
f9647a5476 | ||
![]() |
92b4315da7 | ||
![]() |
5003d6fa9b | ||
![]() |
4140a06d53 | ||
![]() |
3cf480d724 | ||
![]() |
2a467f2a26 | ||
![]() |
d695c3f734 | ||
![]() |
8c2c53cdcd | ||
![]() |
0f064360a4 | ||
![]() |
998c9bdf28 | ||
![]() |
393f45d1d3 | ||
![]() |
e8a8c0ed56 | ||
![]() |
c4db31bdf0 | ||
![]() |
c6292ee34a | ||
![]() |
470541d5f8 | ||
![]() |
5152c0ee6e | ||
![]() |
9b97bd9ea6 | ||
![]() |
3f4b5241eb | ||
![]() |
324e4d83c6 | ||
![]() |
eb49a4859f |
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: rbreaves
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Install Type:** Bare Metal or VM
|
||||
**Distro:** Name + Version
|
||||
**DE:** Gnome, XFCE, KDE
|
||||
**Branch:** master, dev
|
||||
**Commit:** git rev-parse --short HEAD
|
||||
|
||||
**Kinto Input Caret Status**
|
||||
```
|
||||
cat /tmp/kinto/caret
|
||||
```
|
||||
|
||||
**Kinto Standard Log**
|
||||
```
|
||||
journalctl --user-unit=keyswap.service -b
|
||||
```
|
||||
**Kinto Debug Log (1.0.6-2+)**
|
||||
```
|
||||
systemctl --user stop keyswap
|
||||
cd ~/.config/kinto
|
||||
./kintox11 --debug
|
||||
```
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: rbreaves
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
10
.github/ISSUE_TEMPLATE/gratitude.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/gratitude.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Gratitude
|
||||
about: Just wants to give a shout out!
|
||||
title: ''
|
||||
labels: gratitude
|
||||
assignees: rbreaves
|
||||
|
||||
---
|
||||
|
||||
|
10
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Question
|
||||
about: Question about Kinto functionality
|
||||
title: ''
|
||||
labels: question
|
||||
assignees: rbreaves
|
||||
|
||||
---
|
||||
|
||||
|
@@ -1,74 +1,455 @@
|
||||
// Template
|
||||
//
|
||||
// ONE_LEVEL_CTRL
|
||||
// Base
|
||||
// Shift
|
||||
// Alt
|
||||
// Shift Alt
|
||||
// Control
|
||||
// Shift Control
|
||||
// Super
|
||||
// Shift Super
|
||||
// Control Alt
|
||||
// Super Control
|
||||
// Super Alt
|
||||
// Super Control Alt
|
||||
//
|
||||
// replace key <KEY> {
|
||||
// type[Group1]= "ONE_LEVEL_CTRL",
|
||||
// symbols[Group1]= [
|
||||
// Base,
|
||||
// Alt,
|
||||
// Shift Alt,
|
||||
// Control,
|
||||
// Shift Control,
|
||||
// Super,
|
||||
// Shift Super,
|
||||
// Control Alt,
|
||||
// Super Control",
|
||||
// Super Alt,
|
||||
// Super Control Alt
|
||||
// ],
|
||||
// actions[Group1]= [
|
||||
// NoAction(),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Mod1),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Mod1+Shift),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Control),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Control+Shift),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Super),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Super+Shift),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Control+Alt),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Super+Control),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Super+Mod1),
|
||||
// RedirectKey(key=<KEY>,modifiers=NewMod,clearmods=Control+Mod1)
|
||||
// ]
|
||||
// };
|
||||
hidden partial modifier_keys
|
||||
xkb_symbols "swapescape" {
|
||||
key <CAPS> { [ Escape ] };
|
||||
key <ESC> { [ Caps_Lock ] };
|
||||
};
|
||||
hidden partial modifier_keys
|
||||
xkb_symbols "caps_escape" {
|
||||
key <CAPS> { [ Escape ] };
|
||||
};
|
||||
hidden partial modifier_keys
|
||||
xkb_symbols "caps_shiftlock" {
|
||||
replace key <CAPS> { [ Shift_Lock ] };
|
||||
modifier_map Shift { Shift_Lock };
|
||||
};
|
||||
hidden partial modifier_keys
|
||||
xkb_symbols "caps_none" {
|
||||
key <CAPS> { [ VoidSymbol ] };
|
||||
};
|
||||
default partial xkb_symbols "mac_levelssym" {
|
||||
// LEFT to Begin Line or Beginning of word
|
||||
replace key <LEFT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [ Left, Left, NoSymbol,NoSymbol,Left ],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
RedirectKey(key=<LEFT>,modifiers=Control,clearmods=Mod1),
|
||||
RedirectKey(key=<HOME>,clearmods=Control),
|
||||
RedirectKey(key=<HOME>,modifiers=Shift,clearmods=Control+Mod1),
|
||||
RedirectKey(key=<LEFT>,modifiers=Shift+Control,clearmods=Mod1)
|
||||
]
|
||||
};
|
||||
// Right to End of Line or end of word
|
||||
replace key <RGHT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [ Right, Right, NoSymbol, NoSymbol,Right ],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
RedirectKey(key=<RGHT>,modifiers=Control,clearmods=Mod1),
|
||||
RedirectKey(key=<END>,clearmods=Control),
|
||||
RedirectKey(key=<END>,modifiers=Shift,clearmods=Control+Mod1),
|
||||
RedirectKey(key=<RGHT>,modifiers=Shift+Control,clearmods=Mod1)
|
||||
]
|
||||
};
|
||||
// Up to Mac Home
|
||||
replace key <UP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
// // Minimize window Cmd + H = Alt + F9
|
||||
// // 2 caveats
|
||||
// // 1 Cmd + H may not pass through on VMs
|
||||
// // 2 may cause conflicts with apps
|
||||
// replace key <AC06> {
|
||||
// type[Group1]= "ONE_LEVEL_CTRL",
|
||||
// symbols[Group1]= [
|
||||
// h,
|
||||
// H,
|
||||
// h,
|
||||
// H,
|
||||
// h
|
||||
// ],
|
||||
// actions[Group1]= [
|
||||
// NoAction(),
|
||||
// NoAction(),
|
||||
// NoAction(),
|
||||
// NoAction(),
|
||||
// RedirectKey(key=<AC06>,modifiers=Super,clearmods=Control)
|
||||
// ]
|
||||
// };
|
||||
// Maximize Window Ctrl + Cmd + F = Alt+F10
|
||||
// Also maps Option + Cmd + F to Control+H for Replace - Sublime
|
||||
// AD03=e,E
|
||||
// AC01=a,A
|
||||
// Ctrl + A - Beginning of Line
|
||||
replace key <AC01> {
|
||||
type[Group1]= "ONE_LEVEL_SUPER",
|
||||
symbols[Group1]= [
|
||||
Up,
|
||||
Up,
|
||||
// Base
|
||||
a,
|
||||
// Shift
|
||||
A,
|
||||
// Super
|
||||
NoSymbol,
|
||||
// Shift Super
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<HOME>)
|
||||
RedirectKey(key=<HOME>,clearmods=Super),
|
||||
RedirectKey(key=<HOME>,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Ctrl + E - End of Line
|
||||
replace key <AD03> {
|
||||
type[Group1]= "ONE_LEVEL_SUPER",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
e,
|
||||
// Shift
|
||||
E,
|
||||
// Super
|
||||
NoSymbol,
|
||||
// Shift Super
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<END>,clearmods=Super),
|
||||
RedirectKey(key=<END>,clearmods=Super)
|
||||
]
|
||||
};
|
||||
replace key <AC04> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
f,
|
||||
// Shift
|
||||
F,
|
||||
// Alt
|
||||
f,
|
||||
// Shift Alt
|
||||
F,
|
||||
// Control
|
||||
f,
|
||||
// Shift Control
|
||||
F,
|
||||
// Super
|
||||
f,
|
||||
// Shift Super
|
||||
F,
|
||||
// Control Alt
|
||||
h
|
||||
// Super Control
|
||||
// ,F10 // Default maximize
|
||||
// // Nothing // KDE maximize
|
||||
// Super Alt
|
||||
// Super Control Alt
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt
|
||||
NoAction(),
|
||||
// Shift Alt
|
||||
NoAction(),
|
||||
// Control
|
||||
NoAction(),
|
||||
// Shift Control
|
||||
NoAction(),
|
||||
// Super
|
||||
NoAction(),
|
||||
// Shift Super
|
||||
NoAction(),
|
||||
// Control Alt
|
||||
RedirectKey(key=<AC06>,clearmods=Mod1)
|
||||
// Super Control - Fullscreen
|
||||
// ,RedirectKey(key=<FK10>,modifiers=Mod1,clearmods=Super+Control) // Default maximize
|
||||
// // Nothing // KDE maximize
|
||||
// Super Alt
|
||||
// Super Control Alt
|
||||
]
|
||||
};
|
||||
// Close App Cmd + Q = Alt + F4
|
||||
replace key <AD01> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
q,
|
||||
// Shift
|
||||
Q,
|
||||
// Alt
|
||||
q,
|
||||
// Shift Alt
|
||||
Q,
|
||||
// Control
|
||||
F4
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt
|
||||
NoAction(),
|
||||
// Shift Alt
|
||||
NoAction(),
|
||||
// Control
|
||||
RedirectKey(key=<FK04>,modifiers=Mod1,clearmods=Control)
|
||||
]
|
||||
};
|
||||
// Show Desktop Cmd + F3 = Super + D
|
||||
replace key <FK03> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
F3,
|
||||
// Shift
|
||||
F3,
|
||||
// Alt
|
||||
F3,
|
||||
// Shift Alt
|
||||
F3,
|
||||
// Control
|
||||
d
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<AC03>,modifiers=Super,clearmods=Control)
|
||||
]
|
||||
};
|
||||
// Fix the G key for Sublime Text
|
||||
replace key <AC05> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
g,
|
||||
// Shift
|
||||
G,
|
||||
// Alt
|
||||
g,
|
||||
// Shift Alt
|
||||
G,
|
||||
// Control
|
||||
g,
|
||||
// Shift Control
|
||||
G,
|
||||
// Super
|
||||
NoSymbol,
|
||||
// Shift Super
|
||||
NoSymbol,
|
||||
// Control Alt
|
||||
g,
|
||||
// Super Control
|
||||
g,
|
||||
// Super Alt
|
||||
g,
|
||||
// Super Control Alt
|
||||
g
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Pass G Normally
|
||||
RedirectKey(key=<AC05>),
|
||||
RedirectKey(key=<AC05>),
|
||||
// Find Next
|
||||
RedirectKey(key=<FK03>,clearmods=Control),
|
||||
// Find Previous
|
||||
RedirectKey(key=<FK03>,clearmods=Control),
|
||||
// Sublime Goto Line
|
||||
RedirectKey(key=<AC05>,modifiers=Control,clearmods=Super),
|
||||
NoAction(),
|
||||
// Sublime Quick Find
|
||||
RedirectKey(key=<FK03>,clearmods=Mod1),
|
||||
// Sublime Select All Matches
|
||||
RedirectKey(key=<FK03>,modifiers=Mod1,clearmods=Super+Control),
|
||||
NoAction(),
|
||||
NoAction()
|
||||
]
|
||||
};
|
||||
// LEFT to Begin Line or Beginning of word
|
||||
replace key <LEFT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
Left,
|
||||
// Shift
|
||||
Left,
|
||||
// Alt
|
||||
Left,
|
||||
// Shift Alt
|
||||
Left,
|
||||
// Control
|
||||
NoSymbol,
|
||||
// Shift Control
|
||||
NoSymbol,
|
||||
// Super
|
||||
Left
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt - Wordwise
|
||||
RedirectKey(key=<LEFT>,mods=Control,clearmods=Mod1),
|
||||
// Shift Alt
|
||||
RedirectKey(key=<LEFT>,mods=Control,clearmods=Mod1),
|
||||
// Control
|
||||
RedirectKey(key=<HOME>,clearmods=Control),
|
||||
// Shift Control
|
||||
RedirectKey(key=<HOME>,clearmods=Control),
|
||||
// Super - Change workspace
|
||||
NoAction()
|
||||
]
|
||||
};
|
||||
|
||||
// Right to End of Line or end of word
|
||||
replace key <RGHT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
Right,
|
||||
// Shift
|
||||
Right,
|
||||
// Alt
|
||||
Right,
|
||||
// Shift Alt
|
||||
Right,
|
||||
// Control
|
||||
NoSymbol,
|
||||
// Shift Control
|
||||
NoSymbol,
|
||||
// Super
|
||||
Right
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt - Wordwise
|
||||
RedirectKey(key=<RGHT>,mods=Control,clearmods=Mod1),
|
||||
// Shift Alt
|
||||
RedirectKey(key=<RGHT>,mods=Control,clearmods=Mod1),
|
||||
// Control
|
||||
RedirectKey(key=<END>,clearmods=Control),
|
||||
// Shift Control
|
||||
RedirectKey(key=<END>,clearmods=Control),
|
||||
// Super - Change workspace
|
||||
NoAction()
|
||||
]
|
||||
};
|
||||
|
||||
//Up to Mac Home
|
||||
replace key <UP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
Up,
|
||||
// Shift
|
||||
Up,
|
||||
// Alt
|
||||
Up,
|
||||
// Shift Alt
|
||||
Up,
|
||||
// Control
|
||||
NoSymbol,
|
||||
// Shift Control
|
||||
NoSymbol,
|
||||
// Super
|
||||
Up,
|
||||
// Shift Super
|
||||
Up
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt - Wordwise
|
||||
RedirectKey(key=<UP>,clearmods=Mod1),
|
||||
// Shift Alt
|
||||
// RedirectKey(key=<UP>), // Chromebook multicursor
|
||||
RedirectKey(key=<UP>,clearmods=Mod1), // Default multicursor
|
||||
// Control
|
||||
RedirectKey(key=<HOME>),
|
||||
// Shift Control
|
||||
RedirectKey(key=<HOME>),
|
||||
// Super - Wordwise - Sublime?
|
||||
RedirectKey(key=<PGUP>,clearmods=Super),
|
||||
// Shift Super
|
||||
RedirectKey(key=<UP>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
|
||||
// Down to Mac End
|
||||
replace key <DOWN> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
Down,
|
||||
// Shift
|
||||
Down,
|
||||
NoSymbol
|
||||
// Alt
|
||||
Down,
|
||||
// Shift Alt
|
||||
Down,
|
||||
// Control
|
||||
NoSymbol,
|
||||
// Shift Control
|
||||
NoSymbol,
|
||||
// Super
|
||||
Down,
|
||||
// Shift Super
|
||||
Down
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
RedirectKey(key=<END>)
|
||||
// Alt - Wordwise
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
// Shift Alt
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
// Control
|
||||
RedirectKey(key=<END>),
|
||||
// Shift Control
|
||||
RedirectKey(key=<END>),
|
||||
// Super - Wordwise - Sublime?
|
||||
RedirectKey(key=<PGDN>,clearmods=Super),
|
||||
// Shift Super
|
||||
RedirectKey(key=<DOWN>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Alt BKSP to DELETE
|
||||
replace key <BKSP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
BackSpace,
|
||||
BackSpace,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
RedirectKey(key=<DELE>,clearmods=Mod1),
|
||||
NoAction()
|
||||
]
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
BackSpace,
|
||||
BackSpace,
|
||||
BackSpace
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<DELE>,clearmods=Mod1)
|
||||
]
|
||||
};
|
||||
// // Full Print Screen
|
||||
// // GalliumOS
|
||||
@@ -99,6 +480,252 @@ default partial xkb_symbols "mac_levelssym" {
|
||||
// actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<PRSC>,clearmods=Control) ]
|
||||
// };
|
||||
};
|
||||
partial xkb_symbols "mac_appcycle_chromebook" {
|
||||
// Cycle App and In App Tab Switching
|
||||
replace key <TAB> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Tab,
|
||||
Tab,
|
||||
Tab,
|
||||
Tab,
|
||||
backslash,
|
||||
backslash,
|
||||
NoSymbol,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Alt
|
||||
Redirect(key=<TAB>,mods=Control,clearmods=Mod1),
|
||||
// Alt + Shift
|
||||
Redirect(key=<TAB>,mods=Control,clearmods=Mod1),
|
||||
// Control
|
||||
Redirect(key=<BKSL>),
|
||||
// Control+Shift
|
||||
Redirect(key=<BKSL>),
|
||||
// Super
|
||||
NoAction(),
|
||||
// Super + Shift
|
||||
NoAction()
|
||||
]
|
||||
};
|
||||
};
|
||||
partial xkb_symbols "mac_appcycle" {
|
||||
// Cycle App and In App Tab Switching
|
||||
key <FK13> { [ F13 ] };
|
||||
key <FK14> { [ F14 ] };
|
||||
replace key <TAB> {
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
Tab,
|
||||
Tab,
|
||||
F14,
|
||||
F13,
|
||||
NoSymbol,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Control + Shift
|
||||
Redirect(key=<FK14>),
|
||||
// Control
|
||||
Redirect(key=<FK13>),
|
||||
// Super
|
||||
Redirect(key=<TAB>,mods=Control,clearmods=Mod4+Super),
|
||||
// Super + Shift
|
||||
Redirect(key=<TAB>,mods=Control,clearmods=Mod4+Super)
|
||||
]
|
||||
};
|
||||
};
|
||||
partial xkb_symbols "mac_browsers_chromebook" {
|
||||
// Cycle App and In App Tab Switching
|
||||
replace key <TAB> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Tab,
|
||||
Tab,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
backslash,
|
||||
backslash,
|
||||
NoSymbol,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Alt
|
||||
Redirect(key=<PGDN>,mods=Control,clearmods=Mod1),
|
||||
// Alt + Shift
|
||||
Redirect(key=<PGUP>,mods=Control,clearmods=Mod1+Shift),
|
||||
// Control
|
||||
Redirect(key=<BKSL>),
|
||||
// Control+Shift
|
||||
Redirect(key=<BKSL>),
|
||||
// Super
|
||||
NoAction(),
|
||||
// Super + Shift
|
||||
NoAction()
|
||||
]
|
||||
};
|
||||
//Up to Mac Home
|
||||
replace key <UP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Up,
|
||||
Up,
|
||||
Up,
|
||||
Up,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
Up
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Wordwise
|
||||
RedirectKey(key=<UP>,clearmods=Mod1),
|
||||
RedirectKey(key=<UP>,clearmods=Mod1),
|
||||
RedirectKey(key=<HOME>),
|
||||
RedirectKey(key=<HOME>),
|
||||
// Wordwise - Sublime?
|
||||
RedirectKey(key=<PGUP>,clearmods=Super),
|
||||
RedirectKey(key=<UP>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Down to Mac End
|
||||
replace key <DOWN> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Down,
|
||||
Down,
|
||||
Down,
|
||||
Down,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
Down
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Wordwise
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
RedirectKey(key=<END>),
|
||||
RedirectKey(key=<END>),
|
||||
// Wordwise - Sublime?
|
||||
RedirectKey(key=<PGDN>,clearmods=Super),
|
||||
RedirectKey(key=<DOWN>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Alt BKSP to DELETE
|
||||
replace key <BKSP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
BackSpace,
|
||||
BackSpace,
|
||||
BackSpace
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<DELE>,clearmods=Mod1)
|
||||
]
|
||||
};
|
||||
};
|
||||
partial xkb_symbols "mac_browsers" {
|
||||
// Cycle App and In App Tab Switching
|
||||
key <FK13> { [ F13 ] };
|
||||
key <FK14> { [ F14 ] };
|
||||
replace key <TAB> {
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
Tab,
|
||||
Tab,
|
||||
F14,
|
||||
F13,
|
||||
NoSymbol,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
Redirect(key=<FK14>),
|
||||
Redirect(key=<FK13>),
|
||||
Redirect(key=<PGDN>,mods=Control,clearmods=Mod4+Super),
|
||||
Redirect(key=<PGUP>,mods=Control,clearmods=Mod4+Super+Shift)
|
||||
]
|
||||
};
|
||||
//Up to Mac Home
|
||||
replace key <UP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Up,
|
||||
Up,
|
||||
Up,
|
||||
Up,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
Up
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Wordwise
|
||||
RedirectKey(key=<UP>,clearmods=Mod1),
|
||||
RedirectKey(key=<UP>,clearmods=Mod1),
|
||||
RedirectKey(key=<HOME>),
|
||||
RedirectKey(key=<HOME>),
|
||||
// Wordwise - Sublime?
|
||||
RedirectKey(key=<PGUP>,clearmods=Super),
|
||||
RedirectKey(key=<UP>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Down to Mac End
|
||||
replace key <DOWN> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Down,
|
||||
Down,
|
||||
Down,
|
||||
Down,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
Down
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Wordwise
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
RedirectKey(key=<DOWN>,clearmods=Mod1),
|
||||
RedirectKey(key=<END>),
|
||||
RedirectKey(key=<END>),
|
||||
// Wordwise - Sublime?
|
||||
RedirectKey(key=<PGDN>,clearmods=Super),
|
||||
RedirectKey(key=<DOWN>,modifiers=Mod1,clearmods=Super)
|
||||
]
|
||||
};
|
||||
// Alt BKSP to DELETE
|
||||
replace key <BKSP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
BackSpace,
|
||||
BackSpace,
|
||||
BackSpace
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<DELE>,clearmods=Mod1)
|
||||
]
|
||||
};
|
||||
};
|
||||
partial xkb_symbols "mac_chrome" {
|
||||
// Back Button
|
||||
replace key <LEFT> {
|
||||
@@ -106,11 +733,20 @@ partial xkb_symbols "mac_chrome" {
|
||||
symbols[Group1]= [
|
||||
Left,
|
||||
Left,
|
||||
NoSymbol,
|
||||
NoSymbol,
|
||||
Left
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
RedirectKey(key=<UP>),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt
|
||||
RedirectKey(key=<FK18>),
|
||||
// Alt
|
||||
RedirectKey(key=<FK18>),
|
||||
// Control
|
||||
RedirectKey(key=<LEFT>,modifiers=Mod1,clearmods=Control)
|
||||
]
|
||||
};
|
||||
@@ -118,13 +754,27 @@ partial xkb_symbols "mac_chrome" {
|
||||
replace key <RGHT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
// Base
|
||||
Right,
|
||||
// Shift
|
||||
Right,
|
||||
// Alt
|
||||
NoSymbol,
|
||||
// Shift Alt
|
||||
NoSymbol,
|
||||
// Control
|
||||
Right
|
||||
],
|
||||
actions[Group1]= [
|
||||
// Base
|
||||
NoAction(),
|
||||
RedirectKey(key=<DOWN>),
|
||||
// Shift
|
||||
NoAction(),
|
||||
// Alt
|
||||
RedirectKey(key=<FK18>),
|
||||
// Shift Alt
|
||||
RedirectKey(key=<FK18>),
|
||||
// Control
|
||||
RedirectKey(key=<RGHT>,modifiers=Mod1,clearmods=Control)
|
||||
]
|
||||
};
|
||||
|
@@ -27,19 +27,110 @@ partial xkb_symbols "mac_win" {
|
||||
};
|
||||
};
|
||||
partial xkb_symbols "mac_global" {
|
||||
// Page Up
|
||||
replace key <UP> {
|
||||
// // Minimize Window Cmd + H = Alt+F9
|
||||
// replace key <AC06> {
|
||||
// type[Group1]= "ONE_LEVEL_CTRL",
|
||||
// symbols[Group1]= [
|
||||
// h,
|
||||
// H,
|
||||
// H
|
||||
// ],
|
||||
// actions[Group1]= [
|
||||
// NoAction(),
|
||||
// NoAction(),
|
||||
// RedirectKey(key=<AC06>,modifiers=Super,clearmods=Control+Shift)
|
||||
// ]
|
||||
// };
|
||||
|
||||
//
|
||||
// Some sort of glitch occurs on shifting F while this segment is active
|
||||
// it is like the Control key is being held down when it isn't.
|
||||
//
|
||||
// // Maximize Window Ctrl + Cmd + F = Alt+F10
|
||||
// replace key <AC04> {
|
||||
// type[Group1]= "ONE_LEVEL_CTRL",
|
||||
// symbols[Group1]= [
|
||||
// f,
|
||||
// F,
|
||||
// F
|
||||
// ],
|
||||
// actions[Group1]= [
|
||||
// // Base
|
||||
// NoAction(),
|
||||
// // Shift
|
||||
// NoAction(),
|
||||
// // Ctrl + Shift
|
||||
// RedirectKey(key=<FK10>,modifiers=Mod1,clearmods=Control+Shift)
|
||||
// ]
|
||||
// };
|
||||
|
||||
// Close App Cmd + Q = Alt + F4
|
||||
replace key <AD01> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Up,
|
||||
Up,
|
||||
NoSymbol ],
|
||||
q,
|
||||
Q,
|
||||
F4
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<PGUP>,clearmods=Shift+Control)
|
||||
RedirectKey(key=<FK04>,modifiers=Mod1,clearmods=Control+Shift)
|
||||
]
|
||||
};
|
||||
|
||||
// Show Desktop Cmd + F3 = Super + D
|
||||
replace key <FK03> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
F3,
|
||||
F3,
|
||||
D
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<AC03>,modifiers=Super,clearmods=Control+Shift)
|
||||
]
|
||||
};
|
||||
|
||||
// Cycle App and In App Tab Switching
|
||||
key <FK13> { [ F13 ] };
|
||||
key <FK14> { [ F14 ] };
|
||||
|
||||
replace key <TAB> {
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
Tab,
|
||||
Tab,
|
||||
// F13 // Default cmdtab
|
||||
// F14 // KDE cmdtab
|
||||
// Right // Elementary ecmdtab
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
// Redirect(key=<FK13>) // Default cmdtab
|
||||
// Redirect(key=<FK14>) // KDE cmdtab
|
||||
// Redirect(key=<RGHT>,mods=Control+Shift,clearmods=Mod4+Super) // Elementary cmdtab
|
||||
]
|
||||
};
|
||||
|
||||
// Page Up
|
||||
replace key <UP> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
symbols[Group1]= [
|
||||
Up,
|
||||
Up,
|
||||
NoSymbol
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<PGUP>,clearmods=Shift+Control)
|
||||
]
|
||||
};
|
||||
|
||||
// Page Down
|
||||
replace key <DOWN> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
@@ -56,36 +147,40 @@ partial xkb_symbols "mac_global" {
|
||||
};
|
||||
// HOME
|
||||
replace key <LEFT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
Left,
|
||||
Left,
|
||||
NoSymbol
|
||||
NoSymbol,
|
||||
Left
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<HOME>,clearmods=Shift+Control)
|
||||
RedirectKey(key=<HOME>,clearmods=Shift+Control),
|
||||
RedirectKey(key=<LEFT>,mods=Super,clearmods=Control)
|
||||
]
|
||||
};
|
||||
// END
|
||||
replace key <RGHT> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
Right,
|
||||
Right,
|
||||
NoSymbol
|
||||
NoSymbol,
|
||||
Right
|
||||
],
|
||||
actions[Group1]= [
|
||||
NoAction(),
|
||||
NoAction(),
|
||||
RedirectKey(key=<END>,clearmods=Shift+Control)
|
||||
RedirectKey(key=<END>,clearmods=Shift+Control),
|
||||
RedirectKey(key=<RGHT>,mods=Super,clearmods=Control)
|
||||
]
|
||||
};
|
||||
// Full Print Screen
|
||||
// Standard Ubuntu
|
||||
replace key <AE03> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
3,
|
||||
numbersign,
|
||||
@@ -100,7 +195,7 @@ partial xkb_symbols "mac_global" {
|
||||
// Region Print Screen
|
||||
// Standard Ubuntu
|
||||
replace key <AE04> {
|
||||
type[Group1]= "ONE_LEVEL_CTRL",
|
||||
type[Group1]= "ONE_LEVEL_CMD",
|
||||
symbols[Group1]= [
|
||||
4,
|
||||
dollar,
|
||||
|
@@ -1,15 +1,53 @@
|
||||
default partial xkb_types "addmac_levels" {
|
||||
Virtual_modifiers Super;
|
||||
type "ONE_LEVEL_CTRL" {
|
||||
modifiers= Mod1+Control+Shift;
|
||||
map[Mod1]= Level2;
|
||||
map[Control]= Level3;
|
||||
map[Mod1+Control]= Level3;
|
||||
map[Shift+Control]= Level4;
|
||||
map[Shift+Mod1] = Level5;
|
||||
level_name[Level1]= "Base";
|
||||
level_name[Level2]= "Alt";
|
||||
level_name[Level3]= "Control";
|
||||
level_name[Level4]= "Shift with Control";
|
||||
level_name[Level5] = "Shift Alt";
|
||||
modifiers = Shift+Mod1+Super+Control;
|
||||
map[Shift] = Level2;
|
||||
map[Mod1] = Level3;
|
||||
map[Shift+Mod1] = Level4;
|
||||
map[Control] = Level5;
|
||||
map[Shift+Control] = Level6;
|
||||
map[Super] = Level7;
|
||||
map[Shift+Super] = Level8;
|
||||
map[Mod1+Control] = 9;
|
||||
map[Super+Control] = 10;
|
||||
map[Super+Mod1] = 11;
|
||||
map[Super+Mod1+Control] = 12;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Alt";
|
||||
level_name[Level4] = "Shift Alt";
|
||||
level_name[Level5] = "Control";
|
||||
level_name[Level6] = "Shift Control";
|
||||
level_name[Level7] = "Super";
|
||||
level_name[Level8] = "Shift Super";
|
||||
level_name[9] = "Control Alt";
|
||||
level_name[10] = "Super Control";
|
||||
level_name[11] = "Super Alt";
|
||||
level_name[12] = "Super Control Alt";
|
||||
};
|
||||
type "ONE_LEVEL_CMD" {
|
||||
modifiers = Shift+Control+Super;
|
||||
map[Shift] = Level2;
|
||||
map[Shift+Control] = Level3;
|
||||
map[Control] = Level4;
|
||||
map[Super] = Level5;
|
||||
map[Shift+Super] = Level6;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Control Shift";
|
||||
level_name[Level4] = "Control";
|
||||
level_name[Level5] = "Super";
|
||||
level_name[Level6] = "Super Shift";
|
||||
};
|
||||
type "ONE_LEVEL_SUPER" {
|
||||
modifiers = Shift+Super;
|
||||
map[Shift] = Level2;
|
||||
map[Super] = Level3;
|
||||
map[Shift+Super] = Level4;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Super";
|
||||
level_name[Level4] = "Super Shift";
|
||||
};
|
||||
};
|
||||
|
@@ -1,10 +1,53 @@
|
||||
default partial xkb_types "addmac_levels" {
|
||||
Virtual_modifiers Super;
|
||||
type "ONE_LEVEL_CTRL" {
|
||||
modifiers= Shift+Control;
|
||||
map[Shift]= Level2;
|
||||
map[Shift+Control]= Level3;
|
||||
level_name[Level1]= "Base";
|
||||
level_name[Level2]= "Alt";
|
||||
level_name[Level3]= "With Control";
|
||||
modifiers = Shift+Mod1+Super+Control;
|
||||
map[Shift] = Level2;
|
||||
map[Shift+Control] = Level3;
|
||||
// map[Mod1] = Level4;
|
||||
map[Shift+Mod1] = Level5;
|
||||
map[Control] = Level6;
|
||||
map[Super] = Level7;
|
||||
map[Shift+Super] = Level8;
|
||||
map[Mod1+Control] = 9;
|
||||
map[Super+Control] = 10;
|
||||
map[Super+Mod1] = 11;
|
||||
map[Super+Mod1+Control] = 12;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Shift Control";
|
||||
// level_name[Level4] = "Alt";
|
||||
level_name[Level5] = "Shift Alt";
|
||||
level_name[Level6] = "Control";
|
||||
level_name[Level7] = "Super";
|
||||
level_name[Level8] = "Shift Super";
|
||||
level_name[9] = "Control Alt";
|
||||
level_name[10] = "Super Control";
|
||||
level_name[11] = "Super Alt";
|
||||
level_name[12] = "Super Control Alt";
|
||||
};
|
||||
};
|
||||
type "ONE_LEVEL_CMD" {
|
||||
modifiers = Shift+Control+Super;
|
||||
map[Shift] = Level2;
|
||||
map[Shift+Control] = Level3;
|
||||
map[Control] = Level4;
|
||||
map[Super] = Level5;
|
||||
map[Shift+Super] = Level6;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Control Shift";
|
||||
level_name[Level4] = "Control";
|
||||
level_name[Level5] = "Super";
|
||||
level_name[Level6] = "Super Shift";
|
||||
};
|
||||
type "ONE_LEVEL_SUPER" {
|
||||
modifiers = Shift+Super;
|
||||
map[Shift] = Level2;
|
||||
map[Super] = Level3;
|
||||
map[Shift+Super] = Level4;
|
||||
level_name[Level1] = "Base";
|
||||
level_name[Level2] = "Shift";
|
||||
level_name[Level3] = "Super";
|
||||
level_name[Level4] = "Super Shift";
|
||||
};
|
||||
};
|
||||
|
144
README.md
144
README.md
@@ -1,12 +1,12 @@
|
||||
# Kinto
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[](https://github.com/rbreaves/kinto/releases/latest)
|
||||
|
||||

|
||||
|
||||
\- Type in Linux like it's a Mac. \-
|
||||
\- Type in Linux & Windows like it's a Mac. \-
|
||||
|
||||
Seamless copy and paste with all apps and terminals. Also the only linux remapper that is aware of your cursor/caret status - meaning it avoids shortcut conflicts within an app versus wordwise shortcuts when a text field is in use.
|
||||
|
||||
@@ -14,9 +14,9 @@ Seamless copy and paste with all apps and terminals. Also the only linux remappe
|
||||
|
||||
Kinto works for standard Windows, Apple and Chromebook keyboards. The following however describes the dynamic rebinding based on a standard Windows keyboard. (Alt location is Cmd for Apple keyboards)
|
||||
|
||||
- Normal apps - Alt will be Ctrl, Win/Super will be Alt, Ctrl will be Win/Super
|
||||
- Normal apps - Alt → Ctrl, Win/Super → Alt, Ctrl → Win/Super
|
||||
|
||||
- Terminal apps - Alt will be Ctrl+Shift, Win/Super will be Alt, Ctrl will be Ctrl
|
||||
- Terminal apps - Alt → Ctrl+Shift, Win/Super → Alt, Ctrl → Ctrl
|
||||
|
||||
- Cursor/word-wise shortcut keys have been added to align with macOS keyboard shortcuts.
|
||||
|
||||
@@ -28,16 +28,26 @@ Kinto works for standard Windows, Apple and Chromebook keyboards. The following
|
||||
- IBus*
|
||||
- Fedora/RHEL/Manjaro/Arch/Debian/Ubuntu based distro 16.04+
|
||||
|
||||
If you need kintox11 recompiled for your distro please let me know and I will add a binary for your distro if my binary fails.
|
||||
|
||||
You can also attempt to compile kintox11.c on your system as well, but you will need to compile and install json-c first as its libraries will be required to compile and run the program.
|
||||
Binary is included and will be installed, but you can also compile kintox11.c on your system. You will need to compile and install json-c first as its libraries will be required to compile and run the program.
|
||||
|
||||
*IBus is needed to support wordwise during browser app usage as the keymap will need to change slightly depending if the cursor/caret is on screen waiting for input. Setup.py will set it but you can manually set it as well or check your current Input Method.
|
||||
|
||||
To confirm navigate to your "Language Support" and set "Keyboard input method system:" to IBus for full word-wise support with web browsers.
|
||||
On most distros you can confirm navigate to your "Language Support" and set "Keyboard input method system:" to IBus for full word-wise support with web browsers.
|
||||
|
||||
Wayland support is planned, but not ready yet.
|
||||
|
||||
## Kinto for Windows 10 Requirements
|
||||
|
||||
- WSL Ubuntu edition
|
||||
- Powershell - run as Administrator
|
||||
- Python3
|
||||
|
||||
Other programs that will be installed when you run ./setup.py
|
||||
- Chocolatey
|
||||
- Autohotkey
|
||||
|
||||
Does not have complete parity with the Linux edition, but it does work and can be built on and added to as needed. Modify ./windows/kinto.ahk if you want to add more WSL editions or other terminals.
|
||||
|
||||
## How to install
|
||||
|
||||
1. clone this repo
|
||||
@@ -63,6 +73,71 @@ To Uninstall Kinto
|
||||
./uninstall.sh
|
||||
```
|
||||
|
||||
## Other Notes Related to Install
|
||||
|
||||
**Manjaro with Gnome there are issues.**
|
||||
|
||||
Please see this ticket for more information.
|
||||
|
||||
https://github.com/rbreaves/kinto/issues/59
|
||||
|
||||
https://wiki.archlinux.org/index.php/IBus
|
||||
|
||||
**For other Arch based distros.**
|
||||
|
||||
Append the following and logoff and back on, but only after running setup.py to install all packages and the kinto service. Please report if there are any difficulties.
|
||||
nano ~/.bashrc
|
||||
```
|
||||
export GTK_IM_MODULE=xim
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT_IM_MODULE=xim
|
||||
```
|
||||
|
||||
## How to Upgrade Kinto
|
||||
|
||||
Simply bring down the latest in either the master branch or dev, but dev is sometimes in flux as new features are being developed. Then you can re-run the setup.py installer, it will stop the service and re-install Kinto.
|
||||
|
||||
Note: If you have made any custom changes to ~/.xkb or ~/.config/kinto then you will need to backup or rename those directories before running an update.
|
||||
|
||||
```
|
||||
git pull origin master
|
||||
./setup.py
|
||||
```
|
||||
|
||||
## How to Control Kinto
|
||||
|
||||
Under systemd this is how you control Kinto.
|
||||
|
||||
Status
|
||||
```
|
||||
systemctl --user status keyswap
|
||||
```
|
||||
|
||||
Stop (your keymap will return to normal)
|
||||
```
|
||||
systemctl --user stop keyswap
|
||||
```
|
||||
|
||||
Start
|
||||
```
|
||||
systemctl --user start keyswap
|
||||
```
|
||||
|
||||
Restart
|
||||
```
|
||||
systemctl --user restart keyswap
|
||||
```
|
||||
|
||||
Enable
|
||||
```
|
||||
systemctl --user enable keyswap
|
||||
```
|
||||
|
||||
Disable
|
||||
```
|
||||
systemctl --user disable keyswap
|
||||
```
|
||||
|
||||
## How to Add Setxkbmap Option inside Kinto
|
||||
|
||||
To summarize you'll need to pull the partial out of the symbols file the option resides in and then add that to the mac_gui file and lastly reference it in the keymap file(s) you want it in.
|
||||
@@ -300,7 +375,7 @@ You can also add additional Desktop Environment related tweaks to user_config.js
|
||||
"name":"term",
|
||||
"run":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"de":[2],
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ],
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty" ],
|
||||
"run_onInput":"",
|
||||
"run_offInput": "killall xbindkeys > /dev/null 2>&1",
|
||||
"symbols":"",
|
||||
@@ -354,40 +429,6 @@ You can also add additional Desktop Environment related tweaks to user_config.js
|
||||
}
|
||||
```
|
||||
|
||||
## How to Control Kinto
|
||||
|
||||
Under systemd this is how you control Kinto.
|
||||
|
||||
Status
|
||||
```
|
||||
systemctl --user status keyswap
|
||||
```
|
||||
|
||||
Stop (your keymap will return to normal)
|
||||
```
|
||||
systemctl --user stop keyswap
|
||||
```
|
||||
|
||||
Start
|
||||
```
|
||||
systemctl --user start keyswap
|
||||
```
|
||||
|
||||
Restart
|
||||
```
|
||||
systemctl --user restart keyswap
|
||||
```
|
||||
|
||||
Enable
|
||||
```
|
||||
systemctl --user enable keyswap
|
||||
```
|
||||
|
||||
Disable
|
||||
```
|
||||
systemctl --user disable keyswap
|
||||
```
|
||||
|
||||
## Learning macOS style hotkeys on Linux
|
||||
|
||||
You can use websites like https://www.shortcutfoo.com in Google Chrome while using the terminal style keymap, but Firefox is not compatible due to detecting "cmd" as keycode 224. Chrome detects Win/Super/Cmd as keycode 91 on all OS's.
|
||||
@@ -452,12 +493,27 @@ cd ~/.config/kinto
|
||||
./kintox11
|
||||
```
|
||||
|
||||
## Debug
|
||||
|
||||
If all else fails you can now run Kinto in debug mode as of 1.0.6-2. The output will become more verbose and I'd recommend running this directly after stopping the service.
|
||||
|
||||
```
|
||||
systemctl --user stop keyswap
|
||||
cd ~/.config/kinto
|
||||
./kintox11 --debug
|
||||
```
|
||||
|
||||
## Language Support
|
||||
I'd appreciate any help from people with non-US based keyboards, to help ensure that these keymaps and keyswap methods work in all or most languages.
|
||||
|
||||
If you would like to attempt adding additional custom keymaps for other languages then I strongly recommend reading Glen Whitney's post here.
|
||||
https://superuser.com/questions/385748/binding-superc-superv-to-copy-and-paste
|
||||
|
||||
## Notes about Windows 10
|
||||
Sharpkeys was used to create the layout/reg files to swap the Ctrl, Win and Alt keys. Sharpkeys was not required however because the reg keys were extracted. Autohotkey is used to manage keyswaps needed for terminal usage. Autohotkey is also used to add additional mac like keybinds for Sublime text and can be used for other apps as well.
|
||||
|
||||
Microsoft is working on a new Powertoy Keyboard Manager that could be used with an easier to use GUI interface, but this approach should be fully sufficient for a mac like experience and autohotkeys appears to be more than capable enough to handle complex rebinding of any or most mac like shortcuts.
|
||||
|
||||
## Contributing
|
||||
|
||||
I welcome any and all contributors who want to contribute something to this project.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{"defaultapps":[{
|
||||
"name":"term",
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ]
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty" ]
|
||||
}],
|
||||
"defaulttypes":["windows","mac","chromebook"],
|
||||
"defaults":[{
|
||||
@@ -9,9 +9,9 @@
|
||||
"type":"windows",
|
||||
"active": false,
|
||||
"description":"Standard Windows 104 Keyboards",
|
||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)",
|
||||
"gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)",
|
||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)"
|
||||
@@ -22,9 +22,9 @@
|
||||
"type":"mac",
|
||||
"active": false,
|
||||
"description":"Standard Mac Keyboards with Apple driver",
|
||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)",
|
||||
"gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)",
|
||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)",
|
||||
@@ -36,49 +36,49 @@
|
||||
"type":"mac",
|
||||
"active": true,
|
||||
"description":"Standard Mac Keyboards",
|
||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)",
|
||||
"gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)",
|
||||
"xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_apple)+mac_term(mac_global)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name":"Chromebook",
|
||||
"name":"Chromebook (xfce)",
|
||||
"type":"chromebook",
|
||||
"active": false,
|
||||
"description":"Standard Chromebook Keyboards",
|
||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||
"gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)",
|
||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name":"Chromebook - Windows",
|
||||
"name":"Chromebook (xfce) - Windows",
|
||||
"type":"chromebook",
|
||||
"active": false,
|
||||
"description":"Chromebook with Windows 104 Keyboard",
|
||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY; setxkbmap -device $usbid -option altwin:ctrl_alt_win",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||
"gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen; setxkbmap -device $usbid -option altwin:ctrl_alt_win",
|
||||
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"fallbackgui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)",
|
||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name":"Chromebook - Mac",
|
||||
"name":"Chromebook (xfce) - Mac",
|
||||
"type":"chromebook",
|
||||
"active": false,
|
||||
"description":"Chromebook with Mac Keyboard",
|
||||
"gui":"setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||
"gui":"setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)",
|
||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||
"xkb_types_term":"+mac_term(addmac_levels)"
|
||||
|
@@ -8,6 +8,7 @@ mkdir -p ~/.config/systemd/user
|
||||
mkdir -p ~/.config/autostart
|
||||
cp ./system-config/keyswap.service ~/.config/systemd/user/keyswap.service
|
||||
cp ./system-config/kinto.desktop ~/.config/autostart/kinto.desktop
|
||||
cp ./system-config/keyswap.timer ~/.config/systemd/user/keyswap.timer
|
||||
cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11
|
||||
cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh
|
||||
cp ./system-config/caret_status.sh ~/.config/kinto/caret_status.sh
|
||||
@@ -15,10 +16,11 @@ cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh
|
||||
cp ./system-config/.firefox-nw ~/.config/kinto/.firefox-nw
|
||||
sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service
|
||||
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/systemd/user/keyswap.service
|
||||
if [ "${#DISPLAY}" -gt 2 ]
|
||||
then
|
||||
sed -i "s/#Environment/Environment/g" ~/.config/systemd/user/keyswap.service
|
||||
fi
|
||||
# if [ "${#DISPLAY}" -gt 2 ]
|
||||
# then
|
||||
sed -i "s/#Environment/Environment/g" ~/.config/systemd/user/keyswap.service
|
||||
# fi
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable keyswap
|
||||
sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service
|
||||
systemctl --user enable keyswap.timer
|
||||
systemctl --user start keyswap
|
||||
|
Binary file not shown.
@@ -2,4 +2,4 @@ CFLAGS=-g $(shell pkg-config --cflags json-c xmu)
|
||||
LDFLAGS=-g $(shell pkg-config --libs json-c xmu)
|
||||
|
||||
all:
|
||||
$(CC) kintox11.c $(CFLAGS) $(LDFLAGS) -lm -o kintox11
|
||||
$(CC) kintox11.c $(CFLAGS) $(LDFLAGS) -lm -lpthread -o kintox11
|
||||
|
@@ -13,8 +13,11 @@
|
||||
// gcc -L/usr/local/lib/ kintox11.c -ljson-c -lXmu -lXt -lX11 -O2 -o kintox11
|
||||
//
|
||||
|
||||
#define _GNU_SOURCE 1
|
||||
#include <pthread.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <locale.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
@@ -25,52 +28,54 @@
|
||||
#include <sys/select.h>
|
||||
#include <math.h>
|
||||
#include <sys/time.h>
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#elif _POSIX_C_SOURCE >= 199309L
|
||||
#include <time.h> // for nanosleep
|
||||
#else
|
||||
#include <unistd.h> // for usleep
|
||||
#endif
|
||||
|
||||
const char *eventNames[34] = {"None","KeyPress","KeyRelease","ButtonPress","ButtonRelease","MotionNotify","EnterNotify","LeaveNotify","FocusIn","FocusOut","KeymapNotify","Expose","GraphicsExpose","NoExpose","VisibilityNotify","CreateNotify","DestroyNotify","UnmapNotify","MapNotify","MapRequest","ReparentNotify","ConfigureNotify","ConfigureRequest","ResizeRequest","CirculateNotify","CirculateRequest","PropertyNotify","SelectionClear","SelectionRequest","SelectionNotify","ColormapNotify","ClientMessage","MappingNotify"};
|
||||
|
||||
#define NUM_THREADS 2
|
||||
typedef struct threadArgs * ThreadArgs;
|
||||
struct threadArgs{
|
||||
char *run_onInput;
|
||||
char *run_offInput;
|
||||
};
|
||||
|
||||
long long timeInMilliseconds(void) {
|
||||
struct timeval tv;
|
||||
|
||||
gettimeofday(&tv,NULL);
|
||||
return (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000);
|
||||
}
|
||||
|
||||
static int wait_fd(int fd, double seconds)
|
||||
{
|
||||
struct timeval tv;
|
||||
fd_set in_fds;
|
||||
FD_ZERO(&in_fds);
|
||||
FD_SET(fd, &in_fds);
|
||||
tv.tv_sec = trunc(seconds);
|
||||
tv.tv_usec = (seconds - trunc(seconds))*1000000;
|
||||
return select(fd+1, &in_fds, 0, 0, &tv);
|
||||
|
||||
gettimeofday(&tv,NULL);
|
||||
return (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000);
|
||||
}
|
||||
|
||||
int XNextEventTimeout(Display *d, XEvent *e, double seconds, long long event_ts, int last_event, long long *event_ts_ptr, int *last_event_ptr)
|
||||
{
|
||||
if (XPending(d) || wait_fd(ConnectionNumber(d),seconds)) {
|
||||
while (1) {
|
||||
XNextEvent(d, e);
|
||||
bool debug;
|
||||
bool input_check = 0;
|
||||
long long int event_ts;
|
||||
int last_event;
|
||||
|
||||
long long int new_ts = timeInMilliseconds();
|
||||
Display* d;
|
||||
Window w;
|
||||
XEvent e;
|
||||
|
||||
// Make sure window dragging or resizing is not occuring
|
||||
if(!(e->type == 22 && (e->type == last_event) && timeInMilliseconds()-event_ts < 419)){
|
||||
*event_ts_ptr = new_ts;
|
||||
*last_event_ptr = e->type;
|
||||
break;
|
||||
}
|
||||
*event_ts_ptr = new_ts;
|
||||
*last_event_ptr = e->type;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
// cross-platform sleep function
|
||||
void sleep_ms(int milliseconds) {
|
||||
#ifdef WIN32
|
||||
Sleep(milliseconds);
|
||||
#elif _POSIX_C_SOURCE >= 199309L
|
||||
struct timespec ts;
|
||||
ts.tv_sec = milliseconds / 1000;
|
||||
ts.tv_nsec = (milliseconds % 1000) * 1000000;
|
||||
nanosleep(&ts, NULL);
|
||||
#else
|
||||
usleep(milliseconds * 1000);
|
||||
#endif
|
||||
}
|
||||
|
||||
Bool xerror = False;
|
||||
|
||||
char *trimwhitespace(char *str)
|
||||
{
|
||||
char *trimwhitespace(char *str){
|
||||
char *end;
|
||||
// Trim leading space
|
||||
while(isspace((unsigned char)*str)) str++;
|
||||
@@ -84,8 +89,7 @@ char *trimwhitespace(char *str)
|
||||
return str;
|
||||
}
|
||||
|
||||
int check_caret()
|
||||
{
|
||||
int check_caret(){
|
||||
int caretint;
|
||||
char * fpname;
|
||||
fpname = malloc(sizeof(char)*20);
|
||||
@@ -115,8 +119,85 @@ int check_caret()
|
||||
}
|
||||
}
|
||||
|
||||
int in_int(int a[],int size,int item)
|
||||
{
|
||||
void *inputToggle(void *argStruct) {
|
||||
ThreadArgs args = argStruct;
|
||||
|
||||
char * onInput;
|
||||
char * offInput;
|
||||
onInput = malloc(sizeof(char)*400);
|
||||
offInput = malloc(sizeof(char)*400);
|
||||
onInput = args->run_onInput;
|
||||
offInput = args->run_offInput;
|
||||
|
||||
Bool ran_onInput = 0;
|
||||
|
||||
while(input_check){
|
||||
if(check_caret() && ran_onInput == 0){
|
||||
if(debug == true){
|
||||
printf("run_onInput: %s\n",onInput);
|
||||
}
|
||||
system(onInput);
|
||||
ran_onInput = 1;
|
||||
}
|
||||
else if(!check_caret() && ran_onInput == 1){
|
||||
if(debug == true){
|
||||
printf("run_offInput: %s\n",offInput);
|
||||
}
|
||||
system(offInput);
|
||||
ran_onInput = 0;
|
||||
}
|
||||
sleep_ms(100);
|
||||
}
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
|
||||
void *nextPlease(void *threadid) {
|
||||
long tid;
|
||||
tid = (long)threadid;
|
||||
|
||||
// printf("Next Please Thread ID, %ld\n", tid);
|
||||
|
||||
// Reference http://www.rahul.net/kenton/xproto/xevents_errors.html
|
||||
// event type 17 - DestroyNotify
|
||||
// event type 18 - UnmapNotify
|
||||
// event type 22 - ConfigureNotify
|
||||
// Dismiss the following events by initiating another XNextEvent
|
||||
XNextEvent(d, &e);
|
||||
while(e.type != ConfigureNotify || (e.type == ConfigureNotify && last_event == ConfigureNotify && timeInMilliseconds()-event_ts < 419)){
|
||||
XNextEvent(d, &e);
|
||||
}
|
||||
// Unset input thread
|
||||
input_check = 0;
|
||||
last_event = e.type;
|
||||
|
||||
if(debug == true){
|
||||
printf(" event: %s %d\n",eventNames[e.type-1],e.type);
|
||||
printf(" duration: %lldms\n",timeInMilliseconds()-event_ts);
|
||||
}
|
||||
event_ts = timeInMilliseconds();
|
||||
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
|
||||
char * append(char * string1, char * string2){
|
||||
char * result = NULL;
|
||||
asprintf(&result, "%s,%s", string1, string2);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int wait_fd(int fd, double seconds){
|
||||
struct timeval tv;
|
||||
fd_set in_fds;
|
||||
FD_ZERO(&in_fds);
|
||||
FD_SET(fd, &in_fds);
|
||||
tv.tv_sec = trunc(seconds);
|
||||
tv.tv_usec = (seconds - trunc(seconds))*1000000;
|
||||
return select(fd+1, &in_fds, 0, 0, &tv);
|
||||
}
|
||||
|
||||
Bool xerror = False;
|
||||
|
||||
int in_int(int a[],int size,int item){
|
||||
int i,pos=-1;
|
||||
for(i=0;i< size;i++)
|
||||
{
|
||||
@@ -139,8 +220,7 @@ int in(const char **arr, int len, char *target) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int strcicmp(char const *a, char const *b)
|
||||
{
|
||||
int strcicmp(char const *a, char const *b){
|
||||
for (;; a++, b++) {
|
||||
int d = tolower((unsigned char)*a) - tolower((unsigned char)*b);
|
||||
if (d != 0 || !*a)
|
||||
@@ -175,15 +255,26 @@ int handle_error(Display* display, XErrorEvent* error){
|
||||
return 1;
|
||||
}
|
||||
|
||||
Window get_focus_window(Display* d){
|
||||
Window get_focus_window(Display* d, int etype, char const *eventName, char const *current_app, bool debug){
|
||||
Window w;
|
||||
int revert_to;
|
||||
XGetInputFocus(d, &w, &revert_to); // see man
|
||||
|
||||
if(debug == true){
|
||||
printf("\n get focus window\n");
|
||||
}
|
||||
|
||||
if(!(etype == DestroyNotify || etype == UnmapNotify)) {
|
||||
XGetInputFocus(d, &w, &revert_to); // see man
|
||||
if(debug == true){
|
||||
printf(" -%s: event: %d, window_id: %ld\n",current_app,etype,w);
|
||||
}
|
||||
}
|
||||
|
||||
if(xerror){
|
||||
printf("Error getting focused window\n");
|
||||
printf("*Error getting focused window, e.type: %d, current_app: %s\n",etype,current_app);
|
||||
exit(1);
|
||||
}else if(w == None){
|
||||
printf("no focus window\n");
|
||||
printf("*no focus window, e.type: %d, current_app: %s\n",etype,current_app);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -194,40 +285,68 @@ Window get_focus_window(Display* d){
|
||||
// a top window have the following specifications.
|
||||
// * the start window is contained the descendent windows.
|
||||
// * the parent window is the root window.
|
||||
Window get_top_window(Display* d, Window start){
|
||||
Window get_top_window(Display* d, Window start, int etype, char const *eventName, char const *current_app, bool debug){
|
||||
Window w = start;
|
||||
Window parent = start;
|
||||
Window root = None;
|
||||
Window *children;
|
||||
unsigned int nchildren;
|
||||
Status s;
|
||||
char * ws;
|
||||
char * wstr;
|
||||
ws = malloc(sizeof(char)*4096);
|
||||
wstr = malloc(sizeof(char)*100);
|
||||
// strcpy(wstr,"test,");
|
||||
|
||||
while (parent != root && parent != 0) {
|
||||
if(debug == true){
|
||||
printf("\n get top window\n");
|
||||
}
|
||||
// Checking for Destroy and Unmap Notify events here too
|
||||
// Sometimes they still get passed through and if so need
|
||||
// to be ignored or XQueryTree will cause a segmentation fault
|
||||
while (parent != root && parent != 0 && !(etype == DestroyNotify || etype == UnmapNotify)) {
|
||||
w = parent;
|
||||
|
||||
s = XQueryTree(d, w, &root, &parent, &children, &nchildren); // see man
|
||||
|
||||
sprintf(wstr, "%ld", w);
|
||||
if ((ws != NULL) && (ws[0] == '\0')) {
|
||||
strcpy(ws,wstr);
|
||||
}
|
||||
else{
|
||||
ws = append(ws, wstr);
|
||||
}
|
||||
|
||||
if (s)
|
||||
XFree(children);
|
||||
|
||||
if(xerror){
|
||||
printf("fail to get top window: %ld\n",w);
|
||||
exit(1);
|
||||
printf("*fail to get top window: %ld, e.type: %d, current_app: %s\n",w,etype,current_app);
|
||||
break;
|
||||
}
|
||||
|
||||
// printf(" get parent (window: %d)\n", (int)w);
|
||||
}
|
||||
|
||||
// printf("success (window: %d)\n", (int)w);
|
||||
if(debug == true){
|
||||
printf(" -%s: event: %d, window_id: %s\n",current_app,etype,ws);
|
||||
}
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
// search a named window (that has a WM_STATE prop)
|
||||
// on the descendent windows of the argment Window.
|
||||
Window get_named_window(Display* d, Window start){
|
||||
Window get_named_window(Display* d, Window start, int etype, char const *eventName, char const *current_app, bool debug){
|
||||
Window w;
|
||||
|
||||
if(debug == true){
|
||||
printf("\n get named window\n");
|
||||
}
|
||||
// printf("getting named window ... ");
|
||||
w = XmuClientWindow(d, start); // see man
|
||||
|
||||
if(debug == true){
|
||||
printf(" -%s: event: %d, window_id: %ld\n\n",current_app,etype,w);
|
||||
}
|
||||
// if(w == start)
|
||||
// printf("fail\n");
|
||||
// printf("success (window: %d)\n", (int) w);
|
||||
@@ -258,7 +377,17 @@ const char * str_window_class(Display* d, Window w, char *prior_app ){
|
||||
}
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int main(int argc, char *argv[]){
|
||||
|
||||
XInitThreads();
|
||||
|
||||
if(argc < 2){
|
||||
debug = false;
|
||||
}
|
||||
if(argc > 1 && (strcmp(argv[1], "-d") == 0 || strcmp(argv[1], "--debug") == 0 )){
|
||||
debug = true;
|
||||
printf("Running in debug mode\n");
|
||||
}
|
||||
|
||||
FILE *fp;
|
||||
char buffer[10240];
|
||||
@@ -397,8 +526,6 @@ int main(void){
|
||||
system(de_run_array[de_id_idx]);
|
||||
}
|
||||
|
||||
Display* d;
|
||||
Window w;
|
||||
char *name;
|
||||
|
||||
// for XmbTextPropertyToTextList
|
||||
@@ -430,18 +557,17 @@ int main(void){
|
||||
printf("Starting keyswap...\n");
|
||||
|
||||
// get active window
|
||||
w = get_focus_window(d);
|
||||
w = get_top_window(d, w);
|
||||
w = get_named_window(d, w);
|
||||
w = get_focus_window(d, 0, eventNames[0], current_app, debug);
|
||||
w = get_top_window(d, w, 0, eventNames[0], current_app, debug);
|
||||
w = get_named_window(d, w, 0, eventNames[0], current_app, debug);
|
||||
|
||||
// XFetchName(d, w, &name);
|
||||
// printf("window:%#x name:%s\n", w, name);
|
||||
printf("First window name: %s \n",str_window_class(d, w,prior_app));
|
||||
printf("First window name: %s \n\n",str_window_class(d, w,prior_app));
|
||||
|
||||
int breakouter;
|
||||
int last_event=0;
|
||||
Bool ran_onInput = 0;
|
||||
long long int event_ts = timeInMilliseconds();
|
||||
last_event=0;
|
||||
event_ts = timeInMilliseconds();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -480,13 +606,21 @@ int main(void){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(strcicmp(prior_category, current_category) != 0){
|
||||
// printf("prior: %s, current: %s\n",prior_category,current_category);
|
||||
// printf("%d,%d,%d,%d\n",strcicmp(prior_category, "gui"),strcicmp(current_category, "firefox"),strcicmp(current_category, "gui"),strcicmp(prior_category, "firefox"));
|
||||
// printf("%d,%d\n",(strcicmp(prior_category, "gui") != 0 && strcicmp(prior_category, "firefox") != 0),(strcicmp(current_category, "gui") != 0 && strcicmp(current_category, "firefox") != 0));
|
||||
printf("%s: %s\n",current_category,current_app);
|
||||
// printf("run: %s\n",run_array[category_idx]);
|
||||
system(run_array[category_idx]);
|
||||
// Make sure we're not switching between 2 GUI keymaps
|
||||
// Firefox & Standard GUI apps
|
||||
// strcicmp returns 0 for matches, <>0 for non-match
|
||||
if((strcicmp(prior_category, "gui") != 0 && strcicmp(prior_category, "firefox") != 0) || (strcicmp(current_category, "gui") != 0 && strcicmp(current_category, "firefox") != 0)){
|
||||
if(debug == true){
|
||||
printf("run: %s\n",run_array[category_idx]);
|
||||
}
|
||||
system(run_array[category_idx]);
|
||||
}
|
||||
strcpy(run_normal,run_array[category_idx]);
|
||||
ran_onInput = 0;
|
||||
strcpy(run_onInput,run_oninput_array[category_idx]);
|
||||
strcpy(run_offInput,run_offinput_array[category_idx]);
|
||||
system(run_offInput);
|
||||
@@ -494,11 +628,15 @@ int main(void){
|
||||
if(config_de_array[category_idx][r] != -1){
|
||||
int de_id_idx = in_int(de_id_array, de_len, config_de_array[category_idx][r]);
|
||||
if(strcicmp(current_category, "term") == 0){
|
||||
// printf("Running de term command: %s\n",de_runterm_array[de_id_idx]);
|
||||
if(debug == true){
|
||||
printf("Running de term command: %s\n",de_runterm_array[de_id_idx]);
|
||||
}
|
||||
system(de_runterm_array[de_id_idx]);
|
||||
}
|
||||
else{
|
||||
// printf("Running de gui command: %s\n",de_rungui_array[de_id_idx]);
|
||||
if(debug == true){
|
||||
printf("Running de gui command: %s\n",de_rungui_array[de_id_idx]);
|
||||
}
|
||||
system(de_rungui_array[de_id_idx]);
|
||||
}
|
||||
}
|
||||
@@ -514,40 +652,39 @@ int main(void){
|
||||
strcpy(prior_app,current_app);
|
||||
strcpy(prior_category,current_category);
|
||||
|
||||
// printf("run_onInput: %ld\n",strlen(run_onInput));
|
||||
XEvent e;
|
||||
if(strlen(run_onInput) > 0){
|
||||
while(XNextEventTimeout(d, &e, .5, event_ts, last_event, &event_ts, &last_event)){
|
||||
if(check_caret() && ran_onInput == 0){
|
||||
// printf("run_onInput: %s\n",run_onInput);
|
||||
system(run_onInput);
|
||||
ran_onInput = 1;
|
||||
}
|
||||
else if(!check_caret() && ran_onInput == 1){
|
||||
// printf("run_offInput: %s\n",run_offInput);
|
||||
system(run_offInput);
|
||||
ran_onInput = 0;
|
||||
}
|
||||
}
|
||||
input_check = 1;
|
||||
}
|
||||
else{
|
||||
while (1) {
|
||||
XNextEvent(d, &e);
|
||||
// Make sure window dragging or resizing is not occuring
|
||||
if(!(e.type == 22 && (e.type == last_event) && timeInMilliseconds()-event_ts < 300)){
|
||||
// printf("%d == %d\n",e.type, last_event);
|
||||
// printf("Timestamp: %lld\n",timeInMilliseconds()-event_ts);
|
||||
event_ts = timeInMilliseconds();
|
||||
last_event = e.type;
|
||||
break;
|
||||
}
|
||||
event_ts = timeInMilliseconds();
|
||||
last_event = e.type;
|
||||
}
|
||||
input_check = 0;
|
||||
}
|
||||
|
||||
w = get_focus_window(d);
|
||||
w = get_top_window(d, w);
|
||||
w = get_named_window(d, w);
|
||||
pthread_t threads[NUM_THREADS];
|
||||
int rc;
|
||||
int i;
|
||||
ThreadArgs args = (ThreadArgs)malloc(sizeof(struct threadArgs));
|
||||
args->run_onInput = run_onInput;
|
||||
args->run_offInput = run_offInput;
|
||||
for( i = 0; i < NUM_THREADS; i++ ) {
|
||||
|
||||
if(i==0){
|
||||
rc = pthread_create(&threads[i], NULL, inputToggle, args);
|
||||
}
|
||||
else{
|
||||
rc = pthread_create(&threads[i], NULL, nextPlease, (void *)&i);
|
||||
}
|
||||
if (rc) {
|
||||
printf("Error:unable to create thread, %d\n", rc);
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
// wait for threads to close before continuing
|
||||
for (int i = 0; i < NUM_THREADS; i++) {
|
||||
pthread_join(threads[i], NULL);
|
||||
}
|
||||
|
||||
w = get_focus_window(d, e.type, eventNames[e.type-1], current_app, debug);
|
||||
w = get_top_window(d, w, e.type, eventNames[e.type-1], current_app, debug);
|
||||
w = get_named_window(d, w, e.type, eventNames[e.type-1], current_app, debug);
|
||||
}
|
||||
}
|
75
references/shortcuts
Normal file
75
references/shortcuts
Normal file
@@ -0,0 +1,75 @@
|
||||
# GalliumOS Notes
|
||||
|
||||
xfconf-query -c xfce4-keyboard-shortcuts -lv | grep "show_desktop_key\|cycle_windows_key\|cycle_reverse_windows_key\|close_window_key\|maximize_window_key\|xfce4-popup-whiskermenu\|move_window_next_workspace_key\|move_window_prev_workspace_key\|hide" | grep -v "default\|<Alt>m"
|
||||
|
||||
# Show Desktop
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>d" --create --type string --set "show_desktop_key"
|
||||
|
||||
# Undo show desktop
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>d" --reset
|
||||
|
||||
# GUI Alt Tab - Window Switching
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt><Shift>Tab" --set "cycle_reverse_windows_key"
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt>Tab" --set "cycle_windows_key"
|
||||
|
||||
# Term Alt Tab - Window Switching
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt><Shift>Tab" --set "cycle_windows_key"
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt>Tab" --set "cycle_reverse_windows_key"
|
||||
|
||||
# Hide/minimize Window
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>h" --create --type string --set "hide_window_key"
|
||||
|
||||
# Spotlight
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Primary><Shift>space" --create --type string --set "xfce4-popup-whiskermenu"
|
||||
|
||||
# Change workspace to left
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>Left" --create --type string --set "move_window_prev_workspace_key"
|
||||
|
||||
# Change workspace to right
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>Right" --create --type string --set "move_window_next_workspace_key"
|
||||
|
||||
# PopOS
|
||||
|
||||
# Close App Alt+F4 (Super+w)
|
||||
gsettings set org.gnome.desktop.wm.keybindings close "['<Alt>F4','<Super>w']"
|
||||
# Undo
|
||||
gsettings set org.gnome.desktop.wm.keybindings close "['<Super>w']"
|
||||
|
||||
# Maximize Window
|
||||
gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['<Alt>F10','<Primary><Super>Up']"
|
||||
# Undo
|
||||
gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['<Primary><Super>Up']"
|
||||
|
||||
# Ubuntu 19.10
|
||||
# Change Workspace
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['<Primary><Alt>Left','<Super>Left']"
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['<Primary><Alt>Right','<Super>Right']"
|
||||
|
||||
# ElementaryOS
|
||||
# Show Desktop
|
||||
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d','<Super>Down']"
|
||||
# Maximize Window
|
||||
gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['<Alt>F10','<Super>Up']"
|
||||
# Spotlight
|
||||
gsettings set org.gnome.desktop.wm.keybindings panel-main-menu "['<Control><Shift>Space','<Super>Space']"
|
||||
|
||||
# Fedora 31
|
||||
# Show Desktop
|
||||
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']"
|
||||
# Change Workspace
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['<Primary><Alt>Left','<Super>Left']"
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['<Primary><Alt>Right','<Super>Right']"
|
||||
|
||||
# Manjaro/Arch KDE
|
||||
# Maximize
|
||||
kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \
|
||||
--key "Maximize Window" "Alt+F10,Meta+PgUp,Maximize Window"
|
||||
# Minimize
|
||||
kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \
|
||||
--key "Minimize Window" "Meta+h,Meta+PgDown,Minimize Window"
|
||||
# Switch Desktops
|
||||
kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \
|
||||
--key "Switch to Next Desktop" "Meta+Right,Meta+Right,Switch to Next Desktop"
|
||||
kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \
|
||||
--key "Switch to Previous Desktop" "Meta+Left,Meta+Left,Switch to Previous Desktop"
|
||||
kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 &
|
1411
references/symbol_names.txt
Normal file
1411
references/symbol_names.txt
Normal file
File diff suppressed because it is too large
Load Diff
185
setup.py
185
setup.py
@@ -15,6 +15,8 @@ def cmdline(command):
|
||||
)
|
||||
return process.communicate()[0]
|
||||
|
||||
dename = cmdline("./system-config/dename.sh").replace('"','').strip().split(" ")[0].lower()
|
||||
|
||||
def requirements(pkgm):
|
||||
print(bcolors.CYELLOW + "You need to install some packages, " +run_pkg+ ", for Kinto to fully remap browsers during input focus.\n" + bcolors.ENDC)
|
||||
print("sudo " + pkgm + " " + run_pkg + "\n")
|
||||
@@ -36,12 +38,150 @@ def install_ibus():
|
||||
input("IBus has been set as the default Input Method.\nPress any key to exit and re-run after logoff & logon...")
|
||||
sys.exit()
|
||||
|
||||
def setShortcuts():
|
||||
distro = cmdline("awk -F= '$1==\"NAME\" { print $2 ;}' /etc/os-release").replace('"','').strip().split(" ")[0]
|
||||
distroVersion = cmdline("awk -F= '$1==\"VERSION_ID\" { print $2 ;}' /etc/os-release").replace('"','').strip()
|
||||
|
||||
print("\nIf Kinto is already running it will be stopped...")
|
||||
print("If you cancel the installer you can re-run Kinto via\n systemctl --user start keyswap")
|
||||
|
||||
cmdline("systemctl --user stop keyswap")
|
||||
print("\nDetected " + distro + " " + distroVersion.strip() + " DE: " + dename + "\n")
|
||||
addhotkeys = yn_choice("\nDo you want to apply system level shortcuts?")
|
||||
if(addhotkeys):
|
||||
distro = distro.lower()
|
||||
if dename == "gnome":
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['<Primary>F13','<Primary><Shift>F13','<Alt>Tab']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['<Primary>F14','<Primary><Shift>F14','<Alt><Shift>Tab']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['<Super>h','<Alt>F9']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Primary><Shift>Space','<Primary>Space']\"")
|
||||
if distro == "ubuntu" and dename == "gnome":
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['<Super>Up','<Super>Left']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['<Super>Down','<Super>Right']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['<Super>h','<Alt>F9']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Primary><Shift>Space','<Primary>Space']\"")
|
||||
elif distro == "pop!_os" and dename == "gnome":
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings close \"['<Alt>F4','<Super>w']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings toggle-maximized \"['<Alt>F10','<Primary><Super>Up']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['<Super>h','<Alt>F9']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Primary><Shift>Space','<Primary>Space']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['<Super>Up','<Super>Left']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['<Super>Down','<Super>Right']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']")
|
||||
elif distro == "elementary" and dename == "gnome":
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['<Primary>F13','<Primary><Shift>F13','<Alt>Tab']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['<Primary>F14','<Primary><Shift>F14','<Alt><Shift>Tab']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings show-desktop \"['<Super>d','<Super>Down']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings toggle-maximized \"['<Alt>F10','<Super>Up']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Control><Shift>Space','<Super>Space']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['<Super>h','<Alt>F9']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Super>Space','<Primary>Space']\"")
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Elementary cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term')
|
||||
cmdline('perl -pi -e "s/(\w.*)(\/\/ Default cmdtab)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_term')
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Elementary cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_gui')
|
||||
cmdline('perl -pi -e "s/(\w.*)(\/\/ Default cmdtab)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_gui')
|
||||
elif distro == "galliumos" and dename == "xfce":
|
||||
print("Applying GalliumOS (xfce) shortcuts...")
|
||||
# Reset Show desktop
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>d" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>d" --create --type string --set "show_desktop_key"')
|
||||
# Reset App Cycle
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt>Tab" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Alt><Shift>Tab" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary>backslash" --create --type string --set "cycle_windows_key"')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Shift>backslash" --create --type string --set "cycle_reverse_windows_key"')
|
||||
# cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>h" --create --type string --set "hide_window_key"')
|
||||
# Don't need to undo other maps for menu
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Primary>space" --create --type string --set "xfce4-popup-whiskermenu"')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Primary><Shift>space" --create --type string --set "xfce4-popup-whiskermenu"')
|
||||
# Reset move to desktop shortcuts
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Home" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>End" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Left" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Right" --reset')
|
||||
os.system('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Left" --create --type string --set "move_window_prev_workspace_key"')
|
||||
os.system('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Right" --create --type string --set "move_window_next_workspace_key"')
|
||||
# Reset Change Workspace
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Left" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Right" --reset')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>Left" --create --type string --set "left_workspace_key"')
|
||||
cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Super>Right" --create --type string --set "right_workspace_key"')
|
||||
print("\nYou may need to run these commands manually to make sure they are set, if you want to move windows between desktops.\n")
|
||||
print(' xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Left" --create --type string --set "move_window_prev_workspace_key"')
|
||||
print(' xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/<Primary><Alt>Right" --create --type string --set "move_window_next_workspace_key"\n')
|
||||
elif distro == "fedora" and dename == "gnome":
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings show-desktop \"['<Super>d']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['<Super>Up','<Super>Left']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['<Super>Down','<Super>Right']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['<Super>h','<Alt>F9']\"")
|
||||
cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['<Primary><Shift>Space','<Primary>Space']\"")
|
||||
cmdline("gsettings set org.gnome.mutter.keybindings toggle-tiled-right \"['<Super><Alt>Right']\"")
|
||||
cmdline("gsettings set org.gnome.mutter.keybindings toggle-tiled-left \"['<Super><Alt>Left']\"")
|
||||
# org.gnome.mutter.keybindings toggle-tiled-right ['<Super>Right']
|
||||
# org.gnome.mutter.keybindings toggle-tiled-left ['<Super>Left']
|
||||
elif distro == "manjaro linux" and dename == "kde":
|
||||
# cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "krunner.desktop" --key "_launch","Alt+Space\tAlt+F2\tSearch,Alt+Space\tAlt+F2\tSearch,KRunner"')
|
||||
# Remove Alt+F3 Operations Menu - Sublimetext Select-All
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Window Operations Menu","none,Alt+F3,Window Operations Menu"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows" "Ctrl+F13,Alt+Tab,Walk Through Windows"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows (Reverse)" "Ctrl+Shift+F14,Alt+Shift+Backtab,Walk Through Windows (Reverse)"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Window Maximize" "Meta+Ctrl+F,Meta+PgUp,Maximize Window"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Minimize Window" "Meta+h,Meta+PgDown,Minimize Window"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Switch to Next Desktop" "Meta+Right,Meta+Right,Switch to Next Desktop"')
|
||||
cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Switch to Previous Desktop" "Meta+Left,Meta+Left,Switch to Previous Desktop"')
|
||||
cmdline('kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 &')
|
||||
else:
|
||||
print('distro: ' + distro + ' de: ' + dename)
|
||||
print("A supported OS and DE was not found, you may not have full system level shortcuts installed.")
|
||||
|
||||
def windows_setup():
|
||||
keymaps = ["Apple keyboard standard", "Apple keyboard w/ Caps lock as Esc", "Windows keyboard standard", "Windows keyboard w/ Caps lock as Esc","Uninstall"]
|
||||
for index, item in enumerate(keymaps):
|
||||
print(" %i. %s" % (index+1, item.capitalize()))
|
||||
default = 0
|
||||
while not int(default) in range(1,len(keymaps)+1):
|
||||
default = int(input("\nPlease enter your desired keymap (1 - " + str(len(keymaps)) + ") : "))
|
||||
print("")
|
||||
path= cmdline('echo %cd%')[:-1]
|
||||
if default == 1:
|
||||
os.system("regedit " + path + "\\windows\\macbook_winctrl_swap.reg")
|
||||
elif default == 2:
|
||||
os.system("regedit " + path + "\\windows\\macbook_winctrl_capsesc_swap.reg")
|
||||
elif default == 3:
|
||||
os.system("regedit " + path + "\\windows\\standard_ctrlalt_swap.reg")
|
||||
elif default == 4:
|
||||
os.system("regedit " + path + "\\windows\\standard_ctrlalt_capsesc_swap.reg")
|
||||
elif default == 5:
|
||||
os.system("regedit " + path + "\\windows\\remove_keyswap.reg")
|
||||
if default > 0 and default < 5:
|
||||
print("Will now install chocolatey and autohotkey with elevated privileges...")
|
||||
print("This install will fail if you are not running with elevated privileges")
|
||||
os.system('powershell -executionpolicy bypass ".\\windows\\autohotkey.ps1"')
|
||||
print("\nWill now install Ubuntu Terminal Theme as default...")
|
||||
os.system("regedit " + path + "\\windows\\theme_ubuntu.reg")
|
||||
print("Copying autohotkey combinations for Terminals & Editors...")
|
||||
os.system("copy /Y " + path + "\\windows\\kinto.ahk \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\"")
|
||||
print("\nPlease log off and back on for changes to take full effect.")
|
||||
print("If using WSL then please remember to right click on title bar -> Properties -> Edit Options -> Use Ctrl+Shift+C/V as Copy/Paste and enable it.")
|
||||
else:
|
||||
os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\"")
|
||||
|
||||
# check_x11 = cmdline("env | grep -i x11").strip()
|
||||
check_x11 = cmdline("env | grep -i x11 || loginctl show-session \"$XDG_SESSION_ID\" -p Type | awk -F= '{print $2}'").strip()
|
||||
check_x11 = cmdline("(env | grep -i x11 || loginctl show-session \"$XDG_SESSION_ID\" -p Type) | awk -F= '{print $2}'").strip()
|
||||
|
||||
if len(check_x11) == 0:
|
||||
print("You are not using x11, please logout and back in using x11/Xorg")
|
||||
sys.exit()
|
||||
if os.name != 'nt':
|
||||
print("You are not using x11, please logout and back in using x11/Xorg")
|
||||
sys.exit()
|
||||
else:
|
||||
print("You are detected as running Windows.")
|
||||
windows_setup()
|
||||
sys.exit()
|
||||
|
||||
check_xbind = cmdline("which xbindkeys 2>/dev/null").strip()
|
||||
check_xdotool = cmdline("which xdotool 2>/dev/null").strip()
|
||||
@@ -54,6 +194,7 @@ if len(pkgm) == 0:
|
||||
if len(pkgm) > 0:
|
||||
pkgm += " check-update;sudo dnf install -y "
|
||||
else:
|
||||
pkgm += " install -y "
|
||||
pkgm += " update; sudo apt-get install -y "
|
||||
|
||||
if len(pkgm) == 0:
|
||||
@@ -86,11 +227,9 @@ if len(check_ibus) == 0:
|
||||
if runpkg != 0:
|
||||
requirements(pkgm)
|
||||
|
||||
if os.path.exists(homedir + '/.config/ibus/bus') and cmdline("ls ~/.config/ibus/bus -1rt") == "":
|
||||
if not os.path.exists(homedir + '/.config/ibus/bus') and cmdline("ls ~/.config/ibus/bus -1rt") == "":
|
||||
install_ibus()
|
||||
|
||||
|
||||
|
||||
try:
|
||||
f = open("defaults.json")
|
||||
except IOError:
|
||||
@@ -179,8 +318,8 @@ if os.path.isdir(homedir + "/.xkb/keymap") == False:
|
||||
time.sleep(0.5)
|
||||
os.system('setxkbmap -option')
|
||||
os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui')
|
||||
os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.nw')
|
||||
os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.chrome')
|
||||
os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.browsers')
|
||||
os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.term')
|
||||
time.sleep(0.5)
|
||||
|
||||
@@ -192,17 +331,37 @@ cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1][
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term')
|
||||
cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term')
|
||||
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw')
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)","+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome')
|
||||
cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.nw')
|
||||
# Set chrome file accordingly for chromebooks or normal
|
||||
if default != 3:
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)","+mac_gui(mac_levelssym)+mac_gui(mac_browsers)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers')
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)","+mac_gui(mac_browsers)+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome')
|
||||
else:
|
||||
# Fix multicursor in mac_gui
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Chromebook multicursor)/\$2\$3/g" ~/.xkb/symbols/mac_gui')
|
||||
cmdline('perl -pi -e "s/(\w.*)(\/\/ Default multicursor)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_gui')
|
||||
# Fix browsers
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)","+mac_gui(mac_levelssym)+mac_gui(mac_browsers_chromebook)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers')
|
||||
cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)","+mac_gui(mac_browsers_chromebook)+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome')
|
||||
if dename == "kde":
|
||||
# Fix maximize shortcut
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ KDE maximize)/\$2\$3/g" ~/.xkb/symbols/mac_gui')
|
||||
# term app switching
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ KDE cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term')
|
||||
else:
|
||||
# Fix maximize shortcut
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Default maximize)/\$2\$3/g" ~/.xkb/symbols/mac_gui')
|
||||
# term app switching
|
||||
cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Default cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term')
|
||||
cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers')
|
||||
cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome')
|
||||
|
||||
setShortcuts()
|
||||
|
||||
user_file = homedir + '/.config/kinto/user_config.json'
|
||||
with open(user_file, 'r') as f:
|
||||
user_config = json.load(f)
|
||||
|
||||
onetime = yn_choice("One time initialization tweaks are available. Would you like to view them?")
|
||||
onetime = yn_choice("\nOne time initialization tweaks are available. Would you like to view them?")
|
||||
print("")
|
||||
if(onetime):
|
||||
intents = [obj for obj in user_config['de'] if(obj['intent'] == "init")]
|
||||
@@ -215,7 +374,7 @@ if(onetime):
|
||||
print(bcolors.CYELLOW + "Please enter your init tweak(s) (eg 1 or 1 2 3 - leave blank to skip): " + bcolors.ENDC)
|
||||
defaultinit = [int(i) for i in input().split()]
|
||||
if len(defaultinit) != 0:
|
||||
user_config['init'] = defaultinit
|
||||
user_config['init'] = [intents[defaultinit[0]-1]['id']]
|
||||
|
||||
print("\nDynamic shortcut tweaks\n")
|
||||
|
||||
@@ -249,7 +408,7 @@ if len(defaultde) != 0:
|
||||
|
||||
user_config['config'][0]['run'] = keyboardconfigs[defaultkb-1]['gui']
|
||||
user_config['config'][1]['run'] = keyboardconfigs[defaultkb-1]['term']
|
||||
user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui']
|
||||
user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.browsers")
|
||||
user_config['config'][3]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.chrome")
|
||||
|
||||
os.remove(user_file)
|
||||
|
@@ -4,3 +4,6 @@ setxkbmap -option
|
||||
# force command to run silently and report true
|
||||
killall xbindkeys > /dev/null 2>&1 || :
|
||||
# rm /tmp/kinto/caret
|
||||
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-applications "['<Alt>Tab']"
|
||||
gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "['<Shift><Alt>Tab']"
|
||||
|
167
system-config/dename.sh
Executable file
167
system-config/dename.sh
Executable file
@@ -0,0 +1,167 @@
|
||||
#!/bin/bash
|
||||
|
||||
function detect_gnome()
|
||||
{
|
||||
ps -e | grep -E '^.* gnome-session' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
VERSION=`gnome-session --version | awk '{print $2}'`
|
||||
DESKTOP="gnome"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_kde4()
|
||||
{
|
||||
ps -e | grep -E '^.* kded4$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
else
|
||||
VERSION=`kded4 --version | grep -m 1 'KDE' | awk -F ':' '{print $2}' | awk '{print $1}'`
|
||||
DESKTOP="KDE"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function detect_kde()
|
||||
{
|
||||
ps -e | grep -E '^.* kded5$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
else
|
||||
VERSION=`kded5 --version | grep -m 1 'KDE' | awk -F ':' '{print $2}' | awk '{print $1}'`
|
||||
DESKTOP="KDE"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function detect_unity()
|
||||
{
|
||||
ps -e | grep -E 'unity-panel' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
VERSION=`unity --version | awk '{print $2}'`
|
||||
DESKTOP="unity"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_xfce()
|
||||
{
|
||||
ps -e | grep -E '^.* xfce4-session$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
VERSION=`xfce4-session --version | grep xfce4-session | awk '{print $2}'`
|
||||
DESKTOP="xfce"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_cinnamon()
|
||||
{
|
||||
ps -e | grep -E '^.* cinnamon$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
VERSION=`cinnamon --version | awk '{print $2}'`
|
||||
DESKTOP="cinnamon"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_mate()
|
||||
{
|
||||
ps -e | grep -E '^.* mate-panel$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
VERSION=`mate-about --version | awk '{print $4}'`
|
||||
DESKTOP="mate"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_lxde()
|
||||
{
|
||||
ps -e | grep -E '^.* lxsession$' > /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# We can detect LXDE version only thru package manager
|
||||
which apt-cache > /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
which yum > /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
VERSION='unknown'
|
||||
else
|
||||
# For Fedora
|
||||
VERSION=`yum list lxde-common | grep lxde-common | awk '{print $2}' | awk -F '-' '{print $1}'`
|
||||
fi
|
||||
else
|
||||
# For Lubuntu and Knoppix
|
||||
VERSION=`apt-cache show lxde-common /| grep 'Version:' | awk '{print $2}' | awk -F '-' '{print $1}'`
|
||||
fi
|
||||
DESKTOP="lxde"
|
||||
return 1
|
||||
}
|
||||
|
||||
function detect_sugar()
|
||||
{
|
||||
if [ "$DESKTOP_SESSION" == "sugar" ];
|
||||
then
|
||||
VERSION=`python -c "from jarabe import config; print config.version"`
|
||||
DESKTOP="sugar"
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
DESKTOP="unknown"
|
||||
if detect_unity;
|
||||
then
|
||||
if detect_kde;
|
||||
then
|
||||
if detect_kde4;
|
||||
then
|
||||
if detect_gnome;
|
||||
then
|
||||
if detect_xfce;
|
||||
then
|
||||
if detect_cinnamon;
|
||||
then
|
||||
if detect_mate;
|
||||
then
|
||||
if detect_lxde;
|
||||
then
|
||||
detect_sugar
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$1" == '-v' ];
|
||||
then
|
||||
echo $VERSION
|
||||
else
|
||||
if [ "$1" == '-n' ];
|
||||
then
|
||||
echo $DESKTOP
|
||||
else
|
||||
echo $DESKTOP $VERSION
|
||||
fi
|
||||
fi
|
11
system-config/keyswap.timer
Normal file
11
system-config/keyswap.timer
Normal file
@@ -0,0 +1,11 @@
|
||||
# keyswap.timer
|
||||
[Unit]
|
||||
Description=Runs the keyswap.service 5 seconds after boot up
|
||||
|
||||
[Timer]
|
||||
#OnBootSec=5s
|
||||
OnActiveSec=5s
|
||||
Unit=keyswap.service
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
@@ -2,7 +2,7 @@
|
||||
Name=Kinto
|
||||
GenericName=Kinto
|
||||
Comment=Make Linux Type Like it's a Mac
|
||||
Exec=/usr/bin/systemctl --user start keyswap
|
||||
Exec=/bin/sleep 5 /usr/bin/systemctl --user start keyswap
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-GNOME-Autostart-enabled=true
|
@@ -1,4 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
./caret_status.sh &
|
||||
./kintox11
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
# No arguments
|
||||
./kintox11
|
||||
else
|
||||
./caret_status.sh &
|
||||
./kintox11
|
||||
fi
|
||||
|
10
uninstall.sh
10
uninstall.sh
@@ -1,9 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
systemctl --user stop keyswap
|
||||
systemctl --user stop keyswap 2>/dev/null
|
||||
systemctl --user disable keyswap
|
||||
systemctl --user stop keyswap.timer 2>/dev/null
|
||||
systemctl --user disable keyswap.timer
|
||||
rm ~/.config/systemd/user/keyswap.service
|
||||
rm ~/.config/systemd/user/keyswap.timer
|
||||
rm -rf ~/.config/autostart/kinto.desktop
|
||||
rm -rf ~/.config/kinto
|
||||
rm -rf ~/.xkb
|
||||
|
||||
sed -i '/xkb/d' ~/.Xsession
|
||||
systemctl daemon-reload
|
||||
sed -i '/xkb/d' ~/.Xsession 2>/dev/null
|
@@ -16,7 +16,7 @@
|
||||
"symbols":"",
|
||||
"types":"",
|
||||
"de":[],
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm" ]
|
||||
"appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty" ]
|
||||
},
|
||||
{
|
||||
"name": "firefox",
|
||||
|
12
windows/autohotkey.ps1
Normal file
12
windows/autohotkey.ps1
Normal file
@@ -0,0 +1,12 @@
|
||||
$testchoco = powershell choco -v
|
||||
if(-not($testchoco)){
|
||||
Write-Output "Seems Chocolatey is not installed, installing now"
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||
}
|
||||
else{
|
||||
Write-Output "Chocolatey Version $testchoco is already installed"
|
||||
}
|
||||
|
||||
if(-not(test-path "C:\Program Files\AutoHotkey\AutoHotkey.exe")){
|
||||
choco install autohotkey.install
|
||||
}
|
128
windows/kinto.ahk
Normal file
128
windows/kinto.ahk
Normal file
@@ -0,0 +1,128 @@
|
||||
GroupAdd, terminals, ahk_exe ubuntu.exe
|
||||
GroupAdd, terminals, ahk_exe ConEmu.exe
|
||||
GroupAdd, terminals, ahk_exe ConEmu64.exe
|
||||
GroupAdd, terminals, ahk_exe powershell.exe
|
||||
GroupAdd, terminals, ahk_exe WindowsTerminal.exe
|
||||
GroupAdd, terminals, ahk_exe Hyper.exe
|
||||
|
||||
GroupAdd, posix, ahk_exe ubuntu.exe
|
||||
GroupAdd, posix, ahk_exe ConEmu.exe
|
||||
GroupAdd, posix, ahk_exe ConEmu64.exe
|
||||
GroupAdd, posix, ahk_exe mintty.exe
|
||||
|
||||
GroupAdd, ConEmu, ahk_exe ConEmu.exe
|
||||
GroupAdd, ConEmu, ahk_exe ConEmu64.exe
|
||||
GroupAdd, ConEmu, ahk_exe WindowsTerminal.exe
|
||||
|
||||
GroupAdd, editors, ahk_exe sublime_text.exe
|
||||
|
||||
; Cmd+Space Alternative
|
||||
LWin & vk07::return
|
||||
LWin::return
|
||||
RWin & vk07::return
|
||||
RWin::return
|
||||
^Space::Send ^{Esc}
|
||||
; ^Space::run AppName
|
||||
|
||||
; Cmd Tab For App Switching
|
||||
LCtrl & Tab::AltTab
|
||||
RCtrl & Tab::AltTab
|
||||
; Ctrl Tab for In-App Tab Switching
|
||||
LWin & Tab::Send ^{Tab}
|
||||
RWin & Tab::Send ^{Tab}
|
||||
|
||||
; Close Apps
|
||||
^q::Send !{F4}
|
||||
|
||||
; wordwise support
|
||||
$^Left::Send {Home}
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
^Down::Send ^{End}
|
||||
^+Down::Send ^+{End}
|
||||
^Backspace::Send +{Home}{Delete}
|
||||
!Backspace::Send ^{Backspace}
|
||||
!Left::Send ^{Left}
|
||||
!+Left::Send ^+{Left}
|
||||
!Right::Send ^{Right}
|
||||
!+Right::Send ^+{Right}
|
||||
|
||||
#IfWinActive ahk_group editors
|
||||
; Remap Ctrl+Shift to behave like macOS Sublimetext
|
||||
; Will extend cursor to multiple lines
|
||||
#+Up::send {shift up}^!{Up}
|
||||
#+Down::send {shift up}^!{Down}
|
||||
|
||||
; Remap Ctrl+Cmd+G to select all matches
|
||||
#^g::send !{F3}
|
||||
#If
|
||||
|
||||
#IfWinActive ahk_group terminals
|
||||
; Copy
|
||||
^c::Send {LCtrl down}{LShift down}c{LCtrl Up}{LShift Up}
|
||||
#c::Send {LCtrl down}c{LCtrl Up}
|
||||
#IfWinNotActive ahk_group ConEmu
|
||||
; Paste
|
||||
^v::Send {LCtrl down}{LShift down}v{LCtrl Up}{LShift Up}
|
||||
#If
|
||||
#If
|
||||
|
||||
#IfWinActive ahk_group posix
|
||||
; End of Line
|
||||
#e::Send {LCtrl down}e{LCtrl Up}
|
||||
^e::return
|
||||
; Beginning of Line
|
||||
#a::Send {LCtrl down}a{LCtrl Up}
|
||||
^a::return
|
||||
;^l::Send clear{Enter}
|
||||
;#l::return
|
||||
; Clear Terminal and Scroll Buffer
|
||||
^k::Send clear && printf '\e[3J'{Enter}
|
||||
; Nano editor shortcuts
|
||||
#k::Send {LCtrl down}k{LCtrl Up}
|
||||
#x::Send {LCtrl down}x{LCtrl Up}
|
||||
#o::Send {LCtrl down}o{LCtrl Up}
|
||||
#r::Send {LCtrl down}r{LCtrl Up}
|
||||
#w::Send {LCtrl down}w{LCtrl Up}
|
||||
#\::Send {LCtrl down}\{LCtrl Up}
|
||||
#u::Send {LCtrl down}u{LCtrl Up}
|
||||
#j::Send {LCtrl down}j{LCtrl Up}
|
||||
#t::Send {LCtrl down}t{LCtrl Up}
|
||||
#_::Send {LCtrl down}_{LCtrl Up}
|
||||
#z::Send {LCtrl down}z{LCtrl Up}
|
||||
#If
|
||||
|
||||
#IfWinActive ahk_group ConEmu
|
||||
; Paste
|
||||
$^v::Send {Shift down}{Insert}{Shift Up}
|
||||
#v::Send {LCtrl down}v{LCtrl Up}
|
||||
#If
|
||||
|
||||
#IfWinActive ahk_exe mintty.exe
|
||||
; Copy
|
||||
$^c::Send {Control down}{Insert}{Control Up}
|
||||
#c::Send {LCtrl down}c{LCtrl Up}
|
||||
; Paste
|
||||
$^v::Send {Shift down}{Insert}{Shift Up}
|
||||
#v::Send {LCtrl down}v{LCtrl Up}
|
||||
#If
|
||||
|
||||
;Disable win + l key locking (This line must come before any hotkey assignments in the .ahk file)
|
||||
|
||||
; Admin privileges required
|
||||
; Sets Workstation Lock to not occur on Win+L
|
||||
; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 1
|
||||
|
||||
; Re-enables Workstation lock on Ctrl+Cmd+Q
|
||||
; Need to Remove Quick Assist and reboot
|
||||
; Remove-WindowsCapability -online -name App.Support.QuickAssist~~~~0.0.1.0
|
||||
#^q::
|
||||
; re-enable locking workstation, then lock it
|
||||
; RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 0
|
||||
; DllCall("LockWorkStation")
|
||||
; Reload script to relock Workstation Lock
|
||||
; Reload
|
||||
;return
|
BIN
windows/macbook_winctrl_capsesc_swap.reg
Normal file
BIN
windows/macbook_winctrl_capsesc_swap.reg
Normal file
Binary file not shown.
BIN
windows/macbook_winctrl_swap.reg
Normal file
BIN
windows/macbook_winctrl_swap.reg
Normal file
Binary file not shown.
BIN
windows/macbook_winctrl_swap.skl
Executable file
BIN
windows/macbook_winctrl_swap.skl
Executable file
Binary file not shown.
4
windows/remove_keyswap.reg
Normal file
4
windows/remove_keyswap.reg
Normal file
@@ -0,0 +1,4 @@
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
|
||||
"Scancode Map"=-
|
BIN
windows/standard_ctrlalt_capsesc_swap.reg
Normal file
BIN
windows/standard_ctrlalt_capsesc_swap.reg
Normal file
Binary file not shown.
BIN
windows/standard_ctrlalt_swap.reg
Normal file
BIN
windows/standard_ctrlalt_swap.reg
Normal file
Binary file not shown.
BIN
windows/standard_ctrlalt_swap.skl
Executable file
BIN
windows/standard_ctrlalt_swap.skl
Executable file
Binary file not shown.
BIN
windows/theme_campbell.reg
Normal file
BIN
windows/theme_campbell.reg
Normal file
Binary file not shown.
BIN
windows/theme_legacy.reg
Normal file
BIN
windows/theme_legacy.reg
Normal file
Binary file not shown.
BIN
windows/theme_onehalfdark.reg
Normal file
BIN
windows/theme_onehalfdark.reg
Normal file
Binary file not shown.
BIN
windows/theme_onehalflight.reg
Normal file
BIN
windows/theme_onehalflight.reg
Normal file
Binary file not shown.
BIN
windows/theme_ubuntu.reg
Normal file
BIN
windows/theme_ubuntu.reg
Normal file
Binary file not shown.
Reference in New Issue
Block a user