読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

IE10 以降で表示されるようになったテキストボックスの×ボタンとパスワードの目ボタンを非表示にする CSS

IE IE11 CSS

IE10 以降、テキストボックスに×ボタンが表示されるようになった。これを押すと入力済の文章を全消しできる。どうもテキストボックスの幅が 90px 程度ないときは表示されないようだ。

同様に、パスワード入力欄にも目のマークが表示されるようになり、これを押すと入力中のパスワード文字列を見ることができる。

いずれも便利機能ではあるが、金額を入力させるために右揃えにしているテキストボックスでも×マークが右端に表示され、入力中に鬱陶しかったりする。

この×マークや目のマークは、以下のような CSS で非表示にすることができる

/* テキストボックスの×マーク */
::-ms-clear  { visibility:hidden; }

/* パスワード欄の目のマーク */
::-ms-reveal { visibility:hidden; }

両方とも :-ms- で始まる IE 専用の擬似要素としてスタイリングができる。擬似要素のコロン : は1つでも2つでも動く。1つなのは CSS2、2つなのは CSS3 の決まりみたい。

ただし、一つ注意。互換表示モードやエンタープライズモードなどで、CSS の擬似要素を解釈できない旧バージョンに落として表示しているページだと、非表示にすることができない。

大抵こういうのを消したくなるのって、互換表示モードで難を凌いでるレガシーな社内向け Web アプリだったりするのだが、手軽に適用できるこの方法は互換表示モードだとダメということだ。

他のやり方はというと、この機能レガシーな環境に慣れていた人からは相当評判が悪かったのか、いくつかのやり方が提供されるようになっていた。

  • グループポリシーで制御する方法
  • レジストリを設定する方法

詳細は以下のサイトを参照。

Excel シートにスクリーンショットを自動貼り付けするマクロ

Excel VBA Excel Gist

Excel しかない環境でテスト証跡を撮らなきゃいけない仕事をしているときなどにドウゾ。

このマクロをブックに仕込んでおき、マクロを実行すると、クリップボードの監視を始める。

PrintScreen キーでスクリーンショットを撮ると、Excel シートに整形して貼り付ける。シート上のカーソル位置も自動で動かすので、順次打鍵していくだけで OK。

Excel シートは幅 20px 程度で方眼紙にしておくとキレイに貼れるかと。あまりにも PrintScreen キーの連打が速いと追い付かないので、1・2秒は開けて打鍵するとよろし。

右 Windows キーがないキーボードでアプリケーションキーを右 Windows キーの代用にする・ただし単体で押した時はアプリケーションキーとして使う

AutoHotKey キーボードショートカット キーボード Gist

経緯

ぼくは過去の記事で何回か、「Windows で使う日本語キーボードは右 Windows キーがある109配列が好きだ」と発言してきた。

neos21.hatenablog.com

現在自宅で使っているのは、上の記事に書いたサンワサプライの109キーボードなのだが、会社にはそれまで使っていた Logicool の108配列キーボードを持っていって使っている。

neos21.hatenablog.com

この Logicool MK275 は、右 Windows キーがない日本語108キーボードで、とにかくつらい。Win + RWin + E を押す時の Windows キーは右 Windows キーを使っているので、それができないと途端に「ああもうダメだ仕事になんねぇ帰ろ…」となってしまう。

そこで、同じくキーボード右側に配置されている「アプリケーションキー」を、右 Windows キーの代用にできないかを調べてみた。

キーリマップができるフリーソフトを色々探したのだが、どうもアプリケーションキー単体をいじくる機能がないか、いじれても元のアプリケーションキーとしての機能は失うモノしかなかった。いや、そうじゃないんだ、他のキーと合わせて押した時は Windows キーの代わりをしてほしいが、単体で押した時は普通のアプリケーションキーとして動作してほしいのだ

これはぼくが Excel で「アプリケーションキー → E」と押すことで「コピーしたセルの挿入」を多用しているから、というたったそれだけの理由なのだが、こんなワガママは通らないものか…と色々考えていた。

そこでふと、以前 Atom エディタのショートカットを作る時に導入した、AutoHotKey というフリーソフトのことを思い出した。

neos21.hatenablog.com

AutoHotKey の本来の使い方は、独自のショートカットキーを作るモノだ。このソフトなら、自分でスクリプトを書いて狙ったことができるかもしれない…。

というワケで作った

というワケで、以下が自分で作った AutoHotKey スクリプト

導入するには、AutoHotKey を Windows にインストール後、上のコードをコピペして「AppsKeyToWinKey.ahk」といった名称でどこかに保存する。

AutoHotKey のダウンロードは以下から。

.ahk という拡張子が、AutoHotKey のスクリプトであることを示している。このスクリプトファイルをダブルクリックで実行すると、タスクトレイに AutoHotKey のアイコンが常駐し、特定のキー入力があったときに AutoHotKey が反応してくれる、という仕組み。

スクリプトについて

AutoHotKey スクリプトの書き方を調べながら書き始め、最後は力技で解決している感があるので、もっと良いやり方がないか気になっている。

ひとまず今回何をやったのかのほとんどは、以下の1行で説明ができる。

AppsKey & r::Send, {LWin down}r{LWin up}

「複数のキーを同時に押した時に何かする」というトリガーを宣言するには、AppsKey & r:: というように、それぞれのキー名を & で繋ぎ、コロン2つ :: で定義する。

次に、トリガーが入力されたら「複数のキーを同時に押す動作をする」と書くときは Send, というコマンドを使う。このあとに Win & r みたいに書ければよかったのだがどうも上手く行かず、結局 {LWin down}r{LWin up} と書いた。これは、

  • {LWin down} … 左 Windows キーを押し下げる
  • r … R キーを押す
  • {LWin up} … 左 Windows キーを離す

というキー入力を順に書いており、これによって Win + R というショートカットを実行している。

あとはこれを、Windows キーを使った主要なショートカットの分だけ羅列して、上記のようなコードになった

アプリケーションキーと共に押下したキーをそのまま送る、みたいなことができれば、つまり「AppsKey & 【何か】::Send, LWin & 【何か】」みたいな書き方ができれば、本当に1行で済むのだが、うまく探せなかった。何か入力するキーを保持するスクリプトとかあったっぽいけど、うまく適用できそうになくて諦めちゃった。

Win + L とか入ってないけど、この時は左 Windows キーしか使わないから書いていない。組み合わせで打つショートカットキーは両手で打つのがぼくの打ち方なのだ。だから本当は Win + EWin + RWin + D ぐらいだけでもとりあえず良かった。w

さて、最後にある

AppsKey::AppsKey

この1行だが、これは先程の AppsKey & r:: といったコンビネーションキーの宣言をしてしまうと、1つ目のキーを単体で押下した時の元々の動作がキャンセルされてしまう、という AutoHotKey の仕様があり、これを回避するために書いた。

単一キーを押下した時に、というトリガー部分は AppsKey:: で先程と同様。そのあと何のキーを押したことにするか、という部分は、単一キーにリマップする場合は直接 AppsKey などと書ける。

すなわち、アプリケーションキーを一切使う気がなければ、AppsKey::LWin とでもしてやれば、アプリケーションキーを左 Windows キーに見せかけて使えるようになるはずだ。

単一キーの元々の動作を有効にするためのスクリプトの書き方が、こういうイディオムで良いのか分からないが、こう書けばとりあえずアプリケーションキーを単体で押下した時はアプリケーションキーとして動作するようになった。


以上。今更知ったけど AutoHotKey ってけっこう可能性ありそう。

AutoHotKey スクリプトを書く際に参考にしたサイト