2012-07-10 11 views

答えて

1

EclipseはWindowsキーをフックしません。たとえば、CTRL + ALT + SHIFT(それを使用しない場合)にツールを使用してWindowsキーを再バインドすることができます。 AutoHotkeyのようなツールがその仕事をするかもしれません。あなたがWindowsキーを押すたびに、あなたは、あなたの希望ホットキーをバインドするために使用することができますCTRL +ALT +SHIFT、押されているかのよう

そして、それは次のようになります。

1

あなたは、あなたの質問にタグ付けの「Linux」を持っているので、私はあなたがLinuxとXを使っていると仮定します...

だから、まずあなたが持っているかどうかを発見する必要があり、Eclipseのでスーパーを使用しますスーパー、それ以外の場合は1つ作成してください。これの残りの部分はおそらくxmodmapの主題に関して必要以上のものです。

最初に行うべきことは、スーパーモディファイアキーがすでにあるかどうかを確認することです。 "xmodmap -pm"を実行して、現在の修飾子を確認してください。ここで、共通出力です:上記の出力で

$ xmodmap -pm 
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): 

shift  Shift_L (0x32), Shift_R (0x3e) 
lock  Caps_Lock (0x42) 
control  Control_L (0x25), Control_R (0x69) 
mod1  Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) 
mod2  Num_Lock (0x4d) 
mod3  
mod4  Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) 
mod5  ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

(16進数)が0x85、0x86で、0xce、及び0xcfのキーコードと、キーの束は、既に、スーパーにマッピングされます。あなたのキーボード上の何かが(常にそうであるとは限りませんが)それらのキーの1つであるかどうかを見るには、ターミナルで "xev"を実行し、 "xev"のほとんど白い入力ウィンドウにマウスポインタを移動し、異なるキー。典型的な出力は、キーの場合と同じように見えます(例を見るためにコントロールとシフトを試してください)。キーコードとkeysym名(ここでは64とMeta_L)の3行目に特に注意してください。

「Windows」キーも試してください。キーコードと現在のマッピングを確認してください。

KeyPress event, serial 42, synthetic NO, window 0xe600003, 
    root 0x6b6, subw 0x0, time 2232472454, (-1,167), root:(871,683), 
    state 0x0, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES, 
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False 

「キーコード」の部分を見つけて、あなたはスーパークラスの1をヒットした場合、あなたの変換されたコードは(、上記の例では4個)の六角キーコードのいずれかに一致します16をベースに、それをひそかし、上記のMeta_Lの代わりにSuper_LまたはSuper_Rを表示してください。

スーパーにマップされているキーがない場合、またはキーボードにキーが存在しないことが判明した場合は、xevを使用して、キーのキーコードを見つけてください。がSuper(CapsLock mightいくつかの人にとっては良い選択です)、次にデスクトップのUIでxmodmapや他のツールを使って設定してください。後者は、この回答の範囲外ですが、xmodmapをして、あなたはそれでこれであなたのホームディレクトリ内の.Xmodmapという名前のファイルを作ることができます:

! note: replace the 0xff below with your *actual* Super_L key's keycode. 
! note: whether to use mod3 or mod4 depends on your environment. 
keycode 0xff = Super_L 
clear mod4 
add mod4 = Super_L 

は「xmodmapを〜/の.Xmodmapで結果を適用します"多くのXスタートアップが自動的にこれを適用します。 Ubuntu Unityを使用している場合は、DashでStartup Applicationsを探し、同じコマンドを追加します。 "〜"がコンテキスト内で動作するかどうか分からない場合は、$ HOMEを試してみるか、そこにホームディレクトリを使用したいかもしれません。 〜/ .config/autostart/xmodmapにファイルが生成されます。このようなデスクトップ(erlkonig =私は、代わりにあなたの家を置く):

$ cat ./.config/autostart/xmodmap.desktop 
[Desktop Entry] 
Type=Application 
Exec=/usr/bin/xmodmap /home/erlkonig/.Xmodmap 
Hidden=false 
NoDisplay=false 
X-GNOME-Autostart-enabled=true 
Name[en_US]=Xmodmap Keymap Settings 
Name=Xmodmap Keymap Settings 
Comment[en_US]=Set Keyboard Bindings 
Comment=Set Keyboard Bindings 

あなたは「xmodmapを-pm」または「XEV」との結果を確認することができます。私の環境のための出力は、より複雑な設定から出力されます(おそらくあなたが望むものと一致しません)。

$ xmodmap -pm 
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): 

shift  Shift_L (0x32), Shift_R (0x3e) 
lock  Caps_Lock (0x7f) 
control  Control_L (0x25) 
mod1  Meta_L (0x40), Meta_L (0xcd) 
mod2  Alt_L (0x6c), Alt_L (0xcc) 
mod3  Super_R (0x69), Super_L (0x85), Super_R (0x86), Super_L (0xce) 
mod4  Hyper_L (0x42), Hyper_L (0xcf) 
mod5  Num_Lock (0x4d) 

ハイパーCapsLock(これは別の場所に移動しました)を置き換えます。 Hyper-fのようなウインドウマネージャー機能のために、ウインドウを「手前に」、サイズを変更するためにHyper-rのように使用します。

xmodmapでできることのもう一つのランダムな(ish)例は、あなたはMode_switchにどのようなキーコード78を入力しているのかを '、'、 `、〜と組み合わせて次の母音に同様の発音記号を付けるプレフィックスを入力することができます。 dが¿取得するには、?ðを取得し、いくつかの他の人に。

! note: 78 is probably not the keycode most would want here; pick your own :-) 
keycode 78 = Mode_switch 
!      no mods shift   mode-switch shift+mode-switch 
keysym a   =   a A      ae AE 
keysym d   =   d D      thorn THORN 
keysym n   =   n N     ntilde Ntilde 
keysym o   =   o O     oslash Oslash 
keysym t   =   t T      eth ETH 
keysym s   =   s S     ssharp 
keysym 0   =   0 parenright   degree  
keysym 6   =   6 asciicircum dead_circumflex 
keysym 8   =   8 asterisk   multiply  
keysym apostrophe = apostrophe quotedbl   dead_acute dead_diaeresis 
keysym grave  =  grave asciitilde  dead_grave 
keysym comma  =  comma less   dead_cedilla guillemotleft 
keysym period  =  period greater   NoSymbol guillemotright 
keysym slash  =  slash question   NoSymbol questiondown 
keysym 1   =   1 exclam    NoSymbol exclamdown 
keysym equal  =  equal plus    notequal plusminus 

詳細については、「男のxmodmapを」を使用しています。

+1

私が知る限り、Eclipseはmod4(またはmod3)を見ていないようです。 mod4にSuperを割り当てても、実際には役に立ちません。 – studgeek

+0

それは残念です。 Linux + X11で本当に真実であれば、Eclipseで何か他の名前をつけただけではありませんが、そこにはありません。ああ、それは答えの半分で、残りの標準X11修飾子をサポートするためにEclipseチームを取得すること(あなたが正しいなら、それはまだではありません)です。 –

0

を私はあなたのコアの目標はでキーバインディングを作成することである疑いがありますあなたの既存のコントロールとaltバインディングに加えて。したがって、たとえば、Windows-LにControl-L、Alt-L、Shift-Lとは異なる操作をさせてください。

残念ながら、LinuxのEclipseは、shift、control、alt(xmodmapのmod1)以外の修飾子をサポートしていないようです。したがって、Windowsキーをマップする追加の修飾子はありません。論理的な選択肢はmod4ですが、Windows以外のプラットフォームではSWTはmod4をサポートしていないようです。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=55236にWindows以外のmod4サポートを追加するバグがあります。残念ながら、それはしばらくの間 "修正されません"とマークされています。私はそこに行って、それを投票し、追加のユーザーケース/理由を共有することをお勧めします。

関連する問題