GithubHelp home page GithubHelp logo

linuxjavafixes's Introduction

#LinuxJavaFixes

Simple javaagent to fix problems in linux with non latin hotkeys in gui java applications.

Aimed to walkaround bug with java gui apps: "Hotkeys not functional in non-latin keyboard layout in 13.10 - 16.04" https://bugs.launchpad.net/unity/+bug/1226962

Swing java apps (IntelliJ Idea, Oracle SQL Developer etc.)

Copy to any directory 2 files:

LinuxJavaFixes-1.0.0-SNAPSHOT.jar

javassist-3.12.1.GA.jar

add

-javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

to java run string

Examples:

SoapUI

Add line to soapui.sh.

JAVA_OPTS="$JAVA_OPTS java -javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

Oracle SQL Developer

Add line to sqldeveloper/ide/bin/jdk.conf.

AddVMOption -javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

IntelliJ Idea

Add line to idea64.vmoptions or idea.vmoptions

-javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

Eclipse

Copy to any directory 2 files:

LinuxJavaFixes-1.0.0-SNAPSHOT.jar

javassist-3.12.1.GA.jar

Add following line to eclipse.ini.

-javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar=swt

Advanced part

Modify kaybindings for swing apps in case non russian layout

If you want another mapping you can create it by yourself:

  • run any app with java vm option -javaagent:[path]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar=print
  • after that utily begin print to console entered symbol codes using format

XKeysymPatchAgent.keysym=[hex code]

  • then create file using format [hex code]=[latin code of the same button]

Example:

6ca=Q

6c3=W

etc.

  • replace hex codes wuth yours
  • use following option to run app with custom mapping:

-javaagent:[path to directory with jar files]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar=[your mapping file]

Modify keybindings for swt in case non russian layout

  • add following line to eclipse.ini

-javaagent:[path]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar=swt:print

  • then grab codes and create properties file with mapping

[your locale key]=[latin key]

  • then run eclipse wuth following config

-javaagent:[path]/LinuxJavaFixes-1.0.0-SNAPSHOT.jar=swt:[path to your mapping file]

linuxjavafixes's People

Contributors

indvd00m avatar zheludkovm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linuxjavafixes's Issues

special characters

Hi,
I found problem with mapping keys to special characters such as ];\. Is there some limitation why those characters can not be used? According to my research they are all in standard character tables.

ubuntu 14.04 + webstorm 9

Hi! I'm not very experienced user...
Ububntu 14.04 + webstorm 9:
I have "webstorm.vmoptions" - if I write here nothing happens
and "webstorm64.vmoptions" - if I write here webstorm dosen't run

I added: -javaagent:/home/user/Downloads/shortcut_fix/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

Netbeans 8.1 and 8.2 RC - patch has no effect

I has updated /etc/netbeans.conf:

netbeans_default_options="-J-javaagent:/home/mnv/soft/LinuxJavaFixes-master/build/LinuxJavaFixes-1.0.0-SNAPSHOT.jar -J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.di sableMemoryMapping=true"

/home/mnv/soft/LinuxJavaFixes-master/build/ contains two files:

$ ls /home/mnv/soft/LinuxJavaFixes-master/build/ -l
итого 648
-rwxrwxrwx 1 mnv mnv 644148 апр 22  2015 javassist-3.12.1.GA.jar
-rwxrwxrwx 1 mnv mnv  12462 апр 22  2015 LinuxJavaFixes-1.0.0-SNAPSHOT.jar

When I run netbeans I have next message:

$ ./netbeans 
LinuxJavaPatchAgent.loaded properties from classpath! patch.key.mapping.properties

So, russian shortcuts not works.

What is wrong?

Fix not working with PhpStorm-172.4155.41

$ ./opt/PhpStorm-172.4155.41/bin/phpstorm.sh
java.lang.NoClassDefFoundError: javassist/ClassPool
at net.x11.patch.XKeysymTransformer.doClass(XKeysymTransformer.java:37)
at net.x11.patch.XKeysymTransformer.transform(XKeysymTransformer.java:28)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at sun.awt.X11.XWindow.keysymToUnicode(XWindow.java:1034)
at sun.awt.X11.XWindow.handleKeyPress(XWindow.java:1091)
at sun.awt.X11.XWindow.handleKeyPress(XWindow.java:1068)
at sun.awt.X11.XComponentPeer.handleKeyPress(XComponentPeer.java:75)
at sun.awt.X11.XFocusProxyWindow.handleKeyPress(XFocusProxyWindow.java:81)
at sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:1121)
at sun.awt.X11.XFocusProxyWindow.dispatchEvent(XFocusProxyWindow.java:73)
at sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:1086)
at sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:504)
at sun.awt.X11.XToolkit.run(XToolkit.java:618)
at sun.awt.X11.XToolkit.run(XToolkit.java:534)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 16 more

Ubuntu 14.04 with Oracle Java 8 initialization error

I have downloaded it's in /opt/ with next command:

cd /opt
sudo git clone https://github.com/zheludkovm/LinuxJavaFixes

And added

java ...
-javaagent:/opt/LinuxJavaFixes/build/LinuxJavaFixes-1.0.0-SNAPSHOT.jar

to initialization script.

But after it, when I running it I getting

Error opening zip file or JAR manifest missing : /opt/LinuxJavaFixes/build/LinuxJavaFixes-1.0.0-SNAPSHOT.jar
Error occurred during initialization of VM
agent library failed to init: instrument

But ls write that absolute path is right.
What may be wrong?

In Pycharm 2018 fix not work

I installed new pycharm-2018.1.3, and LinuxJavaFixes not work.
In older versions pycharm (for example pycharm-2017.3.2) fix it works.
Ubuntu 16.04 LTS
How to solve this problem?
Thank you

Doesn't work with PHPStorm 2019.2 EAP (build #PS-192.4205.18)

I think that problem is with new JRE/JVM.

Working with PhpStorm 2019.1:

2019-05-28 12:30:00,973 [      0]   INFO -        #com.intellij.idea.Main - ------------------------------------------------------ IDE STARTED ------------------------------------------------------ 
2019-05-28 12:30:01,016 [     43]   INFO -        #com.intellij.idea.Main - IDE: PhpStorm (build #PS-191.7141.52, 08 May 2019 14:26) 
2019-05-28 12:30:01,016 [     43]   INFO -        #com.intellij.idea.Main - OS: Linux (4.15.0-50-generic, amd64) 
2019-05-28 12:30:01,016 [     43]   INFO -        #com.intellij.idea.Main - JRE: 1.8.0_202-release-1483-b49 (JetBrains s.r.o) 
2019-05-28 12:30:01,016 [     43]   INFO -        #com.intellij.idea.Main - JVM: 25.202-b49 (OpenJDK 64-Bit Server VM) 
2019-05-28 12:30:01,017 [     44]   INFO -        #com.intellij.idea.Main - JVM Args: -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dide.no.platform.update=true -javaagent:/opt/LinuxJavaFixes/build/LinuxJavaFixes-1.0.0-SNAPSHOT.jar -XX:ErrorFile=/home/rmn/java_error_in_PHPSTORM_%p.log -XX:HeapDumpPath=/home/rmn/java_error_in_PHPSTORM.hprof -Didea.paths.selector=PhpStorm2019.1 -Djb.vmOptionsFile=/home/rmn/.local/share/JetBrains/Toolbox/apps/PhpStorm/ch-0/191.7141.52.vmoptions -Didea.platform.prefix=PhpStorm -Didea.jre.check=true

In new PhpStorm JRE and JVM version completely changed to 11.0.3+12-b262.1:

2019-05-28 12:24:42,082 [      0]   INFO -        #com.intellij.idea.Main - ------------------------------------------------------ IDE STARTED ------------------------------------------------------ 
2019-05-28 12:24:42,100 [     18]   INFO -        #com.intellij.idea.Main - IDE: PhpStorm (build #PS-192.4205.18, 22 May 2019 13:13) 
2019-05-28 12:24:42,100 [     18]   INFO -        #com.intellij.idea.Main - OS: Linux (4.15.0-50-generic, amd64) 
2019-05-28 12:24:42,100 [     18]   INFO -        #com.intellij.idea.Main - JRE: 11.0.3+12-b262.1 (JetBrains s.r.o) 
2019-05-28 12:24:42,100 [     18]   INFO -        #com.intellij.idea.Main - JVM: 11.0.3+12-b262.1 (OpenJDK 64-Bit Server VM) 
2019-05-28 12:24:42,101 [     19]   INFO -        #com.intellij.idea.Main - JVM Args: -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dide.no.platform.update=true -javaagent:/opt/LinuxJavaFixes/build/LinuxJavaFixes-1.0.0-SNAPSHOT.jar -Dsun.io.useCanonPrefixCache=false -Dsun.tools.attach.tmp.only=true -XX:ErrorFile=/home/rmn/java_error_in_PHPSTORM_%p.log -XX:HeapDumpPath=/home/rmn/java_error_in_PHPSTORM.hprof -Didea.paths.selector=PhpStorm2019.2 -Djb.vmOptionsFile=/home/rmn/.local/share/JetBrains/Toolbox/apps/PhpStorm/ch-0/192.4205.18.vmoptions -Didea.platform.prefix=PhpStorm 

Tested on Ubuntu 16.04

elementary OS Freya + PhpStorm 8.0.3 [czech]

Hi, I have downloaded files from your build and added them to /home/hobi/.java-fixes/.

I added -javaagent:/home/hobi/.java-fixes/LinuxJavaFixes-1.0.0-SNAPSHOT.jar to the phpstorm.vmoptions and phpstorm64.vmoptions files.

I use elementary OS, which is based on Ubuntu 14.04 LTS and I use czech keyboard.
I have Java 8 installed via sudo apt-get install oracle-java8-installer command.

But it doesn't work... It still throws me unknown keycode 0x0 error.

Any idea how to fix it? :)

Lotus Notes (IBM Notes 9.0.1)

Hello!
I use IBM Notes 9.0.1 (Lotus Notes). It has such problem with not latin layouts.
How can I make it work with your patch?

Add more key code

I need to implement more keys. for example slash. Where can I find these hex codes?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.