銀の弾丸、はじめました

Unityとかガジェットとか

macOSのターミナルでUSBフラッシュメモリを扱う

名前の確認

$ diskutil list

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            USBFlash                *63.3 GB   disk1

ここでは,USBフラッシュメモリの IDENTIFIER が disk1 となっているのでこれがターゲット名になる

マウント場所を調べる

$ diskutil info disk1 | grep Mount

ファイルコピー

$ cp hogehoge.zip /Volumes/USBFlash

アンマウント(USBフラッシュメモリを安全に抜く為のアレ)

$ diskutil umount /dev/disk1
Vulume USBFlash on disk1 unmounted

JavaScript(jQuery)でロングタップさせる

ロングタップのイベントハンドラはググれば直ぐ見つかるが,
ロングタップをさせる方法がなかったので適当に書いた.

jQuery
jQuery使わない場合は適宜…)

gist73259b8979db7b4f12c28639af011f0d

setTimeout800ミリ秒750 とかでも良いかもしれない.

標準の機能として欲しい

unknown error: call function result missing 'value'の対処方法

chromedriverのバージョンが古いのでバージョンアップすると多分直る.

ここから最新版のディレクトリへ移動して,対応OSのzipファイルをダウンロード

https://chromedriver.storage.googleapis.com/index.html

あるいは,ここ

sites.google.com

解凍したらmacOSの場合, chromedriver 2chromedriver2に改名して
(スペースがファイル名に入ってると不便なので)
/usr/local/bin/ に設置する

~/.bash_profileexport PATH=$PATH:/usr/local/bin を追記

Terminalで source ~/.bash_profile を実行(Terminal再起動でも可)

Terminalで
chromedriver --version
と入力した結果と
chromedriver2 --version
と入力した結果が違う事を確認

また,後者コマンドでエラーやワーニングが出ていない事を確認する.
出る場合,違うバージョンを試してみる(最新過ぎるとワーニングが結構出るかも)

てか,macOSならHomebrewでchromedriver入れた方が管理が楽かも…

以下はPythonでchromedriver使う例

# coding: UTF-8
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()

#chrome_options.add_argument("--headless")
chrome_options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
#wd = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options)
# chromedriverのバージョンが古い所為で上手く動かなかったので新しいバージョンを指定してる
wd = webdriver.Chrome(executable_path="chromedriver2", chrome_options=chrome_options)

wd.set_window_size(1020,680)

wd.get('http://www.google.co.jp')

Selenium webdriverをChrome headless modeでPythonから使う

PhantomJSがSeleniumのサポートをやめてしまったため,
これからはヘッドレスブラウザはFireFoxChromeになるみたいです.

macOSGoogle Chrome Canaryだと起動場所は
/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary になります.
Aliasに登録しても良いしコードにゴリゴリパスを書いても良いです.
起動オプションで --headless を付ければTerminalからヘッドレスブラウザが立ち上がります.

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --headless https://www.google.co.jp

*Terminal等から実行する場合,スペースの前に\ を忘れないように!

# coding: UTF-8
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
wd = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options)

wd.set_window_size(1020,680)
wd.get('http://www.google.co.jp')
time.sleep(3)
wd.save_screenshot("_____screenshot.png")
wd.quit()

Calendars 5で日本の祝日が表示されない問題

iOSアプリ Calendars 5Google Calendarと連携している 日本の祝日 が表示されない.

PCブラウザでGoogle Calendarを開くと表示されているのでアプリの問題.

アプリの設定でアカウントを選択しログアウトする.
各種データは消えるが,Google Calendar上に残っているので問題ない.

再度Calendars 5の初期画面でGoogleアカウントで使用する方を選択しログイン.
自動でカレンダーデータ(日本の祝日も含む)が同期される.

Calendars 5 by Readdle

Calendars 5 by Readdle

  • Readdle Inc.
  • 仕事効率化
  • ¥840

macOS High SierraでHHKB Professional JPを使うのに苦労した話

PFU公式がドライバを更新しない所為で,macOS High SierraでHHKB Professional JP(以下HHKB JISと表記)を使うのにメチャクチャ苦労した話です

不具合状況

  • macOS High Sierra で HHKB JIS の Kanaキーが認識しない

やりたい事

  1. 無変換キー -> BSキー
  2. 変換キー -> 左Enterキー
  3. SandS
  4. かな(Kana)キー -> 英数/かな(トグル)キー(正式名:入力メニューの次のソースを選択)

これらを解決する

Karabiner-elementが使えない

日々更新されmacOS Sierra以降でも使えるようになってきているmacOS定番のキーリマップソフトだが,残念ながら限界がある. 1.と2.の問題は解決したが,3は無理だった(できた人もいる様だがJSONの設定を丸々コピペしてもダメだった.詳細は不明) macOS Sierra で キーバインドをカスタマイズ - Qiita

そして,4に至っては,そもそも「Kanaキー」のイベントが発火しない! Kanaキーを押下しても反応しないのである.

Hammerspoonが使えない

macOS Sierraの時にKarabinerが使えない事で話題になったキーリマップソフト. Luaでコードを書く.キーコンビネーションにも対応できる. SandSを試したが,動作が不安定でダメだった. Hammerspoon で未熟 SandS | 夜コーヒー

HHKB JIS本体のピン設定はちゃんとMAC MODEになっている

PFU公式が使えない

ドライバの原因を疑い何度も入れ直したが「Kanaキー」が認識しない.

macOS High Sierraがリリースされたのが 2017/09/26
しかし,未だにPFU社はmacOS High Sierraに対応していない2018/03/30現在

※ 2018/01/25 に更新した模様 詳細は下に追記

(尚,ユーザーミートアップ をやる余裕はある模様)

(みんなどうしてるんだろ?)

Happy Hacking Keyboard | Macintosh用ドライバダウンロード | PFU

神アプリ,SandS

なんと,ここでまさかのそのまんまの SandS と言うアプリを発見!
神アプリだ!3.の問題がスマートに解決
appを実行して常駐させるだけでSandSが常時使える
(しかし,時々不安定,macOSのセキュリティの関係でパスワード入力時とかに限界があるかmacOSのバグ)

GitHub - ToQoz/SandS: SandS on macOS Sierra

S/Wでの解決は不可能な領域

PFUがドライバを更新しないのでH/W,M/W(F/W含む)で決着を付ける必要がある.
取れる手段は大きくパッと思いつくだけで2つある.

  • HHKBのF/W(中身)を書き換える
  • HHKBとPCの間にパイプを噛ます

前者の方法は書き換え可能基板を某所より購入し,F/Wを焼き込む.
まさにガワだけがHHKBで中身は別モノのキーボードになる.
難易度高いしリスクが大きいしので中々手が出せない.

後者の方法だとHHKBとPCの間のパイプと言うが,そもそもパイプがHHKBのKanaキーを認識しなければ話にならない.

改めて書くが,現状でやりたい事は「Kanaキー」の認識である.
そして,そのKanaキーを,英数/かな(トグル)キーにリマップしたい.

Blutooth連携

HHKBの入力 -> Bluetooth変換 -> macOSが入力値を取得

最近多いこのパターン(商品名は敢えて伏せる)
Bluetooth変換器は常に電源を食うし,スマートではない.
が,試す価値はある.

しかし…

そもそもBlutooth変換器がHHKB JISのKanaキーを当然のように認識しなかった.
HHKBガワの問題なのか?HHKBはKanaキー信号を出していないのか?

かえうち

ここで妙案を思いつく.
HHKB側がKanaキーを出力可能な環境で かえうち を設定し,
かえうちに変換したキーデータをmacOS High Sierraに流す方法だ.

HHKB JIS「Kanaキー押したよ」
↓
かえうち「Kanaキー信号確認した!設定されたKanaキーに紐付くキーを送るね」
↓
macOS High Sierra「Kanaキーが来た!」

つまり…簡単に言うと,

かえうち に Kanaキー を押下した時に Kanaキー を出力させる

( ゚д゚)…

(゚д゚)

かえうち作者も思わず椅子から転げ落ちてしまうレベルに前例がなく非常に頭の悪い使い方だろうが物は試しだ.

それじゃ張り切っていくゼ!

macOS High SierraでHHKB JISのKanaキーを簡単に認識させる方法

必要なモノ

まず,macOS Sierra以下のOSが必要だ.
コイツはHHKB JISのKanaキーを認識するからだ.
macOS High Sierra 1台しかない場合はダウングレードするか,中古のMacを買うしか方法はない.
(Win機でも可能だと思うが試していない)

手順

macOS Sierra以下のmacOSでかえうちを噛まして
HHKB JISのKanaキーを押下した際にKanaキーを出力するよう,かえうちを設定する.

おしまい
(詳しくは,かえうちのマニュアルなどを見て欲しい,
膨大な設定が可能で最強のキーリマッパーだと認識することだろう.無論,何度でも書換(設定)可能だ.)

動作確認

手順通りに設定したかえうちは「Kanaキーを押された時にKanaキーを出力するデバイス」になっている.
こんなクソデバイスがこの世に存在しても良いのだろうか?
「This is a pen.」未満のクソ概念だ.
なにしろコイツは「Pen is a pen.」である.
(かえうち作者様には本当に申し訳ない気持ちである)

HHKB JIS <- かえうち <- macOS High Sierra

と繋ぎ…そして…そっと…確実に…Kanaキーを押す………

キー入力モードが「かな」になった!!!

とうとう,ここでKanaキーが認識したのである.

本当に凄いぞ,かえうち!
キーボード好き,タイパー,自作キーボーダー,キー入力に少しでもこだわりがある人は必ず買った方が良い!

客先で借りてるPCだからカスタマイズができないような環境でも別環境で設定されたかえうちさえあれば
どこでも同じ環境で打鍵できるのは本当にストレスフリーで素晴らしい.

ありがとう,かえうち.

kaeuchi.jp

Kanaキー -> 英数/かな(トグル)キー

「Kanaキーのリマップ方法がわからん」
(;^ω^)…ここまできて,Karabiner-elementがやはり上手く設定できない…

ここである事に気付く.
Kanaキー押下したら英数/かな(トグル)キー機能が働けば良いのだ.

再度,かえうちでKanaキーを F13キー に割り当てる(F13以降でも使ってないキーなら何でも良い)

macOS High Sierra
環境設定 - キーボード - ショートカットから「入力ソース」を選び,
「入力メニューの次のソースを選択」の項目でF13(Kanaキー)を割り当てる.

f:id:japanetfutan:20180330093304p:plain

これで,ようやく,Kanaキー(F13) -> 英数/かな(トグル)キーのリマップが完成.

さいごに

PFUさんは馬の鞍(一生使える品)をうたうならドライバをいい加減更新して欲しいです.
それとももうHHKBは馬の鞍辞めたんですかね?
ドライバ更新を半年以上放置とは如何なものなのか?
HHKBは数枚持っていますが,残念でなりません.

かえうちはいいぞ.

かえうち – すべてのキーボードが あなた専用になる


以下2018/04/11更新

なんと!
2018/01/25 10:00:50PFUは何故かmacOS High Sierraに対応したと言っています.
(対応が遅すぎるし,私の環境では相変わらずKanaキーが認識しないですが?)
Professional JPも対象のようです.

https://www.pfu.fujitsu.com/hhkeyboard/hhkb_support/faq_macos_high_sierra.html

Happy Hacking Keyboard | macOS High Sierra の対応について | PFU

Happy Hacking Keyboard | Happy Hacking Keyboard Professional JP | PFU

また,セキュリティの関係で正しく設定しないと一部のキーが使えないようです

Happy Hacking Keyboard | Happy Hacking Keyboard Professional JP | PFU

私の環境では特にアラートも上がらず,ブロック状態になっている事もありませんでした.

また,コメントでご指摘のあった通り,ドライバのページ(の文字列)が更新されていないだけ?のようです.

f:id:japanetfutan:20180411140503p:plain

Happy Hacking Keyboard | Macintosh用ドライバダウンロード | PFU

上記ページの更新日時は 2018/01/25 09:57:04 となっているので内部的には
macOS High Sierraに対応したとみて間違いないでしょう.

しかしインストーラーを見てみると「for X」「for 8 or 9」と言うディレクトリのみの配置は如何なモノか?
macOSになってXシリーズは終わったと思っていたのですがこれはXシリーズでなくバージョン10シリーズと言うことでしょうか
f:id:japanetfutan:20180411140536p:plain
8と9に対してXはわかりにくいですね

どの道,現状macOS High SierraでHHKB Pro JPをKarabiner-elementと併用するには「かえうち」しかありません

以上2018/04/11更新ここまで


iOS SafariにjQuery Mobileでtextareaに改行込みの値をセットする

普通は

$('#TEXTAREA').val('値');

で,セットできるが,改行込みになるとiOS Safari等で改行されない事がある.

\n\r\n で置換してもダメ

構成

<div id="d">
    <textarea id="ta">hogehoge</textarea>
</div>

ここの hogehogefuga(改行)fuga に変更したい.

JSでの処理
$('#d').empty();
$('#d').html('<textarea id="ta">fuga\r\nfuga</textarea>');
$('#ta').textinput();

これで改行込みでtextareaに(を)セットできる(iOS Safariでも改行されて表示される)

解説

1行目でtextareaを削除し
2行目でfuga(改行)fuga込みでtextareaを新設
3行目でjQuery Mobile用に初期化している


もっと,上手い方法があったような気がするけどググっても見つけられなかった…

過去にも同じ様な事があったのでメモしておく.