Vol.859 23.Dec.2022

エアーマウス MS製の無料Office (IR-6)全機能リモコン MacAfeeを騙る偽ポップアップ

A エアーマウス  〜寝転がりながら操作できるマウス

by fjk

 前報(abc858)でテレビにwindows11マシンを接続したが、テレビなので寝転がって操作をしたくなった。そこで、寝転びながらマウス操作などができる「エアーマウス」を調べて見たところ、以下のマウスが見つかった。

@トラックボール方式
  指でトラックボールを回転させてポイントを指定する。ボールを回す感覚がわかりやすく、微妙な操作も可能。しかし、マウスを傾けるとボールが正しく動作しないことがある。
  (エレコムM-RT1BRBKM-RT1DRBKなど)
Aジャイロセンサ方式
  マウス本体にジャイロセンサを内蔵し、傾きで画面に表示されたポインタを操作する。僅かな手首の動作でも反応するため、広い範囲で素早く操作できるが、ボタンを押すときに移動するなど、微妙な指示は難しい。
  (サンワサプライ400-MA134BKなど)
Bタッチバッド方式
  タブレットの様なタッチパッドを指でなぞり、ポイント指示する。パッドと画面が対応するので操作はわかりやすいが、パッドを保持する必要があるので、片手で操作するのは難しい。
  (eWIN、W-RW010など、abc741で紹介)
  ※なお、ABにはキーボードと一体になったものもある。

 上記のうち片手で操作が可能な@とAのエアーマウスを使用してみたところ、

@ エレコムの「ワイヤレスハンディトラックボール RelaconM-RT1BRBK」(4,800円)
マウスを傾けて使用してもトラックボールの操作に問題は無く、動作解像度の切替も手元で簡単に」行えるので、細かい指示も慣れれば容易に行うことが出来た。スクロール機能や、独立した戻る/進むボタンもあるのでweb利用には便利。10個のボタンはカスタマイズ可能。電源ボタンもあるので、未使用時の電池を節約できる。
 
A サンワサプライの「リモコン型マウス400-MA134BK」(2,980円)
画面上のマウスの動きが早く、最初は戸惑ったが、マウス機能のON/OFFが手元で行えるので、これを利用するとボタンを押すときにポイントの移動を回避出来る。また、動作解像度の変更も手元で出来るので、細かい指示も可能。反対面はwindowsキー付きのキーボードとなっており、webページ入力などで便利だが、ASCIIキーなので記号キーレターが合わず使いづらい(一応日本語入力も可能)。また、スクロールキーがないので、チョット不便。TVの赤外線リモコン機能もあるが、XRJ-55A80Jは無線方式なので使えなかった。


O Officeアプリ  〜WindowsでMS製の無料アプリを使う

by fjk


スタートアイコンから・・
 Microsoft-Officeは文書の作成には欠かせないソフトであるが、同類のソフトに比べて高価で、なかなか購入に踏み切れない。そこで、利用したいのが、無料で使えるMicrosoft製の「Offceアプリ」である。
 通常のMS-Office365はサブスクまたは買い切りになっているのに対し、Officeアプリはオンラインで使うアプリである。元々はスマホなどのモバイル用に開発されたものをWindowsでも使えるようにしたもので、Windows10以降のOSで利用できる。通常版に比べて、Wordで装飾機能が少ない、Excelで一部のマクロが使えない、などの機能制限があるが、閲覧や下書き、データ入力などには充分に使えそう。
 使えるアプリは、Word、Excel、PowerPoint、Outlook、OneNoteの5種類で、読込・保存はクラウド上のOneDriveに限定されるが、OneDriveが使えるパソコンやスマホなどとネット上で共有できるメリットもある。
 Offceアプリを使用するには、「ネットワーク接続」と「(無料の)マイクロソフトアカウント」が必要である。アプリはMicrosoftStore([スタート] →「Microsoft Store」と入力)から入手できる。


R 赤外線リモコン(6) 〜LCD-DTVRC4の全機能リモコン

by fjk

 前報(abc858)でIOデータリモコンを実現したが、全ての機能をカバーしていなかった。12キーのままで機能を増やすため、4つのモードを設定し、モードを切り替えることにより、48種類の機能を実現することにした。モードの切替はモードキー(RA3)を押すたびにモードが変わり、どのモードかはLEDの点滅速度でわかるようにした。電源のON/Offはモードキーの長押しで実現した。LEDの点滅にはNCOモジュールを用いた。
 ハードはabc858をベースに、NCOモジュールの追加、RA3をSw_A3標準入力、RA4を NCO1OUTに設定、12キーとの配線の変更(回路図を参照)を行った他はabc858と同じ。
 NCO(Numerically Controlled Oscillator:数値制御オシレータ)は20bit増分レジスタ(NCOxINC)に設定した値を加算機で20bitアキュームレータ(NCOxACC)にクロック毎に加え、NCOxACCがオーバーフローした時に信号を出すモジュールで、50%デユーティのパルス信号を出力するFDC(Fixed Duty Cycle)モードと、周期が可変で一定のパルス幅のパルスを出力するPF(Pulse Frequency)モードが選択できる。
 発生出来る周波数は、2回のオーバーフローで1サイクルとなるので、下記の式となる。
    
 20bit増分レジスタ(NCOxINCy)[y = U/H/L]は、最下位のNCOxINCLレジスタにデータを書き込むと、上位のU/Hレジスタと共にbufferレジスタに書き込まれる(U/Hレジスタに書き込んでも、NCOxINCLレジスタの書込が行われるまで反映されない)。なおbufferレジスタは読み書きできない。
 演算レジスタ(NCOxACCy)は読み書き可能だが、NCO動作中にアクセスすると動作が保証されないので、NCOの動作を停止してから行うこと。
 NCOのclockソースはPIC16F1842xファミリーでは NCOxCLKレジスタで11種類から選ぶことができる。今回は0.5Hzと低い周波数のパルスを得るためclockとして MFINTOSC(31.25kHz)を用い、20bitのカウンタを使うことで実現した。モードはFDCに設定。
 当初、点滅の周期は、0.5〜4Hzの4種類としたが、よく使うと思われるチャンネル選択モードは、点滅では無く、約1kHzの点灯(Duty=50%、やや暗め)になるようにした。周波数と増分レジスタへの設定値は別表のとおり。
 モードキーのチャタリング対策と長押しの判断には、タイマー割り込みを使わない方法を用いた(長押し判断時間はループ回数で決めている)。

★リモコンの全ボタンの動作が正常に動作することを確認したが、LED点滅だけで無く、ボタンの現在機能の表示が必要かも・・

【トラブル】
 A3ポート入力確認に Sw_A3_GetValue() を用いたところ、正しい入力値が得られないことがあった。そこで、PORTAbits.RA3 を使ったところ正しい現在値が得られるようになった。


NCOのブロック図


NCOの主なレジスタ

MCCピンモジュールの設定画面

NCO設定(MCC)

パルス周波数とNCO設定値

4つのリモコンモードとキー対応

LCD-DTVRC4リモコン回路図

abc856解読器で動作確認中

※ リモコンコードの一部が抜けていました(リスト中赤字部。添付ソースは修正済み)。
【プログラム】 (abc859-main.zip)
/*=== Ir Remote controler for IO-Data  (abc859) ===*/

#include "mcc_generated_files/mcc.h"

#define MARK()      __delay_us(562)
#define SPACE_1()   __delay_us(1686)
#define SPACE_0()   __delay_us(562)
#define LEADER_1()  __delay_us(8992)
#define LEADER_0()  __delay_us(4496)
#define GYAP_0()    __delay_ms(43)

#define DSM_1()	   (MD1CON0bits.MD1BIT = 1)
#define DSM_0()    (MD1CON0bits.MD1BIT = 0)

#define IO_CUSTOM   0xE880
#define SCN_DELAY() __delay_ms(30)
#define KEY_DELAY() __delay_ms(500)

uint16_t IO2[] = {0x1084,0x4084,0x7084,0x7024,  //  1, 4, 7,DG
                  0x2084,0x5084,0x8084,0xB084,  //  2, 5, 8,11
                  0x3084,0x6084,0x9084,0x0094,  //  3, 6, 9,BS 
                  0x3014,0x4024,0x0014,0x1014,  // Mn,Lf,C+,C-
                  0x2024,0x4014,0x3024,0xD084,  // Up,Cr,Dw,Rt
                  0x2014,0x5024,0xE004,0xF004,  // Sl,Rt,V+,V-
                  0xE014,0x0094,0x0000,0xA024,  // Vd,BS,  ,Ps
                  0x9024,0x0000,0x8014,0xA014,  // HD,  ,Cd,In
                  0xD014,0x7024,0x0000,0x9014,  // PC,DG,  ,So
                  0xC014,0xF024,0xE024,0xE084,  // Dp,Pr,Dc,Sb
                  0x1024,0xC024,0xD024,0x5014,  // Md,Wp,Nw,Sa
                  0x6014,0x0084,0xF084,0x7014,  // Sz,Nx,pC,Tm
                  0xD004};                      // power

uint16_t nco[] = {0xFFFF,0x0043,0x0086,0x010C}; // 1k,1,2,4Hz

uint8_t  sft;
uint16_t wsft;
uint16_t keyM;
uint8_t  keyP;
uint8_t  IrMd = 0;
 
/*---- IOdata Leader ---*/
void IO_Leader(){
    DSM_1();                // "Leader" Start
    LEADER_1();
    DSM_0();
    LEADER_0();
}

/*---- IOdata stop ---*/
void IO_Stop(){
    DSM_1();
    MARK();                 // "Stop"
    DSM_0();
}

/*--- Send strings of IRcode -----*/
void Ir_Send(uint8_t *dt,uint8_t x){
    for (int j=0;j < x;j++){
        sft = 0x01;
        for(int i=0;i<8;i++){
            DSM_1();
            MARK();
            DSM_0();
            if(dt[j] & sft){
                SPACE_1();
            }else{
                SPACE_0();
            }
            sft <<= 1;
        }
    }
}

/*-------- Send word of IRcode ------*/
void Ir_Send2(uint16_t wd){
    wsft = 0x0001;
    for(int i=0;i<16;i++){
        DSM_1();
        MARK();
        DSM_0();
        if(wd & wsft){
            SPACE_1();
        }else{
            SPACE_0();
        }
        wsft <<= 1;
    }
}

/*-------- Send IOdata2 IRcode  ----*/
void IO_DATA2(uint8_t c){
    uint16_t w = IO2[c];
    uint16_t wLo = (w & 0x00FF) | ((~w<<8) & 0xFF00);
    uint16_t wHi = ((w>>8) & 0x00FF) | (~w & 0xFF00);
    IO_Leader();                    // "Leader" Start
    Ir_Send2(IO_CUSTOM);            // Send "Custom" 
    Ir_Send2(wLo);                  // Send "Data1"
    IO_Stop();                      // stop
    GYAP_0();                       // Gyap time
    IO_Leader();                    // "Leader" Start
    Ir_Send2(IO_CUSTOM);            // Send "Custom" 
    Ir_Send2(wHi);                  // Send "Data2"
    IO_Stop();                      // stop
}

uint16_t keyScan(){
    uint8_t k;
    uint16_t ky;
    X_A0_SetLow();
    SCN_DELAY();
    ky = ~PORTC & 0x0F;
    X_A0_SetHigh();    

    Y_A1_SetLow();
    SCN_DELAY();
    k = ~PORTC & 0x0F;
    ky |= ((uint16_t)k << 4);
    Y_A1_SetHigh();    

    Z_A2_SetLow();     
    SCN_DELAY();
    k = ~PORTC & 0x0F;
    ky |= ((uint16_t)k << 8);
    Z_A2_SetHigh();    
    return ky; 
}

uint8_t bitCount(uint16_t w){
    uint16_t wsft = 1;
    uint8_t i;
    for (i = 0; i < 12; i++){
        if(w & wsft)   return (i);
        wsft <<= 1;
    }
    return 0;
}

void Power_Mode(){
    uint8_t i;
    __delay_ms(10);
    if(PORTAbits.RA3) return;
    for(i=0;i<20;i++){
        __delay_ms(100);
        if(PORTAbits.RA3){
            IrMd = (IrMd + 1) % 4;
            NCO1CON  = 0x00;                //NCO stop();
            NCO1INCH = (nco[IrMd] >> 8) & 0xFF;
            NCO1INCL =  nco[IrMd] & 0xFF;
            NCO1CON  = 0x80;                //NCO start
            return;
        }
    }
    IO_DATA2(48);                           // Power
    while(!PORTAbits.RA3) ;
}

/* =====  Main application ====== */
void main(void)
{
    SYSTEM_Initialize();

    X_A0_SetHigh();
    Y_A1_SetHigh();
    Z_A2_SetHigh();
 
    while (1){
        if(!PORTAbits.RA3) Power_Mode();
        keyM = keyScan();
        if(keyM){
            keyP = bitCount(keyM) + (IrMd * 12);  
            IO_DATA2(keyP);
            KEY_DELAY();
        }
    }
}
/* ===== End of File ===== */


★ MacAfeeを騙る偽ポップアップ通知

by fjk


MacAfee偽ポップアップの例
 Windows画面の右下に、突然、「ウィルスに感染した」などとポップアップが表示されるようになった。画面にはMacAfee Security Centerと表示され「ウィルスが検知された」とか、「アンチウィルスをオンにする」ように指示が出る。MacAfeeはインストールしていないのに不思議と思い、先に進むのをやめて、「MacAfeeポップ」でWeb検索してみると、「マカフィーを装う偽のポップアップ通知と問題の解消方法について」(MacAfee.com)が見つかった。
 記事を読んでみると、これはWidowsの正しいWebブッシュ機能を使い、怪しいサイトや詐欺サイトへ導く手口で、1秒おきくらいに警告通知が来る。この通知自身はウィルスでは無いものの、しつこく表示されるので悩んでしまう。
 そこで、この表示を止める方法は、PUSH(通知機能)をOFFにすることで、表示を止めることが出来る。具体的にwindows10では、「設定」「システム」「通知とアクション」で「通知」をOFFにするだけで、通知メッセージは出なくなった。
 何故、急にこのような通知が出るようになったかと、セキュリティを確認してみると、ソースネクストの「セキュリティソフトが無効」になっていた。
 念のため、別のパソコンでソースネクストのセキュリティのマイページにアクセスしてみると、5台登録できるデバイスが6台登録されていて、当該パソコンは6台目となり、「デバイスオーバーで無効」となっていた。当該パソコンと同名のデバイスが1台目として登録されており、このパソコンは落雷で壊れたパソコンのものだった。マザーボードのみの交換で、権利が継承されていると思っていたが、MACアドレスが異なっていた。
 ソースネクストのセキュリティソフトは有効期限が無いが、デバイスの変更が不可である。逆に6台目のパソコンとして、今まで(2年間)セキュリティがサポートされていた(アイコンのクリックでダッシュボードが表示できた)ことが不思議である。そういえば、追加購入を促すメールが時々来ていたが・・
 仕方が無いので、「セキュリティソフトの追加」で新たに1台分を注文し、送られてきたシリアル番号を登録すると、無事セキュリティソフトが復活した(アイコンのクリックでダッシュボードが表示できた)。
 セキュリティソフトで「通知」をみてみると、「フィッシング攻撃が検出されました」と通知があったので、「保護」で「パソコン全体の検査」を行うと、検査終了後、システムは「安全です」と表示された。


※ 本レポートの参考・利用は、あくまでも自己責任でお願いします。


エアーマウス MS製の無料Office (IR-6)全機能リモコン MacAfeeを騙る偽ポップアップ