3

多くの古いラップトップと一部のコンパクト キーボードには、メイン キーボード領域に統合された数字キーパッドがあります。この代替キーパッドは、左の Ctrl キーの横にある特別な「Fn」キーでアクティブになります。

プログラマーとして、カーソル移動キー (矢印、PgUp、PgDn など) の使い方を学び、プログラミング速度が大幅に向上したことを発見しました。また、特殊なショートカット キーの場合のように、利点は 1 つのアプリケーションだけに限定されるものではありませんでした。

従来の PC キーボードでは、「Windows キー」を使用して「Fn」キーと対応する統合テンキーをエミュレートできます。MS Windows を使用していたとき、Autohotkeyは単純なスクリプトを使用してキーをマップできることがわかりました。

最近、xkb と、それを使用して非常に低いレベルでキーストロークをマッピングする方法について学びました。

Windows キーを fn キーとして使用して統合テンキーをエミュレートする xkb キーボード マッピング プロファイルは何ですか?

ヒント(?): このファイルは、Debian 派生の Linux ディストリビューションの ' /usr/share/X11/xkb/symbols/keypad ' ファイルによく似ていると思います。この「キーパッド」ファイルは、「/usr/share/X11/xkb/symbols/pc」ファイルの先頭に含まれています。

参照用の対応する autohotkey スクリプト(# == WinKey):

#8::Up
#k::Down
#u::Left
#o::Right

#7::Home
#j::End
#9::PgUp
#l::PgDn

#m::Insert
#.::Delete

;(Scroll with the left-over keys)
#i::WheelUp
#,::WheelDown

これらのキーはすべて、Ctrl、Alt、Shift、および Windows キーの任意の組み合わせで動作する必要があることに注意してください。

4

1 に答える 1

2

Linux/XKBのメインキーボードにテンキー風のカーソルキーを取り付ける手順...

  1. xkbcomp $DISPLAY original.xkb (念のため;)
  2. xkbcomp $DISPLAY custom.xkb
  3. custom.xkb を編集
  4. セクションの最後に次を追加します: xkb_types "..." {

    type "WinKeyAsFnKey" {
      modifiers = Shift+Super;
      map[Shift] = level2;
      map[Super] = level3;
      map[Super+Shift] = level3;
      level_name[Level1] = "Base";
      level_name[Level2] = "Caps";
      level_name[Level3] = "Fn";
    };
    
  5. セクション xkb_symbols "..." { の最後に以下を追加します

     key <AE07> {type="WinKeyAsFnKey",symbols[Group1]=[7,ampersand,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<HOME>,clearmods=Super)]};
     key <AE08> {type="WinKeyAsFnKey",symbols[Group1]=[8,asterisk,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<UP>,clearmods=Super)]};
     key <AE09> {type="WinKeyAsFnKey",symbols[Group1]=[9,parenleft,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGUP>,clearmods=Super)]};
     key <AD07> {type="WinKeyAsFnKey",symbols[Group1]=[u,U,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<LEFT>,clearmods=Super)]};
     key <AD09> {type="WinKeyAsFnKey",symbols[Group1]=[o,O,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<RGHT>,clearmods=Super)]};
     key <AC07> {type="WinKeyAsFnKey",symbols[Group1]=[j,J,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<END>,clearmods=Super)]};
     key <AC08> {type="WinKeyAsFnKey",symbols[Group1]=[k,K,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DOWN>,clearmods=Super)]};
     key <AC09> {type="WinKeyAsFnKey",symbols[Group1]=[l,L,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGDN>,clearmods=Super)]};
     key <AB07> {type="WinKeyAsFnKey",symbols[Group1]=[m,M,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<INS>,clearmods=Super)]};
     key <AB09> {type="WinKeyAsFnKey",symbols[Group1]=[period,greater,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DELE>,clearmods=Super)]};
    
  6. custom.xkb を保存

  7. xkbcomp custom.xkb $DISPLAY

私はまだ「i」と「,」を使ったマウススクロールに取り組んでいます。

EDIT : 上記のソリューションは、Google Chrome および Chrome ベースのアプリ (Slack など) では適切に機能しません。

別の方法として、プログラマブル キーボードを使用する方法があります。CoolerMaster Masterkeys S キーボードにはアフターマーケットの PCBを使用しています。Easy AVRレイアウトはオンラインで入手できます(ただし、現在、左の win-key だけでは機能しません...私は右の win-key を使用しています) 。

于 2015-10-23T13:25:02.090 に答える