web-dev-qa-db-ja.com

Linux用のカラビナ?

背景:過去5年ほどの間、私はMacハードウェア(ほとんどの場合ハイエンドのMacBook Proラップトップ)とソフトウェアを何年も使用しています。エルゴノミクスキーボードを備えた典型的なPCハードウェアでGnu/Linuxを使用する方法。さらに重要なことに、Emacsのヘビーユーザーとして、Macへの切り替えは苦痛でした。Apple標準の短いキーボードは腹立たしくて避けられませんでした。私は [〜#〜] rsi [〜 #〜]Karabiner ツールを使用して2つの小さいが非常に重要な変更を行うことで開始:1)capslockキーを変更して、単独で押したときにメニュー(f13)キーを生成し、コントロールキーを変更別のキーで押されたときのキーコード。 2)同様の方法でリターンキーを変更し、単独で押すとリターンを取得し、別のキーで押すとコントロールキーがキーコードを変更します。最近のAppleハードウェアとソフトウェアの両方の決定に失望しました。私は今Gnu/Linux(重要な場合はUbuntu)に戻りますが、Macラップトップを使い続けています。

質問:KarabinerはOS Xのみのツールであり、すぐに利用できるGnu/Linuxに対応するものがないため、いくつかの書き込みや変更が必要になるようです。 Capslockを実現し、Karabinerが有効にするキーの二重機能動作を返すコード。 Karabinerの作者 writes xbindkeysとrbindkeysはキーの再マッピングを行いますが、一見すると、二重機能の動作を処理していないように見えます。現在、私はKarabinerの移植、またはまったく新しいツールの作成に取り組んでいます。そして間違いなく他のアプローチもあるかもしれません。だから私の質問は:この問題を解決するためにどのようなプログラミングのアドバイスを提案しますか?特に、数か月ではなく数時間、数日、または数週間で開発できるもの。

メモ

1)制御キーやコマンドキーの交換など、動作の変更を伴うさまざまなアプローチがあります。多くはさまざまな満足度で試されてきました。 Karabinerの二重機能アプローチは、私見では、キーボードのホーム列で、すべてのアプリケーションに対してコントロールキーの対称性を提供するという点で最も効果的です。

2)別のハードウェアも提案される可能性があります。私はDell、HP、Lenovo、Acerシステムを試し、さらに多くのことを調べました。 Appleトップエンド製品のパワー、サイズ、感触、スタイルの組み合わせに匹敵するものはありませんが、プレミアム価格です。たとえば、Dell Precision 7510はかさばり、トラックパッドがあります。サンドペーパーのように感じます; Lenovo X1(非常に素晴らしいシステム)にはThunderboltポートがありません;など。

3)ラップトップの要件があるため、外部キーボードも初心者ではありません。飛行機や電車の外付けキーボードは使用されていません。

18
pajato0

これは[〜#〜] tty [〜#〜]WaylandおよびX11傍受ツールを使用して、 libevdevおよびlibudevと直接。

インターセプトツールと caps2esc または interception-k2k などのプラグインをインストールします。次に、プラグインを使用するようにインターセプトを構成する必要があります。 caps2escの場合、次の/etc/udevmon.yamlファイルを使用できます。

- JOB: "intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE"
  DEVICE:
    EVENTS:
      EV_KEY: [KEY_CAPSLOCK, KEY_ESC]

次に、rootとして実行します。

Nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml

あなたはそれを確認する必要があります ログイン時に開始しますsystemdの場合、次のサービスを使用できます。

[Unit]
Description=udevmon

[Service]
ExecStart=/usr/bin/Nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml

[Install]
WantedBy=multi-user.target

X11-onlyの場合、 setxkbmap および xcape を使用できます。

まず、Caps LockCtrl修飾子として機能するように変更します。

setxkbmap -option caps:ctrl_modifier

次に、タイムアウト(デフォルトは500ミリ秒)未満押したときにMenuキーとして機能するようにCaps Lockを設定します。

xcape -e 'Caps_Lock=Menu'

xcapeはデーモンとして実行されるため、デーモンとして実行する必要があります ログイン時に開始setxkbmapは、現在のXセッションのキーボードレイアウトのみを設定します。 永続的に設定 onxinitrc xprofileまたはX構成ファイル

PS外部キーボードを使用したい人のために、オープンソース(ソフトウェアとハ​​ードウェア)Ultimate Hacking Keyboard(UHK)この機能。

3
goetzc