web-dev-qa-db-ja.com

キーボードのキーの機能を変更するにはどうすればよいですか? (カスタムキーボードコマンド/ショートカットを作成するにはどうすればよいですか?)

キーボードのいくつかのキーのキー割り当てを変更したい。一部のユーザーはコマンドを実行し、他のユーザーは異なるキーをアクティブにする必要があります。

これを行うためにどのアプリケーションを使用できますか?


インデックス:


私はまだdconfと他の方法を使って答えを探しています。

130
Seth

xbindkeys ..

Sudo apt-get install xbindkeys

Xbindkeysは非常に汎用性の高いプログラムで、非常に簡単にキーを再マップできます。キーバインドを特定のコマンドに変更するために、ホームディレクトリにあるデフォルトの設定ファイルを使用します。

デフォルトの設定ファイルを作成するには、次のコマンドを使用します。

xbindkeys --defaults

デフォルトの設定ファイルを印刷します。そのため、使用するデフォルト値を含むファイルをcreateしたい場合:

xbindkeys --defaults > $HOME/.xbindkeysrc

これは、ホームにある.xbindkeysrcという名前の隠しファイル(~)にデフォルト値を出力します。

次に、キーのバインディングを実際にchangeにするために、まずそれらのキーの名前またはkeysymが何であるかを知る必要があります。 xbindkeysを使用すると、-kハンドルを使用して、キーまたはキーの組み合わせの名前を検索できます。実行:

xbindkeys -k

そして、キーまたはキーの組み合わせを押します。出力はsomethingに似ています(押すと space):

"NoCommand"
m:0x10 + c:65
Mod2 + space

"No Command"は、現在コマンドが関連付けられていないことを示しています Space キー。

m:0x10 + c:65
Mod2 + space  

キー/キーの組み合わせの名前です。

構成ファイル..

先ほど作成した設定ファイルを開きましょう:

gedit .xbindkeysrc  

デフォルトの設定ファイルからの抜粋を次に示します。

#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
#   Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
#   Mod3 (CapsLock), Mod4, Mod5 (Scroll). 
#

# The release modifier is not a standard X modifier, but you can  
# use it if you want to catch release events instead of press events

# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.

#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable

# Examples of commands:

"xbindkeys_show" 
 control+shift + q  

#で始まる行はすべてコメントであり、xbindkeysによる読み取りや実行は行われません。

これまでコメントアウトされていない唯一の行は次のとおりです。

"xbindkeys_show" 
 control+shift + q  

この抜粋は、xbindkeysコマンドの基本的な構文を示しています。

"Command to run (in quotes)"
key to associate with command (no quotes)  

あなたが見ることができるように:

"xbindkeys_show" 
 control+shift + q  

を押したときにコマンドxbindkeys_showを実行します Ctrl+Shift+q

キーをコマンドにバインドします。

次に、いくつかのキーをバインドしてみましょう。空白になるように、デフォルトファイル全体をクリアすることをお勧めします。おそらく不要なプリセットキーバインディングが含まれています。

今、あなたが使用したいと言うことができます Ctrl+b ブラウザを開きます。まず、名前またはkeysymの名前を知る必要があります Ctrl+b です。前述のように、xbindkeys -kを使用してキーの名前を検索できますが、もっと簡単な方法があります。のような単純な組み合わせの場合 Ctrl+b あなただけを使用することができます:

Control+b

ずっと簡単ですよね!

次に、お気に入りのブラウザのコマンドを見つけます。

  • Firefoxの場合:firefox

  • Chromiumの場合:chromium-browser

  • Operaの場合:opera

以前の構文を覚えていますか?を押したときにFirefox(または他のお気に入りのブラウザー)を起動するxbindkeysコマンド Ctrl+b は:

"firefox"
Control+b

それを設定ファイルに入れて保存します。 xbindkeysが実行されていないため、コマンドがまだ機能しないことに気付くかもしれません。開始するには、ターミナルからxbindkeysを実行するだけです。きみの Ctrl+b これでブラウザが起動します!

キーを他のキーにバインドします。

キーボードのキーがキーボードの別のキーを呼び出すようにする場合は、xbindkeysがそれ自体をサポートしないため、追加のソフトウェアが必要になります。使用できる2つのプログラム、xdotoolxteを知っています。 xteが好きなので、それを使用します。

インストールしてください:

Sudo apt-get install xautomation

xteの構文は次のとおりです。

xte 'command key/mousebutton/xyCoordinates'

例:

  • 単一のキーを押すには、xte 'key keyName'を押します

  • キーの組み合わせを呼び出すには:xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName

  • マウスボタンを呼び出すには:xte 'mouseclick buttonNumber'(ボタン番号の検索については後ほど説明します)

  • マウスを移動するには:xte 'mousemove xCoordinate yCoordinate'

  • もっと! man xteを読む

キー押下をシミュレートするコマンドがわかったので、次のようにxbindkeysスクリプトから呼び出すことができます。

"xte 'key b'"
Control+b  

ご想像のとおり、これはを押すとxte 'key b'を呼び出します Ctrl+b、入力します b 現在作業中のドキュメントに移動します。

ただし、xbindkeysxteは必ずしもうまく機能するとは限りません。出力を得るために同時にキーを正確に押す必要がある場合もあれば、正常に機能する場合もあります。これは、システム構成やハードウェアに関係する場合と関係ない場合があります。キーを他のキーにバインドするより信頼性の高い方法については、 maggotbrain's answer を参照してください。

マウスボタンをコマンドにバインドします。

xbindkeysを使用して、マウスボタンをコマンドにバインドすることもできます(キーボードショートカット、上記を参照)。マウスボタンの基本的な形式は、今ではおなじみのはずです。

" [command to run]  "
b:n

ここで、[command to run]は実行するコマンド、nはそのコマンドに使用するマウスボタンの番号です。

マウスボタンの数がわからない場合は、xevを使用してそれが何であるかを確認できます。

xev | grep button

出力は次のようになります。

user@Host:~$ xev | grep button
    state 0x10, button 1, same_screen YES
    state 0x110, button 1, same_screen YES
    state 0x10, button 2, same_screen YES
    state 0x210, button 2, same_screen YES
    state 0x10, button 3, same_screen YES
    state 0x410, button 3, same_screen YES

マウスボタンを押すたび。

例えば:

" firefox "
b:2

マウスの中ボタンを押すと、Firefoxが起動します。

94
Seth

Xevとxmodmap

xevおよびxmodmapを使用してキーバインドを変更します。

どちらのコマンドラインアプリケーションもデフォルトで使用できるため、追加のソフトウェアをインストールする必要はありません。

Xev」は、ウィンドウを作成し、ウィンドウに何かが発生したとき(X移動、サイズ変更、入力、クリックなど)。 "xev man page

xmodmap "です。プログラムは、クライアントアプリケーションが使用するキーボード修飾子マップとキーマップテーブルを編集および表示するために使用されますイベントキーコードをキーシムに変換します。 "xmodmapのマニュアルページ

次の例は、 Caps_Lock の動作の鍵 Esc キー(多くのvi/vimユーザーは、これが便利なキーボードマッピングであると感じています)。

Xevを使用する

端末ウィンドウからxevアプリケーションを起動しますCtrl-Alt-t)。

アプリケーションは初期化され、複数の行を表示し、空白のウィンドウを開始します。 xevアプリケーションウィンドウにフォーカスを合わせて、使用するプロパティ/動作のキーを押します。

  • を押す ESC キー

端末ウィンドウに、数行の出力が表示されます。返された3行目をメモします。これには、他のキーに移動するプロパティの名前が含まれます。

KeyPress event, serial 32, synthetic NO, window 0x3e00001,
    root 0x256, subw 0x0, time 16245388, (616,73), root:(1487,535),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) ""

この場合、 Esc key(keycode 9)は名前 "Escape"を使用します。

  • を押す Caps Lock キー

今回は、次のキーコードを探しています Caps Lock 使用しています。

繰り返しますが、3行目に注意してください。

KeyRelease event, serial 32, synthetic NO, window 0x4c00001,
    root 0x256, subw 0x0, time 94702774, (862,151), root:(1733,613),
    state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XKeysymToKeycode returns keycode: 9
    XLookupString gives 1 bytes: (1b) ""

Xmodmapを使用する

xevから変更するキーの情報を取得したので、xmodmapを使用してキーマップを変更します。コマンド端末から(Ctrl+Alt+t)、次のコマンドを実行します:

  • このコマンドは Caps Lock と同じ動作を使用するには Esc

    xmodmap -e "keycode 66 = Escape"
    
  • このオプションは、キーマップテーブルを式としてファイル~/.Xmodmapに出力します

    xmodmap -pke > ~/.Xmodmap
    

次のコマンドを使用して、変更をアクティブにします(このログインセッションのみ)。

xmodmap ~/.Xmodmap

再起動後も変更を永続化する:

  • 存在しない場合は、.xinitrcという名前のホームフォルダーにファイルを作成します。

    touch .xinitrc
    
  • ファイルに次の行を配置して、ファイルを保存します。

    xmodmap ~/.Xmodmap
    

状態の動作が異なるキーの変更

(といった Num Lock

  • 修飾キーのキーマップテーブルを取得します(出力はここで省略)

    $ xmodmap -pm
    shift       Shift_L (0x32),  Shift_R (0x3e)
    mod2        Num_Lock (0x4d)
    

たとえば、期間の動作を変更したい場合 Del/Period 数字キーパッドのキーをコンマにするには、次のコマンドを使用します。

xmodmap -e "keycode 91 mod2 = KP_Delete comma"

これはmod2キーマッピングを使用して、修飾子が Num Lock が押されます。この構文は次のとおりです。

xmodmap -e "<KEYCODE> <MODIFIER> = <behaviour> <behaviour_with_modifier>"

リソース

55
Kevin Bowen

デフォルトでは(これはSethによる優秀な回答を補完するためだけです)、Ubuntu(この例では16.04を使用しています)には、システム設定にデフォルトである2つのカテゴリがあります。

システム設定に移動するには、右上ギアアイコンをクリックします:

enter image description here

次に、System Settingsを選択します:

enter image description here

ここには、ショートカット作成セクションに移動できる2つのオプションがあります。

enter image description here

Text Entryを選択した場合、ショートカットに直接送信される右下のKeyboard Settingsリンクを選択する必要がありますオプション。

enter image description here

Keyboardオプションを選択した場合、Shortcutsタブをクリックする必要があります。

enter image description here

[ショートカット]タブに到達したら、左側のリストの下部にあるCustom Shortcutsを選択します。

enter image description here

そして、一番下のプラス記号をクリックして、独自のショートカットの作成を開始します。

enter image description here

それ以降は、ショートカットの名前を追加するだけです(ショートカットの名前を、実際に実行するコマンドの名前と混同しないでください)。また、以下の[コマンド]フィールドには、このショートカットに対して実行するコマンドを入力する場所があります。次の例では、ショートカットに「Sublime Text 3」という名前を付けて、特定のショートカットが何に関連するのかを確認しました。そして、コマンドフィールドに、sublという実際のコマンドを追加しました。

enter image description here

ショートカットにはまだキーまたはキーの組み合わせが割り当てられていないため、デフォルトで無効になっていることを示す次の画面が表示されます。

enter image description here

次に、「無効」メッセージをクリックして、キーの組み合わせを追加します。

enter image description here

このパートでは、次のキーの組み合わせを割り当てます SHIFT+CTRL+S この組み合わせを押すと、Sublime Textアプリが開きます。

enter image description here

その後、対応するキーの組み合わせを押してアプリが開いていることを確認することで、組み合わせを簡単にテストできます。

enter image description here

注:Xサーバーを強制終了するような特別な組み合わせについては、次のリンクにアクセスすることをお勧めします。 Ctrl-Alt-Backspaceを有効にしてXサーバーを強制終了するにはどうすればよいですか?

43
Luis Alvarado

システム設定Keboardに移動し、ショートカットタブを選択して、ブラウザーの新しいカスタムショートカットを追加します。デフォルトのブラウザがFirefoxの場合、コマンドフィールドでfirefoxを使用します。デフォルトのブラウザがFirefoxの場合、chromium-browserなどを使用します。

add custom shortcut

21
Radu Rădeanu

ソフトウェアセンターから AutoKey をインストールすることにより、複雑な(マルチキー)キーボードショートカットを作成できます。 xmodmapとは異なり、AutoKeyはキーボードの実際のキーを再バインドしません。バックグラウンドで実行され、定義されたキーボードショートカットをインターセプトし、シミュレートされたキープレスをアプリケーションに送信します。

AutoKeyを初めて起動すると、バックグラウンドでサービスが開始されます(通知アイコンは統一されて更新されていないため、視覚的な表示はありません)。実行されたら、ランチャーを再度実行して設定インターフェイスを起動できます。

enter image description here

[編集]> [設定]を開き、[ログイン時にAutoKeyを自動的に開始する]を選択して、ログインするたびにショートカットが機能することを確認します。

キーボードショートカットを別のキーボードショートカットにマッピングする

  1. [ファイル]> [新規]> [フレーズ]を選択します。
  2. [貼り付け]が[キーボード]に設定されていることを確認します。
  3. テキストボックスにマップするキーtoを入力します。

    • 特殊(非文字)キーは、文書化されたコードで表されます here
    • 複数のキーを入力する場合、それらの間に+を配置しない限り、それらは順番に送信されます(たとえば、<ctrl>+cはほとんどのアプリケーションでコピーし、<ctrl>+c<ctrl>+n<ctrl>+vは選択を含む新しいドキュメントを作成します; <shift>+ubuntuは「Ubuntu」というテキストを入力します)
  4. 「ホットキー」の横にある「設定」ボタンを押します。これにより、マップするキーの組み合わせを決定できるダイアログが表示されますfrom

    enter image description here

  5. [ファイル]> [保存]を選択します

完了した構成の例(<enter>を押したときに<ctrl>+mを送信)は次のようになります。

enter image description here

18
cscarney

これを試して:

XKeyCapsというプログラムをインストールします。インストールするには、単に押す Ctrl+Alt+T キーボードでターミナルを開きます。開いたら、以下のコマンドを実行します:

Sudo apt-get install xkeycaps

インストールしたら、プロンプトでxkeycapsを実行してプログラムを実行できます。実行したら、正しいキーボードレイアウトを選択し、[OK]をクリックします

enter image description here

次に、画面にキーボードが表示されたら、目的のキーを右クリックします。 S、交換キーを選択します。

enter image description here

起動するたびに自動起動されるように、セッションに以下の行を追加してください。

xmodmap ~/.xmodmap-`uname-n`

ソース: FM ytsejam1138

15
Mitch

キーを再マップしたいだけなら、他の答えは素晴らしいです。

ただし、それにアプローチする別の方法があります。 AutoKey はキーボードマクロプロセッサであり、キー/修飾子の組み合わせを、キーボードなどで実行できるほぼすべての操作を実行できるスクリプトに関連付けることができます。

AutoKeyにはスクリプトレコーダーと基本的なキーシーケンスを入力する簡単な方法がありますが、そのスクリプトはPythonで記述されており、コーディングできるほとんどすべてのことができます。

最も簡単な使用方法は、キーストロークをアプリケーション/デスクトップに送信することです。このように使用すると、システム/アプリケーションは入力していないことを認識できないため、APIや他のインターフェイスは必要ありません。入力したとおりに実行します。

AutoKeyはフレーズも処理できます。トリガー文字列を入力すると、その文字列を新しいテキストで置き換えることができます(すぐに、または改行やタブなどの区切り文字を入力した後)。

また、特定のフレーズまたはスクリプトを特定の種類のウィンドウ(Mozillaがタイトルに含まれているため、FirefoxやThunderbirdなどでのみ動作するウィンドウ)でのみ実行するように制限できるウィンドウフィルターもあります。

AutoKeyには現在、GtkおよびQtバージョンがあります。

編集:

インストールガイド

ユーザーフォーラム アクティブなユーザーフォーラム。

Wikiには多くのスクリプト例があります。主に多くのオプションを備えたGUIアプリであるため、例では多くのスクリーンショットと記事全体が必要になります。

Jmail!」と入力すると、すぐにかなり長いメールアドレスに置き換えられるようにフレーズが定義されています。

入力してトリガーされるスクリプトを書きました Ctrl-P タイトルに「Mozilla」が含まれるウィンドウでのみアクティブになります。タイピング Ctrl-P (FirefoxまたはThunderbird)印刷ダイアログを表示し、(ファイルに印刷)を選択して、印刷キューで次に使用可能な印刷ファイルの名前を入力します(01、02、...に番号を付け、スクリプトはキューディレクトリを読み取り、最後のファイル番号を見つけて、1ずつ増やします。両面印刷エミュレーションソフトウェア( duplexpr )で使用して、大量のキーストロークとマウスの動きを排除します。

ゲーマーが他のスクリプトを見て、キャラクターやリソースに関する情報にすばやくアクセスして、アクションに集中できるようにしました。

8
Joe

マウスボタンとしてキーボードキーを使用する

キーボードのキーをマウスボタンにマップすることもできます。キーボードのキーを使用してクリックしたい場合(Macbookやトラックパッドのボタンが悪い場合に便利です)、次のことができます。

  1. いくつかのユーティリティをインストールします。

    Sudo apt-get install x11-utils xkbset x11-xserver-utils
    
  2. マップするキーのキーコードを見つけます。

    • ターミナルでxev | grep keycodeと入力します
    • 目的のキーを押すと、次のような行が表示されます。

      state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,  
      
  3. キーコードを使用して、マウスの左ボタンと同じようにキーを再マッピングします。

    • xkbset m
    • xmodmap -e "keycode 64 = Pointer_Button1"

Pointer_Button3はマウスの右ボタン、Pointer_Button2は中央ボタンです。

7

「キーボード」アプリケーションの下にあることが判明しました。

それを表示する場合、必要に応じてショートカットを変更できます...

初めて使用する場合、変更は少し奇妙です。右側(ctrl-alt-T、Disabledなどがある列)をクリックしてから、実際のキー(例: ctrlaltb あなたがしたいこと。そのスペースに新しいキーシーケンスが表示されます。ウィンドウを閉じる(またはクリックする)と、新しいショートカットが機能するようになります。

3
Michael Durrant

xkbを使用して

xkbはXキーボード拡張です。キーボードのキーを指定された機能にマッピングします。 xkbシンボルは/usr/share/X11/xkb/symbols/にあります。修飾キーは/usr/share/X11/xkb/symbols/pcにマップされます。

Caps LockおよびLeft Controlキーの機能を切り替える必要があるとします。 pcファイルには次の変更が必要です。

key <CAPS> {        [ Control_L             ]       };
key <LCTL> {        [ Caps_Lock             ]       };

新しいマッピングを適用するには、/var/lib/xkbからxkbのキャッシュをクリアする必要があります。

rm -rf /var/lib/xkb/*

さて、Xセッションを再起動するだけで準備完了です。

ソース: https://radu.cotescu.com/remapping-keys-in-ubuntu-14.04/

Edit:lsディレクトリ内でsymbolsを実行すると、次のようになります。

af        cm            gn       kz              nec_vndr    sk
al        cn            gr       la              ng          sn
altwin    compose       group    latam           nl          sony_vndr
am        ctrl          hp_vndr  latin           no          srvr_ctrl
apl       cz            hr       level3          nokia_vndr  Sun_vndr
ara       de            hu       level5          np          sy
at        digital_vndr  ie       lk              olpc        terminate
az        dk            il       lt              pc          th
ba        ee            in       lv              ph          tj
bd        empty         inet     ma              pk          tm
be        epo           iq       Macintosh_vndr  pl          tr
bg        es            ir       mao             pt          tw
br        et            is       md              ro          typo
brai      eurosign      it       me              rs          tz
bt        fi            jp       mk              ru          ua
bw        fo            ke       ml              rupeesign   us
by        fr            keypad   mm              se          uz
ca        fujitsu_vndr  kg       mn              sgi_vndr    vn
capslock  gb            kh       mt              sharp_vndr  xfree68_vndr
cd        ge            kpdl     mv              shift       za
ch        gh            kr       nbsp            si

ファイルru内のマッピングは、ロシアの標準キーボードに基づいています。 Macintosh_vndrフォルダーには、Appleキーボードのマッピングが含まれています。一言で言えば、このアプローチは非常に多用途です。さあ、それで遊んでください:)

3
crisron

Mintのように、[Print Screen]を押してgnome-screenshotアプリケーションを使用してスクリーンショットを保存したかった

しかし、squashfsツールを使用してカスタムISOを作成するときにデフォルトにしたいので、GUIではなくターミナルを使用してそれを実行したかったのです。

最初にコマンドを使用してgnome-screenshotをインストールしました

Sudo apt-get install gnome-screenshot

次に、設定->キーボード->カスタムショートカット->追加(+)ボタン->を使用して、カスタムショートカットを割り当てました。

ダイアログで:

  • 名前:スクリーンショット
  • コマンド:gnome-screentshot

追加ボタンを押す

次に Print screen キー。

キーがバインドされ、必要に応じてスクリーンショットを保存できます。
しかし、ターミナルを使用しない、それはGUIの方法です

次にdconf-editorをインストールしました

Sudo apt-get install dconf-editor

gnome-screenshotを検索します
このパスにカスタムキーバインディングがあります

/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/

キーの値は次のとおりです。

  • 「印刷」のバインド
  • コマンド「gnome-screenshot」
  • 「印刷画面」という名前

これらをコピーして、GUIカスタムショートカットキーを削除します

ターミナルを開いてこれらのコマンドを入力します

dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'gnome-screenshot'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding  "'Print'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'print screen'"

そして出来上がり

dconfとターミナルを使用するだけで、GUIなしでスクリーンショットを保存できます。 dconf-editorも必要ありません。値を取得するためにインストールされたばかりです。

1
Subhani Minhas

CompizConfig設定マネージャー(CCSM)

CCSMでは、いくつかのシステムキーボードショートカットを変更できます。

それをインストールするには、ソフトウェアセンターまたは次のコマンドを使用します。

Sudo apt-get install compizconfig-settings-manager

例えば

「ウィンドウスプレッド」ショートカットをデフォルトから変更するために使用しました Super+W に Super+Tab、Windows 10のように。 別のスレッドでの答え

  1. ダッシュからCCSMを実行します。
  2. ウィンドウ管理->Scale->バインディングタブ->ウィンドウピッカーの開始
  3. キーボードショートカット(PCでは<Super>wですが、このスクリーンショットでは<Super>Tab)をクリックします。

    CCSM - Window management - Scale

  4. キーの組み合わせを取得するをクリックし、目的のキーを押して、OKをクリックします。

    Edit Initiate Window Picker

1
wjandrea

ショートカットは既にWWWとして存在します。変更するだけです Ctrl+Alt+b。新しいものを作成する必要はありません。

enter image description here

1
Mitch