Project

General

Profile

機能 #592

ショートカットキーの設定を手書きできるようにする

Added by Osamu Koga over 6 years ago. Updated about 6 years ago.

Status:
実装待ち
Priority:
通常
Assignee:
-
Target version:
-
Start date:
2013-06-26
Due date:
% Done:

0%

プラグイン名:
shortcutkey

Description

ショートカットキー設定を手でちくちく設定していくのは面倒なので、手書きできると便利かも。
参考:https://twitter.com/eagletmt/statuses/349864187238944768

History

#1

Updated by toshi_a 初音 over 6 years ago

どういった部分が面倒なのか不明なためなんとも言いがたいです。このような提案がされる理由を私なりに想像してみると

  1. キーコンフィグのUIが使いづらいため、テキストエディタなどで編集したい
  2. 他の人・端末に設定をコピーしたい
  3. 複数の設定を適宜入れ替えて使用したい
  4. Emacs, vim, Awesome等のように、テキストファイルに書かれていることに何かしらアドバンテージがあると考えている

あたりかと想像しました。

一つ目については、好みの問題なのでそう思われることは仕方ないですが、解決策としてはあまりにも短絡的だと思います。現状のUIの問題点を検証して、それを解決するよう努力すべきだと考えます。この問題については考え続けていくものだと思っていて、前回は設定のUIを大幅に刷新しましたし、0.3以降では後述する「プロファイル機能」にて、Tween風とか、Emacs風等、ベースとなるプロファイルを選択して設定させていくことで、できるだけユーザが設定をしなくていいようにしたいと考えていました。これはまだ構想の段階なので、チケットにはしていません。

二つ目と三つ目についてですが、チケットにはあげてなかったと思いますが0.2.2の機能候補に、キーコンフィグプロファイルというものがありました。Operaのように、キーコンフィグのセットを作成して、設定をまるごと入れ替えることができるというものでした。同時にファイルにインポート/エクスポートする機能も考えていましたが、実装が間に合わなかったため見送りました。しかしこの要件なら、あえて人間が読める形式にする必要はないので(やるとしたらYAMLとかにするでしょうが)、今回の提案の趣旨ではないでしょう。

四つ目については、そういったアプリケーションとはなりたちが全く違うので当然のことです。あのようなアプリケーションはスクリプトを用いた機能拡張の延長でキーバインドを定義しますが、mikutterは一般的なGUIアプリケーションと同じように設定できるように、たかだかショートカットキーを設定するためだけにユーザがプラグインをいじらなくていいように、今の形になっています。
もしこのようなインターフェイスを望むなら、コンソールで「UserConfig[:shortcutkey_keybinds]」と実行して現在の設定値を取得して、適当なプラグインを作成し、UserConfigに代入し直すようにすれば、例に上げたアプリケーションのように設定できるようになるでしょう。当然、メリット、デメリットも同等になります。

UserConfig[:shortcutkey_keybinds] = {
1=>{:key=>"Control + Return", :name=>"投稿する", :slug=>:post_it},
2=>{:key=>"q", :name=>"タブを閉じる", :slug=>:close},
3=>{:key=>"f", :name=>"ふぁぼふぁぼする", :slug=>:favorite},
...
}

まずは問題を共有して、解決策を模索していきましょう。

#2

Updated by Osamu Koga over 6 years ago

色々と言葉足らずですみません。
ご推察のとおり、1と4がこのチケットを立てた主な動機です。

まず、キーコンフィグのUIについてですが、キーバインドを追加するときに
  • 右側の「追加」ボタンを押す
  • ポップアップ左側のボタンを押し、キーを割り当て、OKを押す
  • ポップアップ右側からコマンドを探し、選択する
  • ポップアップのOKボタンを押す

という操作が必要になります。
この一連の操作でマウスカーソルの移動量が大きく、連続でいくつも登録しようとするとカーソルをあっちこっち移動させないといけないので、特にラップトップのような、マウスが貧弱な環境だとやりにくいです。
(現在自分がメインで使っているmikutterはショートカットが20個くらい登録されていて、他の環境で再現しようとすると結構面倒です)
プロファイル機能をつけると、自分で変えないといけない項目が減るので、マシになる可能性は高いです。

で、この話が4つ目のアドバンテージにも繋がるのですが、UNIX系の文化として「設定はhuman-readableな形で管理する」というものがあります。
human-readableで何が嬉しいかというと、今回のように用意されたUIが使いにくいとき、使い慣れたテキストエディタで設定ファイルを開き、コピペ等を駆使して設定を書くという、(比較的)ストレスの少ない代替手段が使えるようになります。
また、一般論として、GUI等を介した設定がうまく動いていないように見えるとき、本当にちゃんと動いているのか、設定されているのかという確認や、パラメータをちょっといじって挙動の変化を見たいという時に、わざわざ設定画面を開かなくてもテキストエディタ一発で調整ができるという利点もあります。
(後者の場合、毎回起動しなおさなくてもいいように、設定のオートリロードのような仕組みの存在が前提となりますが)

とりあえず、このチケットの意図は以上の通りです。
端的に言えば、Linux全体を可能な限りキーボードのみで操作したいタイプの人間にとって、マウスを使わないと設定が困難な項目というのは割と面倒くさい、という感じです。

#3

Updated by toshi_a 初音 about 6 years ago

  • Status changed from 新規 to 実装待ち

キーコンフィグをYAML形式にインポート・エクスポートできるようにする予定です(#625)。
これは、いくつかのTwitterクライアントのそれに近い初期設定をユーザが選べるようにしたもので、設定ファイルの中にキーコンフィグをコピーできるようなものです。
設定を手で編集するメリットは、先に述べられたような文化的な経緯や現実の問題があるということを認識した上で依然として全く感じておりませんが、HashをそのままYAML.dumpするのでエディタで編集することも可能です。
このチケットの要望は、 #625 で事実上達成されると思いますが、いかがでしょうか。

Also available in: Atom PDF