Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@chesscommands

障害者向けのShiftキー自動押下

More than 1 year has passed since last update.

ErgoDoxEZを使っていて、面白そうではあるが、個人的には不便な設定を見つけたので、紹介する。

Shiftキー自動押下

正確には、ErgoDoxに関係なく、QMKのFirmwareに関する設定の一つ。
結論を言えば、Aキーを一定時間押下し、キーを離したときに、大文字の"A"が入力できる。
通常は、Aキー単体押下では、小文字の"a"のみしか扱えない。
それが今回の対応で、自動でShiftキーを押下してくれるというもの。

Auto Shift

使い方が合っているのか不明だが、一応設定できたことで、合っていると判断する。
それは、
インストールディレクトリ\qmk_firmware\keyboards\ergodox_ez\keymaps\個人のキーマップディレクトリ
に、rules.mkファイルを配置する。

dir.jpg

そして、そのファイルを

rules.mk
AUTO_SHIFT_ENABLE = yes

とする。
その後、コンパイルを行い、"〜〜〜.hex"を作成後、キーボードにファームウェアを流し込めば、Shift自動押下が適応される。
個人的には迷惑この上ない設定だと思う。
解除の方法が分からないのだから・・・(rules.mkを除いた状態でコンパイルを行い、キーボードにhexファイルを流し込めば良いのだが、そういうことではない)。
当然指をくわえて眺めていたわけではない。眺めただけで出来るようになれば努力なんて要らない。

AutoShift解除

Aキーの設定と同じように、On/Offの設定をキーに割り当てておけば、無効化できる。
KC_ASOFFをどこかのキーに設定しておけば、そのキー押下で、今回設定したShift自動押下機能が無効化される。

AutoShift実行

無効化後、再度有効にする場合は、KC_ASONをどこかのキーに設定しておけば、そのキー押下で、再度有効になる。

AutoShift実行切り替え

上記は、2つのキー設定が必要になる。
トグルの場合、ワンタップで有効・無効が切り替えられれば、キーの有効活用が出来るだろう。
KC_ASTGをどこかのキーに設定しておけば、ワンタップで有効・再度ワンタップで無効化できる。
Windowsキーにワンタップでこのキーを設定しておけば、便利・・・ではないか。
私は、昨日投稿したキーをWindowsキーと組み合わせている。

AutoShift有効時間

押下時間の長さで、Shiftキー押下が有効になっているかどうかが決まる。
短い時間の押下では、そのままのキーになり、長い時間の押下では、Shiftキー押下とそのキーの組合せになる。
その時間を長くしたい場合は、KC_ASUPをどこかのキーに設定しておけば、このキーによって、キーの押下時間を長くしなければならない(待機時間が上がる)。
例えば、今まで1秒押下したら"a"が"A"になっていたのに、今回の設定で、5秒押下しなければ"a"が"A"にならないといった感じだ。
手の動きが遅い人には良いかもしれない。

また、逆にせっかちな人は、今まで1秒押下したら"a"が"A"になったのすら長いと感じる人だ。
そんな人は、KC_ASDNをどこかのキーに設定して、何回か押下しよう。
そうすれば、"a"押下を0.1秒で"A"にできる(待機時間が下がる意味のDown?)。

※今回の待機時間は例なので、信じないように。
標準の待機時間は175ミリ秒だと思う。

KC_ASRP

これ何?
指をくわえて眺めることしか出来ない人間なので、これが何か分からない。
もしかしたら現在の待機時間を出力する?
このキーコードをキーに設定後、テキストエディタがアクティブになっているときに、キー押下によって、"\n175\n"が出力された。
\n:改行

キーの種類によりAutoShift有効を制限する。

これまたC言語のファイルを触ることになるのだが、これこそどうすれば良いのか分からない。
きっとヘッダファイルに、制限したい文字種類を記載すれば良いと思う。
ヘッダファイルが重要なので、別の場所で定義しても仕方ない。
インストールディレクトリ\qmk_firmware\keyboards\ergodox_ez
config.hファイルに記載する必要がある。
このファイルであれば、どこに記載しても良いと思う。

無効化により、キーを押下し続けた場合、押下時間に比例して、その文字(キー)が打ち込まれることになる。
他のキーは、押下によって一時停止するため、肩すかしを食らうほどタイミングが合わなくなる。

NO_AUTO_SHIFT_NUMERIC

他は有効にしたいが、数字だけはShift押下を無効にしたい場合に宣言する。
宣言方法は、以下になる。

config.h
#define NO_AUTO_SHIFT_NUMERIC

NO_AUTO_SHIFT_SPECIAL

他は有効にしたいが、特殊な記号だけはShift押下を無効にしたい場合に宣言する。
宣言方法は、以下になる。

config.h
#define NO_AUTO_SHIFT_SPECIAL

特殊な記号:-_=+[{]};:'",<.>/?
スペース・ハイフン・アンダーバー・イコール・プラス・鍵括弧開(閉)・波括弧開(閉)・コロン・セミコロン・シングルクォーテーション・ダブルクォーテーション・カンマ・小なり不等号・ピリオド・ピリオド・大なり不等号・スラッシュ・ハテナ(クエッション)

対象外なのは、!や@など数字キーをShift押下で変化する記号が対象外のようだ。
ならば、円記号はどうなるのか・・・。

NO_AUTO_SHIFT_ALPHA

他は有効にしたいが、文字だけはShift押下を無効にしたい場合に宣言する。
宣言方法は、以下になる。

config.h
#define NO_AUTO_SHIFT_ALPHA

要は、a〜zを普通に使えると言うこと。
大文字にするには、わざわざ人間様の手でShiftキーを押下した上で、文字キーを押さなければならない。

メリット

時間調整が可能で、有効有無を切り替えられるのはありだと思う。
やはり、身体障害者向けだと思うが・・・。
最低でもVim使いには邪魔な存在でしかない。
今回有効にしたため、カーソルを移動させるため、kキー押下でヘルプが起動するようになった。
大文字の"K"が押下したことになり、カーソル配下の文字をヘルプで探す動きになった。
最初その挙動が理解できず、かなり焦った。
jキーもそうだ。大文字の"J"になり、2行が1行にまとめられる様は、混乱の元になる。
自分で大文字にする設定をしているはずなのに、意図せずに大文字になるため、体が固まる。
しかし、慣れれば便利かも知れない。

デメリット

わざわざキーボードで制御する意味がよく分からない。
考えられるのは、どうしても体が不自由で、ペン一本でしかキーボードを打てない状態になった場合であり、かつOS側の設定を変更出来ないときに限りそうだ。
そんな場合に、キーボードを使えるのか疑問だが。
OS側の設定というのは、WindowsOSであれば、標準でその機能が備わっているからだ。

アクセシビリティ

障害者.png
※画像真ん中の「固定キー機能を使用する」を"オン"にすれば、今回の機能と似たようなことが出来る。
あくまで"似た"動作が出来る。

以上。

1週間もせずに、ErgoDoxEZに関する投稿をしてきた。しかし、HHKBを使って執筆しているのは内緒だ。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?