Libraryless. Click here for Pure Java version (1284L/9K/29K).
1 | !752 |
2 | |
3 | p { |
4 | // Send information to whoever is listening on port 4989 |
5 | S bashCmd = "echo -e 'windows key pressed\\n' | telnet localhost 4989"; |
6 | |
7 | File scriptFile = getProgramFile("converse.sh"); |
8 | saveTextFile(scriptFile, bashCmd); |
9 | S cmdToRun = "/bin/bash " + scriptFile.getPath(); |
10 | |
11 | assignWindowsKeyTo(bashQuote(cmdToRun)); |
12 | } |
13 | |
14 | svoid assignWindowsKeyTo(S cmdToRun) ctex { |
15 | if (!isLinux()) |
16 | fail("This function is only implemented for Linux"); |
17 | |
18 | // Install xbindkeys if not there |
19 | |
20 | if (!new File("/usr/bin/xbindkeys").isFile()) { |
21 | fail("xbindkeys not installed"); |
22 | |
23 | /* |
24 | //print("xbindkeys not found, installing."); |
25 | String sudoPassword = TinyBrainUtils.showPasswordDialog(new MiniDB(), null, |
26 | "Please enter sudo password (for apt-get install xbindkeys)", ""); |
27 | if (sudoPassword == null) |
28 | return; // No password, interrupt |
29 | |
30 | Logger oldLogger = Log.getLogger(); |
31 | Log.setLoggerForThread(new NonLogger()); // don't log sudo password |
32 | try { |
33 | backtick("echo " + sudoPassword + " | sudo -S apt-get -y install xbindkeys"); |
34 | } finally { |
35 | Log.setLoggerForThread(oldLogger); |
36 | } |
37 | */ |
38 | } else { |
39 | print("Good: xbindkeys is installed."); |
40 | } |
41 | |
42 | if (!new File("/usr/bin/xbindkeys").isFile()) |
43 | throw new RuntimeException("Could not install xbindkeys"); |
44 | print("xbindkeys there."); |
45 | |
46 | print("Creating ~/.xbindkeysrc"); |
47 | |
48 | S homedir = userHome(); |
49 | print("home dir: " + homedir); |
50 | |
51 | // We just overwrite .xbindkeysrc... hopefully no other keys were bound by user :) |
52 | |
53 | File dot_xbindkeysrc = new File(homedir, ".xbindkeysrc"); |
54 | print("writing: " + dot_xbindkeysrc); |
55 | saveTextFile(dot_xbindkeysrc, |
56 | "# This file was created by " + getProgramURL() + "\n" + |
57 | "\n" + |
58 | cmdToRun + "\n" + |
59 | " c:133\n" // It's the Windows key! |
60 | ); |
61 | |
62 | print("Adding xbindkeys to your autostart"); |
63 | |
64 | // make xbindkeys.desktop (autostart xbindkeys for local user) |
65 | |
66 | File autostart_dir = new File(homedir, ".config/autostart"); |
67 | print("Creating " + autostart_dir); |
68 | autostart_dir.mkdirs(); |
69 | File autostart_xbindkeys = new File(autostart_dir, "xbindkeys.desktop"); |
70 | print("Writing " + autostart_xbindkeys); |
71 | saveTextFile(autostart_xbindkeys, |
72 | " [Desktop Entry]\n" + |
73 | " Version=1.0\n" + |
74 | " Name=xbindkeys\n" + |
75 | " Name[en_US]=xbindkeys\n" + |
76 | " Comment=Binds hotkeys to actions\n" + |
77 | " Exec=xbindkeys\n" + |
78 | " Icon=\n" + |
79 | " Terminal=false\n" + |
80 | " Type=Application\n" + |
81 | " Encoding=UTF-8\n" + |
82 | " Categories=Accessories\n"); |
83 | |
84 | print("Starting xbindkeys"); |
85 | |
86 | S processes = backtick("ps --no-heading -C xbindkeys"); |
87 | |
88 | if (!processes.isEmpty()) { |
89 | print(" xbindkeys already running - restarting."); |
90 | backtick("killall xbindkeys && xbindkeys"); |
91 | } else { |
92 | backtick("xbindkeys"); |
93 | print(" xbindkeys started."); |
94 | } |
95 | |
96 | print("All done, Windows key assigned."); |
97 | } |
download show line numbers debug dex old transpilations
Travelled to 15 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1003536 |
Snippet name: | Assign Windows Key (on Linux) |
Eternal ID of this version: | #1003536/1 |
Text MD5: | 89bc579b425b667c769e5a9f726b483a |
Transpilation MD5: | bd1f140747e6c101571ea5a8907e552a |
Author: | stefan |
Category: | javax / talking robots |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2016-07-17 17:16:02 |
Source code size: | 2984 bytes / 97 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 631 / 629 |
Referenced in: | [show references] |