Memprogram produktivitas: Cara menyembunyikan kursor saat mengetik

9

Setiap kali saya mengklik di suatu tempat untuk mengetik beberapa kode, menurut definisi di situlah kursor mouse saya berada, yang mengaburkan apa yang saya coba ketik. Seringkali, jika saya lupa untuk memindahkan kursor sebelum mulai mengetik, saya akan menemukan diri saya memindahkan tangan saya dari keyboard saya kembali ke mouse saya hanya untuk memindahkan kursor keluar dari jalan dan kemudian kembali mengetik.

Saya tahu bahwa ada opsi "sembunyikan kursor sambil mengetik" tingkat OS, tetapi itu tampaknya tidak berpengaruh pada Visual Studio.

Juga, saya tahu utilites yang dapat berjalan terus-menerus di latar belakang (Yaitu CursorHider ), tetapi, untuk alasan stabilitas, saya ragu untuk menjalankan layanan latar belakang lain di atas banyak yang sudah berjalan.

Apakah ada solusinya?

Adam Kane
sumber
Pertanyaan bagus untuk superuser.com. :-)
Franci Penov
Nah, Anda bisa menggunakan mac ...
dmckee --- mantan moderator kitten
Bagi saya, memindahkan mouse adalah refleks yang bahkan tidak saya pikirkan. (yaitu, sampai aku berhenti menggunakan editor teratur dan mulai menggunakan vim)
Hasen

Jawaban:

5

Seperti Anda, saya pernah mengalami masalah ini selamanya. Jadi saya telah menulis skrip kecil yang menyembunyikan kursor mouse tidak peduli apa pun aplikasi Windows yang Anda gunakan.

Perhatikan bahwa jika Anda menjalankan Visual Studio (atau apa pun) dalam mode terangkat, Anda harus menjalankan utilitas saya juga dalam mode terangkat.

Stefan Z Camilleri
sumber
Saya ragu apakah metode sekuat itu benar dalam semua situasi. Kursor menghilang setiap kali tombol apa pun diketik misalnya bisa sangat mengganggu permainan.
harrymc
Jika demikian, Anda dapat membongkarnya selama pertandingan ... yang mengatakan, saya percaya sebagian besar permainan menerapkan kursornya sendiri
Stefan Z Camilleri
Windows-Cursor-Hider berfungsi dengan baik sejauh ini. Saya mencari sesuatu yang sederhana seperti skrip AHK. Terima kasih @StefanZCamilleri!
russds
3

Sepertinya fungsionalitas "sembunyikan pointer saat mengetik" tergantung pada aplikasi.

Opsi ini dicentang di opsi penunjuk tetikus saya, dan berfungsi untuk aplikasi seperti notepad, wordpad, Word dan Visual Studio 6. Tetapi tidak berfungsi untuk aplikasi lain, seperti Firefox dan Visual Studio 2008.

Saya percaya bahwa aplikasi yang tidak berfungsi diprogram secara salah untuk menampilkan kursor berulang kali. Sebagai seorang programmer, saya dapat memberi tahu Anda bahwa memprogram kursor di Windows adalah kekacauan besar, di mana akhirnya satu-satunya cara untuk tetap waras adalah berulang kali menyusun kembali kursor pada peristiwa tertentu. Jelas, programmer di belakang Visual Studio 2008 telah mengambil jalan pintas yang sama.

harrymc
sumber
Ini adalah asumsi yang salah, karena jika Anda menyembunyikan kursor pada level OS, itu akan tetap tersembunyi, membatalkan ide memaksa kursor untuk ditampilkan (yang akan menimpanya) - silakan lihat jawaban saya di bawah ini
Stefan Z Camilleri
1

Saya tahu ini mungkin bukan solusi yang layak untuk Anda, tetapi saya ingin tidak menggunakan mouse sama sekali dengan memiliki ikatan kunci untuk segala sesuatu di dalam IDE. Saya dapat melompat dari panel ke panel, kesalahan ke kesalahan dll tanpa harus menyentuh mouse. Juga jika kelas Anda bagus dan kecil, Anda tidak perlu terlalu sering menggulir ke atas dan ke bawah (dan bahkan jika Anda harus menekan tombol panah saja sudah cukup).

digiarnie
sumber
0

Anda dapat menghindari "sembunyikan pointer saat mengetik" dengan menangkap EN_UPDATE di WndProc jendela induk kontrol edit, dan mengatur posisi kursor:

void CreateEdit( HWND hWnd )
{

    WNDCLASSEX wndClass;

    memset( &wndClass, 0, sizeof( wndClass ) );

    wndClass.cbSize = sizeof( wndClass );
    wndClass.style = CS_SAVEBITS;
    wndClass.lpfnWndProc = WndProcEditParent;
    wndClass.cbClsExtra = 0;
    wndClass.cbWndExtra = 0;
    wndClass.hInstance = GetModuleHandle( NULL );
    wndClass.hIcon = NULL;
    wndClass.hCursor = NULL;
    wndClass.hbrBackground = NULL;
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = L"EditParent";

    RegisterClassEx( &wndClass );

    HWND hWndEditParent = CreateWindowEx( 0
        , L"EditParent"
        , L""
        , WS_CHILD | WS_BORDER
        , 0
        , 0
        , 0
        , 0
        , hWnd
        , NULL
        , GetModuleHandle( NULL )
        , 0 );

    HWND hWndEdit = CreateWindowEx( 0
        , L"Edit"
        , L""
        , WS_CHILD
        , 0
        , 0
        , 0
        , 0
        , hWndEditParent
        , NULL
        , GetModuleHandle( NULL )
        , 0 );

    ...
}


LRESULT CALLBACK Edit::WndProcEditParent( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
    switch( iMessage )
    {
        ...
        case WM_COMMAND:
            if( HIWORD( wParam ) == EN_UPDATE )
            {
            // this is the hack to avoid "hide pointer while typing"
                POINT point;

                GetCursorPos( &point );
                SetCursorPos( point.x, point.y );
            }
            break;
        ...
    }

    return DefWindowProc( hWnd, iMessage, wParam, lParam );
}
pengguna3383940
sumber
1
Ini mungkin jawaban yang sangat bagus, tetapi saya tidak tahu bagaimana menggunakannya. Silakan tambahkan penjelasan. Jangan merespons dalam komentar; edit  jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.
G-Man Mengatakan 'Reinstate Monica'