mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-06 19:08:27 +02:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
997d2dd39f | ||
![]() |
39c40bc315 | ||
![]() |
16f8b237d5 | ||
![]() |
7013d81686 | ||
![]() |
87ca8e7566 | ||
![]() |
0e4160622f | ||
![]() |
564360e9fa | ||
![]() |
91e692c76b | ||
![]() |
6c46696bd4 | ||
![]() |
40c8d20513 | ||
![]() |
6b6e448e76 | ||
![]() |
f73a2c8420 |
@@ -1,11 +1,11 @@
|
|||||||
# Kinto
|
# Kinto
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||

|

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

|
|
||||||
|
|
||||||
\- Type in Linux like it's a Mac. \-
|
\- Type in Linux 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.
|
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)
|
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.
|
- Cursor/word-wise shortcut keys have been added to align with macOS keyboard shortcuts.
|
||||||
|
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
"type":"windows",
|
"type":"windows",
|
||||||
"active": false,
|
"active": false,
|
||||||
"description":"Standard Windows 104 Keyboards",
|
"description":"Standard Windows 104 Keyboards",
|
||||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
"gui":"xkbcomp -w0 -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",
|
"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)",
|
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
"type":"mac",
|
"type":"mac",
|
||||||
"active": false,
|
"active": false,
|
||||||
"description":"Standard Mac Keyboards with Apple driver",
|
"description":"Standard Mac Keyboards with Apple driver",
|
||||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
"gui":"xkbcomp -w0 -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",
|
"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)",
|
"xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
"type":"mac",
|
"type":"mac",
|
||||||
"active": true,
|
"active": true,
|
||||||
"description":"Standard Mac Keyboards",
|
"description":"Standard Mac Keyboards",
|
||||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
"gui":"xkbcomp -w0 -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",
|
"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)",
|
"xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_apple)+mac_term(mac_global)",
|
"xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_apple)+mac_term(mac_global)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
"type":"chromebook",
|
"type":"chromebook",
|
||||||
"active": false,
|
"active": false,
|
||||||
"description":"Standard Chromebook Keyboards",
|
"description":"Standard Chromebook Keyboards",
|
||||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
"gui":"xkbcomp -w0 -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",
|
"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)",
|
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
@@ -62,9 +62,9 @@
|
|||||||
"type":"chromebook",
|
"type":"chromebook",
|
||||||
"active": false,
|
"active": false,
|
||||||
"description":"Chromebook with Windows 104 Keyboard",
|
"description":"Chromebook with Windows 104 Keyboard",
|
||||||
"gui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen; setxkbmap -device $usbid -option altwin:ctrl_alt_win",
|
"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":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
"term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen",
|
||||||
"fallbackgui":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $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)",
|
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
@@ -76,8 +76,8 @@
|
|||||||
"type":"chromebook",
|
"type":"chromebook",
|
||||||
"active": false,
|
"active": false,
|
||||||
"description":"Chromebook with Mac Keyboard",
|
"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 2>&1 | grep -v XF86FullScreen",
|
"gui":"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",
|
"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)",
|
"xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)",
|
||||||
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
"xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)",
|
||||||
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
"xkb_types_gui":"+mac_gui(addmac_levels)",
|
||||||
|
@@ -16,10 +16,10 @@ cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh
|
|||||||
cp ./system-config/.firefox-nw ~/.config/kinto/.firefox-nw
|
cp ./system-config/.firefox-nw ~/.config/kinto/.firefox-nw
|
||||||
sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service
|
sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service
|
||||||
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/systemd/user/keyswap.service
|
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/systemd/user/keyswap.service
|
||||||
if [ "${#DISPLAY}" -gt 2 ]
|
# if [ "${#DISPLAY}" -gt 2 ]
|
||||||
then
|
# then
|
||||||
sed -i "s/#Environment/Environment/g" ~/.config/systemd/user/keyswap.service
|
sed -i "s/#Environment/Environment/g" ~/.config/systemd/user/keyswap.service
|
||||||
fi
|
# fi
|
||||||
systemctl --user daemon-reload
|
systemctl --user daemon-reload
|
||||||
sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service
|
sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service
|
||||||
systemctl --user enable keyswap.timer
|
systemctl --user enable keyswap.timer
|
||||||
|
Binary file not shown.
@@ -194,7 +194,7 @@ Window get_focus_window(Display* d){
|
|||||||
// a top window have the following specifications.
|
// a top window have the following specifications.
|
||||||
// * the start window is contained the descendent windows.
|
// * the start window is contained the descendent windows.
|
||||||
// * the parent window is the root window.
|
// * 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, int last_event, char const *current_app){
|
||||||
Window w = start;
|
Window w = start;
|
||||||
Window parent = start;
|
Window parent = start;
|
||||||
Window root = None;
|
Window root = None;
|
||||||
@@ -202,22 +202,27 @@ Window get_top_window(Display* d, Window start){
|
|||||||
unsigned int nchildren;
|
unsigned int nchildren;
|
||||||
Status s;
|
Status s;
|
||||||
|
|
||||||
while (parent != root && parent != 0) {
|
// 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 == 17 || etype == 18)) {
|
||||||
w = parent;
|
w = parent;
|
||||||
|
|
||||||
s = XQueryTree(d, w, &root, &parent, &children, &nchildren); // see man
|
s = XQueryTree(d, w, &root, &parent, &children, &nchildren); // see man
|
||||||
|
|
||||||
if (s)
|
if (s)
|
||||||
XFree(children);
|
XFree(children);
|
||||||
|
|
||||||
if(xerror){
|
if(xerror){
|
||||||
printf("fail to get top window: %ld\n",w);
|
printf("fail to get top window: %ld, e.type: %d, last_event: %d, current_app: %s\n",w,etype,last_event, current_app);
|
||||||
exit(1);
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf(" get parent (window: %d)\n", (int)w);
|
// printf(" get parent (window: %d)\n", (int)w);
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("success (window: %d)\n", (int)w);
|
// printf("success (window: %d)\n", (int)w);
|
||||||
|
// printf("hello\n");
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
@@ -431,7 +436,7 @@ int main(void){
|
|||||||
|
|
||||||
// get active window
|
// get active window
|
||||||
w = get_focus_window(d);
|
w = get_focus_window(d);
|
||||||
w = get_top_window(d, w);
|
w = get_top_window(d, w, 0, 0, current_app);
|
||||||
w = get_named_window(d, w);
|
w = get_named_window(d, w);
|
||||||
|
|
||||||
// XFetchName(d, w, &name);
|
// XFetchName(d, w, &name);
|
||||||
@@ -546,8 +551,35 @@ int main(void){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if(strcicmp(current_app, "plasmashell") == 0){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
// if(strcicmp(current_app, "plasmashell") == 0 && e.type == 18 && last_event == 22){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
// if(strcicmp(prior_app, "plasmashell") == 0){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
// if(strcicmp(current_app, "dolphin") == 0){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
// if(strcicmp(prior_app, "dolphin") == 0){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
// if(strcicmp(current_app, "dolphin") == 0 && e.type == 18 && last_event == 16){
|
||||||
|
// XNextEvent(d, &e);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Reference http://www.rahul.net/kenton/xproto/xevents_errors.html
|
||||||
|
// event type 17 - DestroyNotify
|
||||||
|
// event type 18 - UnmapNotify
|
||||||
|
// Dismiss the following events by initiating another XNextEvent
|
||||||
|
while(e.type == 17 || e.type == 18){
|
||||||
|
XNextEvent(d, &e);
|
||||||
|
}
|
||||||
|
|
||||||
w = get_focus_window(d);
|
w = get_focus_window(d);
|
||||||
w = get_top_window(d, w);
|
w = get_top_window(d, w, e.type, last_event, current_app);
|
||||||
w = get_named_window(d, w);
|
w = get_named_window(d, w);
|
||||||
}
|
}
|
||||||
}
|
}
|
6
setup.py
6
setup.py
@@ -86,11 +86,9 @@ if len(check_ibus) == 0:
|
|||||||
if runpkg != 0:
|
if runpkg != 0:
|
||||||
requirements(pkgm)
|
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()
|
install_ibus()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
f = open("defaults.json")
|
f = open("defaults.json")
|
||||||
except IOError:
|
except IOError:
|
||||||
@@ -215,7 +213,7 @@ if(onetime):
|
|||||||
print(bcolors.CYELLOW + "Please enter your init tweak(s) (eg 1 or 1 2 3 - leave blank to skip): " + bcolors.ENDC)
|
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()]
|
defaultinit = [int(i) for i in input().split()]
|
||||||
if len(defaultinit) != 0:
|
if len(defaultinit) != 0:
|
||||||
user_config['init'] = defaultinit
|
user_config['init'] = [intents[defaultinit[0]-1]['id']]
|
||||||
|
|
||||||
print("\nDynamic shortcut tweaks\n")
|
print("\nDynamic shortcut tweaks\n")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user